From 449090143e35b682e4cf5726e116bc47e6b019bd Mon Sep 17 00:00:00 2001 From: Mis012 Date: Sun, 2 Oct 2022 23:06:56 +0200 Subject: [PATCH] refactor source tree organization, switch to meson --- .gitignore | 21 +- meson.build | 79 + .../android_content_res_AssetManager.c | 101 + src/api-impl-jni/android_graphics_Bitmap.c | 28 + src/api-impl-jni/android_graphics_Canvas.c | 68 + src/api-impl-jni/android_os_SystemClock.c | 7 + src/api-impl-jni/android_view_Window.c | 11 + .../audio/android_media_AudioTrack.c | 245 + src/api-impl-jni/defines.h | 37 + src/api-impl-jni/drawables/ninepatch.c | 386 + src/api-impl-jni/drawables/ninepatch.h | 24 + .../egl/com_google_android_gles_jni_EGLImpl.c | 69 + .../android_content_res_AssetManager.h | 367 + .../android_content_res_StringBlock.h | 55 + .../android_content_res_XmlBlock.h | 183 + .../android_graphics_Bitmap.h | 217 + .../android_graphics_BitmapFactory.h | 55 + .../android_graphics_BitmapFactory_Options.h | 21 + .../android_graphics_Canvas.h | 61 + .../android_graphics_Matrix.h | 359 + .../generated_headers/android_graphics_Path.h | 317 + .../android_graphics_Region.h | 183 + .../android_media_AudioTrack.h | 45 + .../android_opengl_GLSurfaceView.h | 179 + .../generated_headers/android_os_MemoryFile.h | 81 + .../android_os_MessageQueue.h | 53 + .../generated_headers/android_os_Process.h | 319 + .../android_os_SystemClock.h | 61 + .../generated_headers/android_os_Trace.h | 115 + .../generated_headers/android_util_Log.h | 41 + .../android_view_MotionEvent.h | 467 + .../generated_headers/android_view_View.h | 219 + .../android_view_ViewGroup.h | 179 + .../generated_headers/android_view_Window.h | 21 + .../android_widget_FrameLayout.h | 179 + .../android_widget_ImageView.h | 171 + .../android_widget_LinearLayout.h | 203 + .../android_widget_ProgressBar.h | 171 + .../android_widget_RelativeLayout.h | 179 + .../android_widget_ScrollView.h | 195 + .../android_widget_TextView.h | 195 + .../com_google_android_gles_jni_EGLImpl.h | 29 + .../com_google_android_gles_jni_GLImpl.h | 2005 + src/api-impl-jni/util.c | 75 + src/api-impl-jni/util.h | 70 + src/api-impl-jni/views/android_view_View.c | 233 + .../views/android_view_ViewGroup.c | 66 + src/api-impl-jni/widgets/WrapperWidget.c | 104 + src/api-impl-jni/widgets/WrapperWidget.h | 19 + .../widgets/android_opengl_GLSurfaceView.c | 496 + .../widgets/android_widget_FrameLayout.c | 103 + .../widgets/android_widget_ImageView.c | 24 + .../widgets/android_widget_LinearLayout.c | 67 + .../widgets/android_widget_RelativeLayout.c | 37 + .../widgets/android_widget_ScrollView.c | 60 + .../widgets/android_widget_TextView.c | 65 + src/api-impl/android/Manifest.java | 1183 + src/api-impl/android/R.java | 45677 +++++++++++++ .../android/annotation/PrivateApi.java | 31 + .../android/annotation/SdkConstant.java | 36 + .../android/annotation/SuppressLint.java | 38 + .../android/annotation/TargetApi.java | 35 + src/api-impl/android/annotation/Widget.java | 37 + src/api-impl/android/app/Activity.java | 172 + src/api-impl/android/app/ActivityManager.java | 5 + src/api-impl/android/app/AlertDialog.java | 45 + src/api-impl/android/app/Application.java | 7 + src/api-impl/android/app/Dialog.java | 19 + src/api-impl/android/app/IntentService.java | 5 + src/api-impl/android/app/KeyguardManager.java | 7 + src/api-impl/android/app/PendingIntent.java | 21 + src/api-impl/android/app/ProgressDialog.java | 4 + src/api-impl/android/app/Service.java | 5 + .../android/app/SharedPreferencesImpl.java | 624 + .../content/ActivityNotFoundException.java | 5 + .../android/content/BroadcastReceiver.java | 5 + .../android/content/ComponentName.java | 262 + .../android/content/ContentResolver.java | 5 + .../android/content/ContentValues.java | 491 + src/api-impl/android/content/Context.java | 202 + .../android/content/DialogInterface.java | 8 + src/api-impl/android/content/Intent.java | 121 + .../android/content/IntentSender.java | 6 + .../OperationApplicationException.java | 54 + .../android/content/ServiceConnection.java | 5 + .../android/content/SharedPreferences.java | 371 + .../android/content/pm/ActivityInfo.java | 587 + .../android/content/pm/ApplicationInfo.java | 656 + .../android/content/pm/ComponentInfo.java | 170 + .../android/content/pm/ConfigurationInfo.java | 116 + .../android/content/pm/FeatureInfo.java | 91 + .../content/pm/InstrumentationInfo.java | 85 + .../android/content/pm/ManifestDigest.java | 119 + .../android/content/pm/PackageInfo.java | 240 + .../android/content/pm/PackageItemInfo.java | 266 + .../android/content/pm/PackageManager.java | 3407 + .../android/content/pm/PackageParser.java | 3939 ++ .../android/content/pm/PackageUserState.java | 57 + .../android/content/pm/PathPermission.java | 43 + .../content/pm/PermissionGroupInfo.java | 103 + .../android/content/pm/PermissionInfo.java | 200 + .../android/content/pm/ProviderInfo.java | 127 + .../android/content/pm/ServiceInfo.java | 88 + .../android/content/pm/Signature.java | 190 + .../android/content/pm/VerifierInfo.java | 57 + .../content/res/AssetFileDescriptor.java | 336 + .../android/content/res/AssetManager.java | 821 + .../android/content/res/ColorStateList.java | 300 + .../content/res/CompatibilityInfo.java | 575 + .../android/content/res/Configuration.java | 1216 + .../android/content/res/Resources.java | 2423 + .../android/content/res/StringBlock.java | 492 + .../android/content/res/TypedArray.java | 742 + .../android/content/res/XmlBlock.java | 516 + .../content/res/XmlResourceParser.java | 36 + src/api-impl/android/database/Cursor.java | 476 + .../database/sqlite/DatabaseErrorHandler.java | 5 + .../android/database/sqlite/SQLiteCursor.java | 307 + .../database/sqlite/SQLiteCursorDriver.java | 56 + .../database/sqlite/SQLiteDatabase.java | 287 + .../sqlite/SQLiteDirectCursorDriver.java | 83 + .../database/sqlite/SQLiteException.java | 5 + .../database/sqlite/SQLiteOpenHelper.java | 121 + .../database/sqlite/SQLiteProgram.java | 220 + .../android/database/sqlite/SQLiteQuery.java | 86 + src/api-impl/android/graphics/Bitmap.java | 1617 + .../android/graphics/BitmapFactory.java | 677 + src/api-impl/android/graphics/Canvas.java | 372 + src/api-impl/android/graphics/Matrix.java | 784 + src/api-impl/android/graphics/Paint.java | 58 + src/api-impl/android/graphics/Path.java | 707 + src/api-impl/android/graphics/Rect.java | 515 + src/api-impl/android/graphics/RectF.java | 513 + src/api-impl/android/graphics/Region.java | 342 + src/api-impl/android/graphics/Typeface.java | 11 + src/api-impl/android/hardware/Sensor.java | 420 + .../android/hardware/SensorEventListener.java | 5 + .../android/hardware/SensorManager.java | 7 + src/api-impl/android/location/Criteria.java | 15 + .../android/location/LocationListener.java | 5 + src/api-impl/android/media/AudioManager.java | 10 + src/api-impl/android/media/AudioTrack.java | 78 + src/api-impl/android/media/MediaPlayer.java | 20 + src/api-impl/android/media/SoundPool.java | 12 + .../android/net/ConnectivityManager.java | 11 + src/api-impl/android/net/NetworkInfo.java | 20 + src/api-impl/android/net/Uri.java | 5 + src/api-impl/android/opengl/EGLConfig.java | 37 + .../android/opengl/EGLObjectHandle.java | 47 + .../android/opengl/GLSurfaceView.java | 177 + src/api-impl/android/os/AsyncTask.java | 668 + src/api-impl/android/os/Binder.java | 5 + src/api-impl/android/os/Build.java | 506 + src/api-impl/android/os/Bundle.java | 1498 + .../android/os/CancellationSignal.java | 7 + src/api-impl/android/os/Environment.java | 768 + src/api-impl/android/os/Handler.java | 796 + src/api-impl/android/os/HandlerThread.java | 19 + src/api-impl/android/os/IBinder.java | 5 + src/api-impl/android/os/IMessenger.java | 25 + src/api-impl/android/os/Looper.java | 319 + src/api-impl/android/os/MemoryFile.java | 345 + src/api-impl/android/os/Message.java | 479 + src/api-impl/android/os/MessageQueue.java | 559 + src/api-impl/android/os/Messenger.java | 86 + .../android/os/ParcelFileDescriptor.java | 976 + src/api-impl/android/os/Parcelable.java | 5 + src/api-impl/android/os/PatternMatcher.java | 176 + src/api-impl/android/os/Process.java | 784 + src/api-impl/android/os/RemoteException.java | 31 + src/api-impl/android/os/ResultReceiver.java | 6 + src/api-impl/android/os/SystemClock.java | 188 + src/api-impl/android/os/Trace.java | 286 + src/api-impl/android/os/UserHandle.java | 207 + .../android/preference/PreferenceManager.java | 11 + src/api-impl/android/provider/Settings.java | 40 + .../support/v4/app/FragmentActivity.java | 34 + .../android/telephony/TelephonyManager.java | 7 + .../android/text/ClipboardManager.java | 5 + src/api-impl/android/text/GetChars.java | 33 + src/api-impl/android/text/Html.java | 7 + src/api-impl/android/text/InputFilter.java | 12 + src/api-impl/android/text/NoCopySpan.java | 31 + src/api-impl/android/text/SpanWatcher.java | 42 + src/api-impl/android/text/Spannable.java | 70 + .../android/text/SpannableString.java | 56 + .../android/text/SpannableStringInternal.java | 421 + src/api-impl/android/text/Spanned.java | 198 + src/api-impl/android/text/SpannedString.java | 48 + src/api-impl/android/text/TextPaint.java | 82 + src/api-impl/android/text/TextUtils.java | 64 + src/api-impl/android/text/TextWatcher.java | 5 + src/api-impl/android/text/util/Linkify.java | 9 + .../android/util/AndroidException.java | 38 + .../android/util/AndroidRuntimeException.java | 38 + src/api-impl/android/util/ArrayMap.java | 829 + src/api-impl/android/util/AttributeSet.java | 338 + src/api-impl/android/util/Base64.java | 741 + .../android/util/Base64DataException.java | 30 + .../android/util/Base64InputStream.java | 153 + .../android/util/Base64OutputStream.java | 155 + .../android/util/ContainerHelpers.java | 63 + .../util/DecompiledXmlResourceParser.java | 127 + src/api-impl/android/util/DisplayMetrics.java | 299 + .../android/util/LayoutDirection.java | 48 + src/api-impl/android/util/Log.java | 359 + .../android/util/LongSparseArray.java | 408 + src/api-impl/android/util/MapCollections.java | 559 + src/api-impl/android/util/PrefixPrinter.java | 50 + src/api-impl/android/util/Printer.java | 31 + src/api-impl/android/util/Slog.java | 99 + src/api-impl/android/util/SparseArray.java | 423 + src/api-impl/android/util/SparseIntArray.java | 292 + src/api-impl/android/util/StateSet.java | 180 + src/api-impl/android/util/TypedValue.java | 494 + src/api-impl/android/util/Xml.java | 180 + .../android/util/XmlPullAttributes.java | 152 + src/api-impl/android/view/Display.java | 20 + src/api-impl/android/view/Gravity.java | 443 + src/api-impl/android/view/InputEvent.java | 216 + src/api-impl/android/view/LayoutInflater.java | 226 + src/api-impl/android/view/Menu.java | 5 + src/api-impl/android/view/MotionEvent.java | 3526 + src/api-impl/android/view/Surface.java | 5 + src/api-impl/android/view/SurfaceHolder.java | 284 + src/api-impl/android/view/SurfaceView.java | 192 + src/api-impl/android/view/View.java | 839 + src/api-impl/android/view/ViewGroup.java | 102 + src/api-impl/android/view/ViewManager.java | 37 + src/api-impl/android/view/ViewParent.java | 7 + .../android/view/ViewTreeObserver.java | 1030 + src/api-impl/android/view/Window.java | 32 + src/api-impl/android/view/WindowManager.java | 8 + .../android/view/WindowManagerImpl.java | 10 + src/api-impl/android/webkit/WebSettings.java | 7 + src/api-impl/android/webkit/WebView.java | 13 + src/api-impl/android/widget/EditText.java | 10 + src/api-impl/android/widget/FrameLayout.java | 49 + src/api-impl/android/widget/ImageView.java | 87 + src/api-impl/android/widget/LinearLayout.java | 48 + .../android/widget/MediaController.java | 6 + src/api-impl/android/widget/ProgressBar.java | 25 + .../android/widget/RelativeLayout.java | 44 + src/api-impl/android/widget/ScrollView.java | 35 + src/api-impl/android/widget/TextView.java | 79 + .../com/android/internal/Manifest.java | 1183 + src/api-impl/com/android/internal/R.java | 53534 ++++++++++++++++ .../com/android/internal/util/ArrayUtils.java | 264 + .../internal/util/FastXmlSerializer.java | 398 + .../com/android/internal/util/XmlUtils.java | 966 + .../com/google/android/gles_jni/EGLImpl.java | 64 + .../com/google/android/gles_jni/GLImpl.java | 2215 + .../vending/licensing/LicenseChecker.java | 15 + .../licensing/LicenseCheckerCallback.java | 68 + .../android/vending/licensing/Policy.java | 5 + .../javax/microedition/khronos/egl/EGL.java | 21 + .../javax/microedition/khronos/egl/EGL10.java | 124 + .../javax/microedition/khronos/egl/EGL11.java | 21 + .../microedition/khronos/egl/EGLConfig.java | 9 + .../microedition/khronos/egl/EGLContext.java | 23 + .../microedition/khronos/egl/EGLDisplay.java | 9 + .../microedition/khronos/egl/EGLSurface.java | 21 + .../microedition/khronos/opengles/GL.java | 22 + .../microedition/khronos/opengles/GL10.java | 972 + .../khronos/opengles/GL10Ext.java | 36 + .../microedition/khronos/opengles/GL11.java | 550 + .../khronos/opengles/GL11Ext.java | 153 + .../khronos/opengles/GL11ExtensionPack.java | 434 + .../khronos/opengles/package.html | 8 + src/api-impl/meson.build | 222 + src/arsc_parser/README.md | 7 + .../ArscResourcesParser.java | 86 + .../hq/arscresourcesparser/arsc/ArscFile.java | 104 + .../arsc/BaseTypeChunk.java | 23 + .../arscresourcesparser/arsc/ChunkHeader.java | 29 + .../arsc/ResFileHeaderChunk.java | 28 + .../arsc/ResStringPoolChunk.java | 134 + .../arsc/ResStringPoolRef.java | 24 + .../arsc/ResTableConfig.java | 127 + .../arsc/ResTableEntry.java | 51 + .../arscresourcesparser/arsc/ResTableMap.java | 43 + .../arsc/ResTableMapEntry.java | 72 + .../arsc/ResTablePackageChunk.java | 174 + .../arscresourcesparser/arsc/ResTableRef.java | 29 + .../arsc/ResTableTypeInfoChunk.java | 180 + .../arsc/ResTableTypeSpecChunk.java | 62 + .../arsc/ResTableValueEntry.java | 40 + .../hq/arscresourcesparser/arsc/ResValue.java | 212 + .../hq/arscresourcesparser/common/Utils.java | 135 + .../stream/PositionInputStream.java | 80 + src/arsc_parser/meson.build | 26 + src/config.h.in | 6 + src/libandroid/asset_manager.c | 99 + src/libandroid/misc.c | 6 + src/{ => main-executable}/main.c | 129 +- src/main-executable/r_debug.c | 36 + 296 files changed, 171615 insertions(+), 69 deletions(-) create mode 100644 meson.build create mode 100644 src/api-impl-jni/android_content_res_AssetManager.c create mode 100644 src/api-impl-jni/android_graphics_Bitmap.c create mode 100644 src/api-impl-jni/android_graphics_Canvas.c create mode 100644 src/api-impl-jni/android_os_SystemClock.c create mode 100644 src/api-impl-jni/android_view_Window.c create mode 100644 src/api-impl-jni/audio/android_media_AudioTrack.c create mode 100644 src/api-impl-jni/defines.h create mode 100644 src/api-impl-jni/drawables/ninepatch.c create mode 100644 src/api-impl-jni/drawables/ninepatch.h create mode 100644 src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c create mode 100644 src/api-impl-jni/generated_headers/android_content_res_AssetManager.h create mode 100644 src/api-impl-jni/generated_headers/android_content_res_StringBlock.h create mode 100644 src/api-impl-jni/generated_headers/android_content_res_XmlBlock.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_Bitmap.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_BitmapFactory.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_BitmapFactory_Options.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_Canvas.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_Matrix.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_Path.h create mode 100644 src/api-impl-jni/generated_headers/android_graphics_Region.h create mode 100644 src/api-impl-jni/generated_headers/android_media_AudioTrack.h create mode 100644 src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h create mode 100644 src/api-impl-jni/generated_headers/android_os_MemoryFile.h create mode 100644 src/api-impl-jni/generated_headers/android_os_MessageQueue.h create mode 100644 src/api-impl-jni/generated_headers/android_os_Process.h create mode 100644 src/api-impl-jni/generated_headers/android_os_SystemClock.h create mode 100644 src/api-impl-jni/generated_headers/android_os_Trace.h create mode 100644 src/api-impl-jni/generated_headers/android_util_Log.h create mode 100644 src/api-impl-jni/generated_headers/android_view_MotionEvent.h create mode 100644 src/api-impl-jni/generated_headers/android_view_View.h create mode 100644 src/api-impl-jni/generated_headers/android_view_ViewGroup.h create mode 100644 src/api-impl-jni/generated_headers/android_view_Window.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_FrameLayout.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_ImageView.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_LinearLayout.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_ProgressBar.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_ScrollView.h create mode 100644 src/api-impl-jni/generated_headers/android_widget_TextView.h create mode 100644 src/api-impl-jni/generated_headers/com_google_android_gles_jni_EGLImpl.h create mode 100644 src/api-impl-jni/generated_headers/com_google_android_gles_jni_GLImpl.h create mode 100644 src/api-impl-jni/util.c create mode 100644 src/api-impl-jni/util.h create mode 100644 src/api-impl-jni/views/android_view_View.c create mode 100644 src/api-impl-jni/views/android_view_ViewGroup.c create mode 100644 src/api-impl-jni/widgets/WrapperWidget.c create mode 100644 src/api-impl-jni/widgets/WrapperWidget.h create mode 100644 src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c create mode 100644 src/api-impl-jni/widgets/android_widget_FrameLayout.c create mode 100644 src/api-impl-jni/widgets/android_widget_ImageView.c create mode 100644 src/api-impl-jni/widgets/android_widget_LinearLayout.c create mode 100644 src/api-impl-jni/widgets/android_widget_RelativeLayout.c create mode 100644 src/api-impl-jni/widgets/android_widget_ScrollView.c create mode 100644 src/api-impl-jni/widgets/android_widget_TextView.c create mode 100644 src/api-impl/android/Manifest.java create mode 100644 src/api-impl/android/R.java create mode 100644 src/api-impl/android/annotation/PrivateApi.java create mode 100644 src/api-impl/android/annotation/SdkConstant.java create mode 100644 src/api-impl/android/annotation/SuppressLint.java create mode 100644 src/api-impl/android/annotation/TargetApi.java create mode 100644 src/api-impl/android/annotation/Widget.java create mode 100644 src/api-impl/android/app/Activity.java create mode 100644 src/api-impl/android/app/ActivityManager.java create mode 100644 src/api-impl/android/app/AlertDialog.java create mode 100644 src/api-impl/android/app/Application.java create mode 100644 src/api-impl/android/app/Dialog.java create mode 100644 src/api-impl/android/app/IntentService.java create mode 100644 src/api-impl/android/app/KeyguardManager.java create mode 100644 src/api-impl/android/app/PendingIntent.java create mode 100644 src/api-impl/android/app/ProgressDialog.java create mode 100644 src/api-impl/android/app/Service.java create mode 100644 src/api-impl/android/app/SharedPreferencesImpl.java create mode 100644 src/api-impl/android/content/ActivityNotFoundException.java create mode 100644 src/api-impl/android/content/BroadcastReceiver.java create mode 100644 src/api-impl/android/content/ComponentName.java create mode 100644 src/api-impl/android/content/ContentResolver.java create mode 100644 src/api-impl/android/content/ContentValues.java create mode 100644 src/api-impl/android/content/Context.java create mode 100644 src/api-impl/android/content/DialogInterface.java create mode 100644 src/api-impl/android/content/Intent.java create mode 100644 src/api-impl/android/content/IntentSender.java create mode 100644 src/api-impl/android/content/OperationApplicationException.java create mode 100644 src/api-impl/android/content/ServiceConnection.java create mode 100644 src/api-impl/android/content/SharedPreferences.java create mode 100644 src/api-impl/android/content/pm/ActivityInfo.java create mode 100644 src/api-impl/android/content/pm/ApplicationInfo.java create mode 100644 src/api-impl/android/content/pm/ComponentInfo.java create mode 100644 src/api-impl/android/content/pm/ConfigurationInfo.java create mode 100644 src/api-impl/android/content/pm/FeatureInfo.java create mode 100644 src/api-impl/android/content/pm/InstrumentationInfo.java create mode 100644 src/api-impl/android/content/pm/ManifestDigest.java create mode 100644 src/api-impl/android/content/pm/PackageInfo.java create mode 100644 src/api-impl/android/content/pm/PackageItemInfo.java create mode 100644 src/api-impl/android/content/pm/PackageManager.java create mode 100644 src/api-impl/android/content/pm/PackageParser.java create mode 100644 src/api-impl/android/content/pm/PackageUserState.java create mode 100644 src/api-impl/android/content/pm/PathPermission.java create mode 100644 src/api-impl/android/content/pm/PermissionGroupInfo.java create mode 100644 src/api-impl/android/content/pm/PermissionInfo.java create mode 100644 src/api-impl/android/content/pm/ProviderInfo.java create mode 100644 src/api-impl/android/content/pm/ServiceInfo.java create mode 100644 src/api-impl/android/content/pm/Signature.java create mode 100644 src/api-impl/android/content/pm/VerifierInfo.java create mode 100644 src/api-impl/android/content/res/AssetFileDescriptor.java create mode 100644 src/api-impl/android/content/res/AssetManager.java create mode 100644 src/api-impl/android/content/res/ColorStateList.java create mode 100644 src/api-impl/android/content/res/CompatibilityInfo.java create mode 100644 src/api-impl/android/content/res/Configuration.java create mode 100644 src/api-impl/android/content/res/Resources.java create mode 100644 src/api-impl/android/content/res/StringBlock.java create mode 100644 src/api-impl/android/content/res/TypedArray.java create mode 100644 src/api-impl/android/content/res/XmlBlock.java create mode 100644 src/api-impl/android/content/res/XmlResourceParser.java create mode 100644 src/api-impl/android/database/Cursor.java create mode 100644 src/api-impl/android/database/sqlite/DatabaseErrorHandler.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteCursor.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteCursorDriver.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteDatabase.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteDirectCursorDriver.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteException.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteOpenHelper.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteProgram.java create mode 100644 src/api-impl/android/database/sqlite/SQLiteQuery.java create mode 100644 src/api-impl/android/graphics/Bitmap.java create mode 100644 src/api-impl/android/graphics/BitmapFactory.java create mode 100644 src/api-impl/android/graphics/Canvas.java create mode 100644 src/api-impl/android/graphics/Matrix.java create mode 100644 src/api-impl/android/graphics/Paint.java create mode 100644 src/api-impl/android/graphics/Path.java create mode 100644 src/api-impl/android/graphics/Rect.java create mode 100644 src/api-impl/android/graphics/RectF.java create mode 100644 src/api-impl/android/graphics/Region.java create mode 100644 src/api-impl/android/graphics/Typeface.java create mode 100644 src/api-impl/android/hardware/Sensor.java create mode 100644 src/api-impl/android/hardware/SensorEventListener.java create mode 100644 src/api-impl/android/hardware/SensorManager.java create mode 100644 src/api-impl/android/location/Criteria.java create mode 100644 src/api-impl/android/location/LocationListener.java create mode 100644 src/api-impl/android/media/AudioManager.java create mode 100644 src/api-impl/android/media/AudioTrack.java create mode 100644 src/api-impl/android/media/MediaPlayer.java create mode 100644 src/api-impl/android/media/SoundPool.java create mode 100644 src/api-impl/android/net/ConnectivityManager.java create mode 100644 src/api-impl/android/net/NetworkInfo.java create mode 100644 src/api-impl/android/net/Uri.java create mode 100644 src/api-impl/android/opengl/EGLConfig.java create mode 100644 src/api-impl/android/opengl/EGLObjectHandle.java create mode 100644 src/api-impl/android/opengl/GLSurfaceView.java create mode 100644 src/api-impl/android/os/AsyncTask.java create mode 100644 src/api-impl/android/os/Binder.java create mode 100644 src/api-impl/android/os/Build.java create mode 100644 src/api-impl/android/os/Bundle.java create mode 100644 src/api-impl/android/os/CancellationSignal.java create mode 100644 src/api-impl/android/os/Environment.java create mode 100644 src/api-impl/android/os/Handler.java create mode 100644 src/api-impl/android/os/HandlerThread.java create mode 100644 src/api-impl/android/os/IBinder.java create mode 100644 src/api-impl/android/os/IMessenger.java create mode 100644 src/api-impl/android/os/Looper.java create mode 100644 src/api-impl/android/os/MemoryFile.java create mode 100644 src/api-impl/android/os/Message.java create mode 100644 src/api-impl/android/os/MessageQueue.java create mode 100644 src/api-impl/android/os/Messenger.java create mode 100644 src/api-impl/android/os/ParcelFileDescriptor.java create mode 100644 src/api-impl/android/os/Parcelable.java create mode 100644 src/api-impl/android/os/PatternMatcher.java create mode 100644 src/api-impl/android/os/Process.java create mode 100644 src/api-impl/android/os/RemoteException.java create mode 100644 src/api-impl/android/os/ResultReceiver.java create mode 100644 src/api-impl/android/os/SystemClock.java create mode 100644 src/api-impl/android/os/Trace.java create mode 100644 src/api-impl/android/os/UserHandle.java create mode 100644 src/api-impl/android/preference/PreferenceManager.java create mode 100644 src/api-impl/android/provider/Settings.java create mode 100644 src/api-impl/android/support/v4/app/FragmentActivity.java create mode 100644 src/api-impl/android/telephony/TelephonyManager.java create mode 100644 src/api-impl/android/text/ClipboardManager.java create mode 100644 src/api-impl/android/text/GetChars.java create mode 100644 src/api-impl/android/text/Html.java create mode 100644 src/api-impl/android/text/InputFilter.java create mode 100644 src/api-impl/android/text/NoCopySpan.java create mode 100644 src/api-impl/android/text/SpanWatcher.java create mode 100644 src/api-impl/android/text/Spannable.java create mode 100644 src/api-impl/android/text/SpannableString.java create mode 100644 src/api-impl/android/text/SpannableStringInternal.java create mode 100644 src/api-impl/android/text/Spanned.java create mode 100644 src/api-impl/android/text/SpannedString.java create mode 100644 src/api-impl/android/text/TextPaint.java create mode 100644 src/api-impl/android/text/TextUtils.java create mode 100644 src/api-impl/android/text/TextWatcher.java create mode 100644 src/api-impl/android/text/util/Linkify.java create mode 100644 src/api-impl/android/util/AndroidException.java create mode 100644 src/api-impl/android/util/AndroidRuntimeException.java create mode 100644 src/api-impl/android/util/ArrayMap.java create mode 100644 src/api-impl/android/util/AttributeSet.java create mode 100644 src/api-impl/android/util/Base64.java create mode 100644 src/api-impl/android/util/Base64DataException.java create mode 100644 src/api-impl/android/util/Base64InputStream.java create mode 100644 src/api-impl/android/util/Base64OutputStream.java create mode 100644 src/api-impl/android/util/ContainerHelpers.java create mode 100644 src/api-impl/android/util/DecompiledXmlResourceParser.java create mode 100644 src/api-impl/android/util/DisplayMetrics.java create mode 100644 src/api-impl/android/util/LayoutDirection.java create mode 100644 src/api-impl/android/util/Log.java create mode 100644 src/api-impl/android/util/LongSparseArray.java create mode 100644 src/api-impl/android/util/MapCollections.java create mode 100644 src/api-impl/android/util/PrefixPrinter.java create mode 100644 src/api-impl/android/util/Printer.java create mode 100644 src/api-impl/android/util/Slog.java create mode 100644 src/api-impl/android/util/SparseArray.java create mode 100644 src/api-impl/android/util/SparseIntArray.java create mode 100644 src/api-impl/android/util/StateSet.java create mode 100644 src/api-impl/android/util/TypedValue.java create mode 100644 src/api-impl/android/util/Xml.java create mode 100644 src/api-impl/android/util/XmlPullAttributes.java create mode 100644 src/api-impl/android/view/Display.java create mode 100644 src/api-impl/android/view/Gravity.java create mode 100644 src/api-impl/android/view/InputEvent.java create mode 100644 src/api-impl/android/view/LayoutInflater.java create mode 100644 src/api-impl/android/view/Menu.java create mode 100644 src/api-impl/android/view/MotionEvent.java create mode 100644 src/api-impl/android/view/Surface.java create mode 100644 src/api-impl/android/view/SurfaceHolder.java create mode 100644 src/api-impl/android/view/SurfaceView.java create mode 100644 src/api-impl/android/view/View.java create mode 100644 src/api-impl/android/view/ViewGroup.java create mode 100644 src/api-impl/android/view/ViewManager.java create mode 100644 src/api-impl/android/view/ViewParent.java create mode 100644 src/api-impl/android/view/ViewTreeObserver.java create mode 100644 src/api-impl/android/view/Window.java create mode 100644 src/api-impl/android/view/WindowManager.java create mode 100644 src/api-impl/android/view/WindowManagerImpl.java create mode 100644 src/api-impl/android/webkit/WebSettings.java create mode 100644 src/api-impl/android/webkit/WebView.java create mode 100644 src/api-impl/android/widget/EditText.java create mode 100644 src/api-impl/android/widget/FrameLayout.java create mode 100644 src/api-impl/android/widget/ImageView.java create mode 100644 src/api-impl/android/widget/LinearLayout.java create mode 100644 src/api-impl/android/widget/MediaController.java create mode 100644 src/api-impl/android/widget/ProgressBar.java create mode 100644 src/api-impl/android/widget/RelativeLayout.java create mode 100644 src/api-impl/android/widget/ScrollView.java create mode 100644 src/api-impl/android/widget/TextView.java create mode 100644 src/api-impl/com/android/internal/Manifest.java create mode 100644 src/api-impl/com/android/internal/R.java create mode 100644 src/api-impl/com/android/internal/util/ArrayUtils.java create mode 100644 src/api-impl/com/android/internal/util/FastXmlSerializer.java create mode 100644 src/api-impl/com/android/internal/util/XmlUtils.java create mode 100644 src/api-impl/com/google/android/gles_jni/EGLImpl.java create mode 100644 src/api-impl/com/google/android/gles_jni/GLImpl.java create mode 100644 src/api-impl/com/google/android/vending/licensing/LicenseChecker.java create mode 100644 src/api-impl/com/google/android/vending/licensing/LicenseCheckerCallback.java create mode 100644 src/api-impl/com/google/android/vending/licensing/Policy.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGL.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGL10.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGL11.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGLConfig.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGLContext.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGLDisplay.java create mode 100644 src/api-impl/javax/microedition/khronos/egl/EGLSurface.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL10.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL10Ext.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL11.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL11Ext.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/GL11ExtensionPack.java create mode 100644 src/api-impl/javax/microedition/khronos/opengles/package.html create mode 100644 src/api-impl/meson.build create mode 100644 src/arsc_parser/README.md create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/ArscResourcesParser.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ArscFile.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/BaseTypeChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ChunkHeader.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResFileHeaderChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolRef.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableConfig.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableEntry.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMap.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMapEntry.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTablePackageChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableRef.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeInfoChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeSpecChunk.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableValueEntry.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/arsc/ResValue.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/common/Utils.java create mode 100644 src/arsc_parser/com/hq/arscresourcesparser/stream/PositionInputStream.java create mode 100644 src/arsc_parser/meson.build create mode 100644 src/config.h.in create mode 100644 src/libandroid/asset_manager.c create mode 100644 src/libandroid/misc.c rename src/{ => main-executable}/main.c (71%) create mode 100644 src/main-executable/r_debug.c diff --git a/.gitignore b/.gitignore index ec4f4ef6..f30d2597 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,3 @@ -# populated by apps -data/files/* -data/shared_prefs/* - -# manually extracted from apk -data/assets/* -data/lib/* - -# manually extracted from apk and possibly converted -data/res/* - -# taken from android (apps may dislike non-bionic-linked libstdc++) -!data/lib/libstdc++.so - # build artifacts -libnative/* -*.class -*.dex - -/main +build/ +builddir/ diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..30fc78a0 --- /dev/null +++ b/meson.build @@ -0,0 +1,79 @@ +project('android_translation_layer', ['c', 'java'], default_options: ['b_lundef=false']) + +incdir_dep = declare_dependency(include_directories: '.') +add_project_dependencies(incdir_dep, language: 'c') + +cc = meson.get_compiler('c') +dir_base = meson.current_source_dir() +builddir_base = meson.current_build_dir() +libart_dep = [ + cc.find_library('art', dirs : [join_paths(dir_base, 'dalvik/linux-x86/lib64/')]), + cc.find_library('nativebridge', dirs : [join_paths(dir_base, 'dalvik/linux-x86/lib64/')]) +] +libdl_bio_dep = [ + cc.find_library('dl_bio', dirs : [join_paths(dir_base, 'dalvik/linux-x86/lib64/')]) +] + +libtranslationlayer_so = shared_library('translation_layer_main', [ + 'src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c', + 'src/api-impl-jni/android_os_SystemClock.c', + 'src/api-impl-jni/android_view_Window.c', + 'src/api-impl-jni/util.c', + 'src/api-impl-jni/android_graphics_Canvas.c', + 'src/api-impl-jni/drawables/ninepatch.c', + 'src/api-impl-jni/android_content_res_AssetManager.c', + 'src/api-impl-jni/audio/android_media_AudioTrack.c', + 'src/api-impl-jni/widgets/android_widget_RelativeLayout.c', + 'src/api-impl-jni/widgets/android_widget_ScrollView.c', + 'src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c', + 'src/api-impl-jni/widgets/android_widget_ImageView.c', + 'src/api-impl-jni/widgets/android_widget_FrameLayout.c', + 'src/api-impl-jni/widgets/WrapperWidget.c', + 'src/api-impl-jni/widgets/android_widget_TextView.c', + 'src/api-impl-jni/widgets/android_widget_LinearLayout.c', + 'src/api-impl-jni/views/android_view_View.c', + 'src/api-impl-jni/views/android_view_ViewGroup.c', + 'src/api-impl-jni/android_graphics_Bitmap.c' ], + dependencies: [ + dependency('gtk4'), dependency('gl'), dependency('egl'), dependency('jni') + ], + link_args: [ + '-lasound' + ]) + +conf_data = configuration_data() +conf_data.set('install_libdir', get_option('prefix') / get_option('libdir')) +configure_file(input : 'src/config.h.in', + output : 'config.h', + configuration : conf_data) + +configure_file(input : 'launch_activity.sh.in', + output : 'launch_activity.sh', + configuration : conf_data) + +executable('main', [ + 'src/main-executable/main.c', + 'src/main-executable/r_debug.c' + ], + dependencies: [ + dependency('gtk4'), dependency('jni'), declare_dependency(link_with: libtranslationlayer_so), libart_dep, dependency('dl'), libdl_bio_dep + ]) + +# libandroid +shared_library('android', [ + 'src/libandroid/misc.c', + 'src/libandroid/asset_manager.c' + ]) + +# hax_arsc_parser.dex (named as classes2.dex so it works inside a jar) +subdir('src/arsc_parser') +hax_arsc_parser_dex = custom_target('hax_arsc_parser.dex', build_by_default: true, input: [hax_arsc_parser_jar], output: ['classes2.dex'], command: [join_paths(dir_base, 'dalvik/linux-x86/bin/dx'),'--verbose', '--dex', '--output='+join_paths(builddir_base, 'classes2.dex'), hax_arsc_parser_jar.full_path()]) + +# hax.dex (named as classes.dex so it works inside a jar) +subdir('src/api-impl') +hax_dex = custom_target('hax.dex', build_by_default: true, input: [hax_jar], output: ['classes.dex'], command: [join_paths(dir_base, 'dalvik/linux-x86/bin/dx'),'--verbose', '--dex', '--output='+join_paths(builddir_base, 'classes.dex'), hax_jar.full_path()]) + +# api-impl.jar +custom_target('api-impl.jar', build_by_default: true, input: [hax_dex, hax_arsc_parser_dex], output: ['api-impl.jar'], command: ['zip', '-j', join_paths(builddir_base, 'api-impl.jar'), hax_dex.full_path(), hax_arsc_parser_dex.full_path()]) + + diff --git a/src/api-impl-jni/android_content_res_AssetManager.c b/src/api-impl-jni/android_content_res_AssetManager.c new file mode 100644 index 00000000..e2a8cc48 --- /dev/null +++ b/src/api-impl-jni/android_content_res_AssetManager.c @@ -0,0 +1,101 @@ +#include +#include +#include +#include +#include +#include + +#include "defines.h" +#include "util.h" +#include "generated_headers/android_content_res_AssetManager.h" + +#define ASSET_DIR "data/assets/" + +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_openAsset(JNIEnv *env, jobject this, jstring _file_name, jint mode) +{ + const char *file_name = _CSTRING(_file_name); + char *path = malloc(strlen(file_name) + strlen(ASSET_DIR) + 1); + int fd; + + strcpy(path, ASSET_DIR); + strcat(path, file_name); + + printf("openning asset with filename: %s\n", _CSTRING(_file_name)); + + printf("openning asset at path: %s\n", path); + + fd = open(path, O_CLOEXEC | O_RDWR); + + free(path); + + return fd; +} + +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_getAssetLength(JNIEnv *env, jobject this, jint fd) +{ + int ret; + struct stat statbuf; + + ret = fstat(fd, &statbuf); + if(ret) + printf("oopsie, fstat failed on fd: %d with errno: %d\n", fd, errno); + + return statbuf.st_size; +} + +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_getAssetRemainingLength(JNIEnv *env, jobject this, jint fd) +{ + jlong file_size = Java_android_content_res_AssetManager_getAssetLength(env, this, fd); + off_t offset = lseek(fd, 0, SEEK_CUR); + + return file_size - offset; +} + +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_readAsset(JNIEnv *env, jobject this, jint fd, jbyteArray b, jint off, jint len) +{ + int ret; + int err; + + jbyte *array = _GET_BYTE_ARRAY_ELEMENTS(b); + ret = read(fd, &array[off], len); + _RELEASE_BYTE_ARRAY_ELEMENTS(b, array); + + if(ret < 0) { + err = errno; + printf("oopsie, read failed on fd: %d with errno: %d\n", fd, err); + exit(err); + } else if (ret == 0) { //EOF + return -1; + } else { + return ret; + } +} + +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_readAssetChar(JNIEnv *env, jobject this, jint fd) +{ + int ret; + int err; + unsigned char byte; + + ret = read(fd, &byte, 1); + if(ret == 1) + return byte; + else if(ret == 0) + return -1; + else { + err = errno; + printf("oopsie, read failed on fd: %d with errno: %d\n", fd, err); + exit(err); + } +} + +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_seekAsset(JNIEnv *env, jobject this, jint fd, jlong off, jint whence) +{ + return lseek(fd, off, (whence > 0) ? SEEK_END : (whence < 0 ? SEEK_SET : SEEK_CUR)); +} + +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_destroyAsset(JNIEnv *env, jobject this, jint fd) +{ + printf("closing asset with fd: %d\n", fd); + close(fd); +} diff --git a/src/api-impl-jni/android_graphics_Bitmap.c b/src/api-impl-jni/android_graphics_Bitmap.c new file mode 100644 index 00000000..c1600b11 --- /dev/null +++ b/src/api-impl-jni/android_graphics_Bitmap.c @@ -0,0 +1,28 @@ +#include + +#include "defines.h" +#include "util.h" + +#include "generated_headers/android_graphics_Bitmap.h" + +JNIEXPORT jlong JNICALL Java_android_graphics_Bitmap_native_1bitmap_1from_1path(JNIEnv *env, jobject this, jobject path) +{ + GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(_CSTRING(path), NULL); + printf(">>> made pixbuf from path: >%s<, >%p<\n", _CSTRING(path), pixbuf); + g_object_ref(pixbuf); + return _INTPTR(pixbuf); +} + +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_getWidth(JNIEnv *env, jobject this) +{ + GdkPixbuf *pixbuf = _PTR(_GET_LONG_FIELD(this, "pixbuf")); + + return gdk_pixbuf_get_width(pixbuf); +} + +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_getHeight(JNIEnv *env, jobject this) +{ + GdkPixbuf *pixbuf = _PTR(_GET_LONG_FIELD(this, "pixbuf")); + + return gdk_pixbuf_get_height(pixbuf); +} diff --git a/src/api-impl-jni/android_graphics_Canvas.c b/src/api-impl-jni/android_graphics_Canvas.c new file mode 100644 index 00000000..4f517562 --- /dev/null +++ b/src/api-impl-jni/android_graphics_Canvas.c @@ -0,0 +1,68 @@ +#include + +#include "defines.h" +#include "util.h" + +#include "generated_headers/android_graphics_Canvas.h" + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1save(JNIEnv *env, jclass this, jlong cairo_context, jlong widget) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + + cairo_save(cr); +} + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1restore(JNIEnv *env, jclass this, jlong cairo_context, jlong widget) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + + cairo_restore(cr); +} + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1drawLine(JNIEnv *env, jclass this_class, jlong cairo_context, jlong widget, jfloat start_x, jfloat start_y, jfloat stop_x, jfloat stop_y, jint paint_color) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + + // TODO: cairo is not stateless, so we should probably check that the state is not already what we want it to be before we tell cairo to change it + // NOTE: we should make sure that cairo doesn't do this microoptimization internally before we implement it here + + char buf[10]; //#rrggbbaa\0 + snprintf(buf, 10, "#%06x%02x", paint_color & 0x00FFFFFF, paint_color>>24); + GdkRGBA color; + gdk_rgba_parse(&color, buf); + + gdk_cairo_set_source_rgba(cr, &color); + + cairo_move_to(cr, start_x, start_y); + cairo_line_to(cr, stop_x, stop_y); + cairo_stroke(cr); +} + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1drawBitmap(JNIEnv *env , jclass this_class, jlong cairo_context, jlong widget, jlong _pixbuf, jfloat src_x, jfloat src_y , jfloat dest_x , jfloat dest_y, jobject paint) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + GdkPixbuf *pixbuf = (GdkPixbuf *)_PTR(_pixbuf); + + cairo_translate(cr, dest_x, dest_y); + gdk_cairo_set_source_pixbuf(cr, pixbuf, src_x, src_y); + cairo_paint(cr); + cairo_translate(cr, -dest_x, -dest_y); +} + +// TODO: if we switched to using the snapshot mechanic directly instead of having a DrawingArea, these two could possibly (maybe it clips or something?) be replaced with hw-accelerated Gsk functions +// NOTE: it's unclear whether using the snapshot mechanic would still give us the same cairo context each time, and getting the same cairo context each time sure is convenient +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1rotate(JNIEnv *env, jclass this, jlong cairo_context, jlong widget, jfloat angle) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + + cairo_rotate(cr, DEG2RAD(angle)); +} + +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1rotate_1and_1translate(JNIEnv *env, jclass this, jlong cairo_context, jlong widget, jfloat angle, jfloat tx, jfloat ty) +{ + cairo_t *cr = (cairo_t *)_PTR(cairo_context); + + cairo_translate(cr, tx, ty); + cairo_rotate(cr, DEG2RAD(angle)); + cairo_translate(cr, -tx, -ty); +} diff --git a/src/api-impl-jni/android_os_SystemClock.c b/src/api-impl-jni/android_os_SystemClock.c new file mode 100644 index 00000000..41b38c78 --- /dev/null +++ b/src/api-impl-jni/android_os_SystemClock.c @@ -0,0 +1,7 @@ +#include "generated_headers/android_os_SystemClock.h" + +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_elapsedRealtime(JNIEnv *env, jclass this) +{ + printf("FIXME: Java_android_os_SystemClock_elapsedRealtime: returning 0\n"); + return 0; // FIXME +} diff --git a/src/api-impl-jni/android_view_Window.c b/src/api-impl-jni/android_view_Window.c new file mode 100644 index 00000000..f5a37755 --- /dev/null +++ b/src/api-impl-jni/android_view_Window.c @@ -0,0 +1,11 @@ +#include + +#include "defines.h" +#include "util.h" + +#include "generated_headers/android_view_Window.h" + +JNIEXPORT void JNICALL Java_android_view_Window_set_1widget_1as_1root(JNIEnv *env, jobject this, jlong window, jlong widget) +{ + gtk_window_set_child(GTK_WINDOW(_PTR(window)), gtk_widget_get_parent(GTK_WIDGET(_PTR(widget)))); +} diff --git a/src/api-impl-jni/audio/android_media_AudioTrack.c b/src/api-impl-jni/audio/android_media_AudioTrack.c new file mode 100644 index 00000000..2eac753d --- /dev/null +++ b/src/api-impl-jni/audio/android_media_AudioTrack.c @@ -0,0 +1,245 @@ +#include + +#include +#include +#include + +#include "../defines.h" +#include "../util.h" + +#include "../generated_headers/android_media_AudioTrack.h" + +#define PCM_DEVICE "sysdefault:CARD=Generic_1" + +void helper_hw_params_init(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *params, unsigned int rate, unsigned int channels, snd_pcm_format_t format) +{ + int ret; + + snd_pcm_hw_params_any(pcm_handle, params); + + ret = snd_pcm_hw_params_set_access(pcm_handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); + if (ret < 0) + printf("ERROR: Can't set interleaved mode. %s\n", snd_strerror(ret)); + + ret = snd_pcm_hw_params_set_format(pcm_handle, params, format); + if (ret < 0) + printf("ERROR: Can't set format. %s\n", snd_strerror(ret)); + + ret = snd_pcm_hw_params_set_channels(pcm_handle, params, channels); + if (ret < 0) + printf("ERROR: Can't set channels number. %s\n", snd_strerror(ret)); + + ret = snd_pcm_hw_params_set_rate_near(pcm_handle, params, &rate, 0); + if (ret < 0) + printf("ERROR: Can't set rate. %s\n", snd_strerror(ret)); +} + +JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1constructor(JNIEnv *env, jobject this, jint streamType, jint rate, jint channels, jint audioFormat, jint buffer_size, jint mode) +{ + snd_pcm_t *pcm_handle; + snd_pcm_hw_params_t *params; + + jint channels_out; + jint period_time; + + int ret; + + /* Open the PCM device in playback mode */ + ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0); + if (ret < 0) + printf("ERROR: Can't open \"%s\" PCM device. %s\n", PCM_DEVICE, snd_strerror(ret)); + + snd_pcm_hw_params_alloca(¶ms); + helper_hw_params_init(pcm_handle, params, rate, channels, SND_PCM_FORMAT_S16_LE); + +/*--↓*/ + snd_pcm_uframes_t buffer_size_as_uframes_t = buffer_size; + snd_pcm_hw_params_set_buffer_size_near (pcm_handle, params, &buffer_size_as_uframes_t); +/*--↑*/ + + /* Write parameters */ + ret = snd_pcm_hw_params(pcm_handle, params); + if (ret < 0) + printf("ERROR: Can't set harware parameters. %s\n", snd_strerror(ret)); + + //snd_pcm_hw_params_free (hw_params); + +/*--↓*/ + snd_pcm_uframes_t period_size; + + ret = snd_pcm_hw_params_get_period_size(params, &period_size, 0); + if (ret < 0) + printf("Error calling snd_pcm_hw_params_get_period_size: %s\n", snd_strerror(ret)); + + snd_pcm_sw_params_t *sw_params; + + snd_pcm_sw_params_malloc (&sw_params); + snd_pcm_sw_params_current (pcm_handle, sw_params); + + snd_pcm_sw_params_set_start_threshold(pcm_handle, sw_params, buffer_size - period_size); + snd_pcm_sw_params_set_avail_min(pcm_handle, sw_params, period_size); + + snd_pcm_sw_params(pcm_handle, sw_params); + + //snd_pcm_sw_params_free (sw_params); +/*--↑*/ + + /* Resume information */ + printf("PCM name: '%s'\n", snd_pcm_name(pcm_handle)); + + printf("PCM state: %s\n", snd_pcm_state_name(snd_pcm_state(pcm_handle))); + + snd_pcm_hw_params_get_channels(params, &channels_out); + printf("channels: %i ", channels_out); + + if (channels_out == 1) + printf("(mono)\n"); + else if (channels_out == 2) + printf("(stereo)\n"); + + unsigned int tmp; + snd_pcm_hw_params_get_rate(params, &tmp, 0); + printf("rate: %d bps\n", tmp); + + snd_pcm_hw_params_get_period_time(params, &period_time, NULL); + + _SET_LONG_FIELD(this, "pcm_handle", _INTPTR(pcm_handle)); + _SET_LONG_FIELD(this, "params", _INTPTR(params)); + _SET_INT_FIELD(this, "channels", channels_out); + _SET_INT_FIELD(this, "period_time", period_time); +} + +JNIEXPORT jint JNICALL Java_android_media_AudioTrack_getMinBufferSize(JNIEnv *env, jclass this_class, jint sampleRateInHz, jint channelConfig, jint audioFormat) +{ + snd_pcm_t *pcm_handle; + snd_pcm_hw_params_t *params; + snd_pcm_uframes_t frames; + int ret; + + // TODO: clean up + unsigned int num_channels; + switch(channelConfig) { + case 2: + num_channels = 1; + break; + default: + num_channels = 1; + } + // --- + + ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0); + if (ret < 0) + printf("Error calling snd_pcm_open: %s\n", snd_strerror(ret)); + + snd_pcm_hw_params_alloca(¶ms); + helper_hw_params_init(pcm_handle, params, sampleRateInHz, num_channels, SND_PCM_FORMAT_S16_LE); // FIXME: a switch? + + ret = snd_pcm_hw_params(pcm_handle, params); + if (ret < 0) + printf("Error calling snd_pcm_hw_params: %s\n", snd_strerror(ret)); + + ret = snd_pcm_hw_params_get_period_size(params, &frames, 0); + if (ret < 0) + printf("Error calling snd_pcm_hw_params_get_period_size: %s\n", snd_strerror(ret)); + +// TODO: snd_pcm_hw_params_free(params) causes segfault, is it not supposed to be called? + snd_pcm_close(pcm_handle); + + _SET_STATIC_INT_FIELD(this_class, "frames", frames); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + printf("\n\nJava_android_media_AudioTrack_getMinBufferSize is returning: %d\n\n\n", frames * num_channels * 2); + return frames * num_channels * 2; // FIXME: 2 bytes = 16 bits (s16) +} + +struct jni_callback_data { JavaVM *jvm; jobject this; jclass this_class; jobject listener; jint period_time;}; +void periodic_update_callback(snd_async_handler_t *pcm_callback) +{ + struct jni_callback_data *d = snd_async_handler_get_callback_private(pcm_callback); + int getenv_ret; + int attach_ret = -1; + +// printf("periodic_update_callback called!\n"); + + JNIEnv *env; + getenv_ret = (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + +// printf("!!!! GetEnv: %p getenv_ret: %d\n",env, getenv_ret); + if(getenv_ret == JNI_EDETACHED) { + printf("!!!! JNI_EDETACHED\n"); + attach_ret = (*d->jvm)->AttachCurrentThread(d->jvm, (void**)&env, NULL); + // TODO error checking + } + + (*env)->CallVoidMethod(env, d->listener, handle_cache.audio_track_periodic_listener.onPeriodicNotification, d->this); + + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + if(attach_ret == JNI_OK) // if we (succesfully) attached a thread, we should probably detach it now + (*d->jvm)->DetachCurrentThread(d->jvm); + + // microseconds to milliseconds +// g_timeout_add (d->period_time / 1000 - 2, G_SOURCE_FUNC(helper_loop), d); +// return G_SOURCE_REMOVE; +} + +JNIEXPORT void JNICALL Java_android_media_AudioTrack_play(JNIEnv *env, jobject this) +{ + pthread_t periodic_notification_thread; + int ret; + + jint period_time = _GET_INT_FIELD(this, "period_time"); + + // FIXME - this callback should probably be set up elsewhere + + JavaVM *jvm; + (*env)->GetJavaVM(env, &jvm); + + struct jni_callback_data *callback_data = malloc(sizeof(struct jni_callback_data)); + callback_data->jvm = jvm; + callback_data->this = _REF(this); + callback_data->this_class = _REF(_CLASS(this)); + callback_data->listener = _REF(_GET_OBJ_FIELD(this, "periodic_update_listener", "Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;")); + callback_data->period_time = period_time; + + // microseconds to milliseconds + //g_timeout_add (period_time / 1000, G_SOURCE_FUNC(helper_loop), callback_data); + +/*--↓*/ + snd_pcm_t *pcm_handle = _PTR(_GET_LONG_FIELD(this, "pcm_handle")); + + snd_async_handler_t *pcm_callback; + + snd_async_add_pcm_handler(&pcm_callback, pcm_handle, periodic_update_callback, callback_data); + snd_pcm_start(pcm_handle); +/*--↑*/ +} + +JNIEXPORT jint JNICALL Java_android_media_AudioTrack_write(JNIEnv *env, jobject this, jbyteArray audioData, jint offsetInBytes, jint sizeInBytes) +{ + int ret; + + jint channels = _GET_INT_FIELD(this, "channels"); + snd_pcm_t *pcm_handle = _PTR(_GET_LONG_FIELD(this, "pcm_handle")); + + snd_pcm_sframes_t frames_to_write = sizeInBytes / channels / 2; // FIXME - 2 means PCM16 + snd_pcm_sframes_t frames_written; + + jbyte *buffer = _GET_BYTE_ARRAY_ELEMENTS(audioData); + + ret = frames_written = snd_pcm_writei(pcm_handle, buffer, frames_to_write); + if (ret < 0) { + if (ret == -EPIPE) { + printf("XRUN.\n"); + snd_pcm_prepare(pcm_handle); + } else { + printf("ERROR. Can't write to PCM device. %s\n", snd_strerror(ret)); + } + } + +// printf("::::> tried to write %d frames, actually wrote %d frames.\n", frames_to_write, frames_written); + + _RELEASE_BYTE_ARRAY_ELEMENTS(audioData, buffer); +} diff --git a/src/api-impl-jni/defines.h b/src/api-impl-jni/defines.h new file mode 100644 index 00000000..82ff1311 --- /dev/null +++ b/src/api-impl-jni/defines.h @@ -0,0 +1,37 @@ +#ifndef _DEFINES_H_ +#define _DEFINES_H_ + +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +#define DEG2RAD(deg) (deg * M_PI / 180) + +// these macros are a bit hacky, since they deliberately assume that env exists and refers to the JNI env + +#define _PTR(ptr)((void*)(intptr_t)ptr) +#define _INTPTR(ptr)((jlong)(intptr_t)ptr) +#define _REF(obj)((*env)->NewGlobalRef(env, obj)) +#define _CLASS(object) ((*env)->GetObjectClass(env, object)) +#define _SUPER(object) ((*env)->GetSuperclass(env, object)) +#define _METHOD(class, method, attrs) ((*env)->GetMethodID(env, class, method, attrs)) +#define _JSTRING(cstring) ((*env)->NewStringUTF(env, cstring)) +#define _CSTRING(jstring) ((*env)->GetStringUTFChars(env, jstring, NULL)) +#define _FIELD_ID(class, field, type) ((*env)->GetFieldID(env, class , field, type)) +#define _STATIC_FIELD_ID(class, field, type) ((*env)->GetStaticFieldID(env, class , field, type)) +#define _SET_OBJ_FIELD(object, field, type, value) ((*env)->SetObjectField(env, object, _FIELD_ID(_CLASS(object), field, type), value)) +#define _GET_OBJ_FIELD(object, field, type) ((*env)->GetObjectField(env, object, _FIELD_ID(_CLASS(object), field, type))) +#define _SET_LONG_FIELD(object, field, value) ((*env)->SetLongField(env, object, _FIELD_ID(_CLASS(object), field, "J"), value)) +#define _GET_LONG_FIELD(object, field) ((*env)->GetLongField(env, object, _FIELD_ID(_CLASS(object), field, "J"))) +#define _SET_INT_FIELD(object, field, value) ((*env)->SetIntField(env, object, _FIELD_ID(_CLASS(object), field, "I"), value)) +#define _SET_STATIC_INT_FIELD(class, field, value) ((*env)->SetStaticIntField(env, class, _STATIC_FIELD_ID(class, field, "I"), value)) +#define _GET_INT_FIELD(object, field) ((*env)->GetIntField(env, object, _FIELD_ID(_CLASS(object), field, "I"))) +#define _GET_BYTE_ARRAY_ELEMENTS(b_array) ((*env)->GetByteArrayElements(env, b_array, NULL)) +#define _RELEASE_BYTE_ARRAY_ELEMENTS(b_array, buffer_ptr) ((*env)->ReleaseByteArrayElements(env, b_array, buffer_ptr, 0)) + +// this really doesn't belong here, should probably put this in Java and deal with ugly name convention of autogenerated headers + +#define MOTION_EVENT_ACTION_DOWN 0 +#define MOTION_EVENT_ACTION_UP 1 +#define MOTION_EVENT_ACTION_MOVE 2 + + +#endif diff --git a/src/api-impl-jni/drawables/ninepatch.c b/src/api-impl-jni/drawables/ninepatch.c new file mode 100644 index 00000000..a961869e --- /dev/null +++ b/src/api-impl-jni/drawables/ninepatch.c @@ -0,0 +1,386 @@ +#include + +#include "ninepatch.h" + +// ----- following yeeted from https://github.com/tongjinlv/my_xboot/blob/3d6a255ef4118486c13953cb07a805b0baab4bc2/src/framework/display/l-ninepatch.c ----- +// [ FIXME: 1) this doesn't operate on binary 9patch files, but on source ones 2) this only works for basic cases where you have at most nine patches ] + +static inline int detect_black_pixel(unsigned char * p) +{ + return (((p[0] == 0) && (p[1] == 0) && (p[2] == 0) && (p[3] != 0)) ? 1 : 0); +} + +void ninepatch_stretch(struct ninepatch_t * ninepatch, double width, double height) +{ + int lr = ninepatch->left + ninepatch->right; + int tb = ninepatch->top + ninepatch->bottom; + + if(width < ninepatch->width) + width = ninepatch->width; + if(height < ninepatch->height) + height = ninepatch->height; + ninepatch->__w = width; + ninepatch->__h = height; + ninepatch->__sx = (ninepatch->__w - lr) / (ninepatch->width - lr); + ninepatch->__sy = (ninepatch->__h - tb) / (ninepatch->height - tb); +} + +static bool surface_to_ninepatch(cairo_surface_t * surface, struct ninepatch_t * patch) +{ + cairo_surface_t * cs; + cairo_t * cr; + unsigned char * data; + int width, height; + int stride; + int w, h; + int i; + + if(!surface || !patch) + return FALSE; + + width = cairo_image_surface_get_width(surface); + height = cairo_image_surface_get_height(surface); + if(width < 3 || height < 3) + return FALSE; + + /* Nine patch chunk */ + cs = cairo_surface_create_similar_image(surface, CAIRO_FORMAT_ARGB32, width, height); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, 0, 0); + cairo_paint(cr); + cairo_destroy(cr); + data = cairo_image_surface_get_data(cs); + stride = cairo_image_surface_get_stride(cs); + + /* Nine patch default size */ + width = width - 2; + height = height - 2; + patch->width = width; + patch->height = height; + + /* Stretch information */ + patch->left = 0; + patch->right = 0; + patch->top = 0; + patch->right = 0; + + for(i = 0; i < width; i++) + { + if(detect_black_pixel(&data[(i + 1) * 4])) + { + patch->left = i; + break; + } + } + for(i = width - 1; i >= 0; i--) + { + if(detect_black_pixel(&data[(i + 1) * 4])) + { + patch->right = width - 1 - i; + break; + } + } + for(i = 0; i < height; i++) + { + if(detect_black_pixel(&data[stride * (i + 1)])) + { + patch->top = i; + break; + } + } + for(i = height - 1; i >= 0; i--) + { + if(detect_black_pixel(&data[stride * (i + 1)])) + { + patch->bottom = height - 1 - i; + break; + } + } + cairo_surface_destroy(cs); + + /* Left top */ + w = patch->left; + h = patch->top; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), patch->left, patch->top); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -1, -1); + cairo_paint(cr); + cairo_destroy(cr); + patch->lt = cs; + } + else + { + patch->lt = NULL; + } + + /* Middle top */ + w = width - patch->left - patch->right; + h = patch->top; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -patch->left - 1, -1); + cairo_paint(cr); + cairo_destroy(cr); + patch->mt = cs; + } + else + { + patch->mt = NULL; + } + + /* Right top */ + w = patch->right; + h = patch->top; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -(width - patch->right) - 1, -1); + cairo_paint(cr); + cairo_destroy(cr); + patch->rt = cs; + } + else + { + patch->rt = NULL; + } + + /* Left Middle */ + w = patch->left; + h = height - patch->top - patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -1, -patch->top - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->lm = cs; + } + else + { + patch->lm = NULL; + } + + /* Middle Middle */ + w = width - patch->left - patch->right; + h = height - patch->top - patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -patch->left - 1, -patch->top - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->mm = cs; + } + else + { + patch->mm = NULL; + } + + /* Right middle */ + w = patch->right; + h = height - patch->top - patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -(width - patch->right) - 1, -patch->top - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->rm = cs; + } + else + { + patch->rm = NULL; + } + + /* Left bottom */ + w = patch->left; + h = patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -1, -(height - patch->bottom) - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->lb = cs; + } + else + { + patch->lb = NULL; + } + + /* Middle bottom */ + w = width - patch->left - patch->right; + h = patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -patch->left - 1, -(height - patch->bottom) - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->mb = cs; + } + else + { + patch->mb = NULL; + } + + /* Right bottom */ + w = patch->right; + h = patch->bottom; + if(w > 0 && h > 0) + { + cs = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), w, h); + cr = cairo_create(cs); + cairo_set_source_surface(cr, surface, -(width - patch->right) - 1, -(height - patch->bottom) - 1); + cairo_paint(cr); + cairo_destroy(cr); + patch->rb = cs; + } + else + { + patch->rb = NULL; + } + + ninepatch_stretch(patch, width, height); + return TRUE; +} + +struct ninepatch_t * ninepatch_new(char *filename) +{ + struct ninepatch_t *ninepatch = malloc(sizeof(struct ninepatch_t)); + cairo_surface_t *surface = cairo_image_surface_create_from_png(filename); + if(cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) + exit(-1); + bool result = surface_to_ninepatch(surface, ninepatch); + cairo_surface_destroy(surface); + if(!result) + exit(-2); + + return ninepatch; +} + +// ----- end of borrowed code ----- + +cairo_surface_t * ninepatch_to_surface(struct ninepatch_t *ninepatch) +{ + static const cairo_matrix_t identity = {1, 0, + 0, 1, + 0, 0}; + + cairo_surface_t *cs = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, (int)ninepatch->__w, (int)ninepatch->__h); + cairo_t *cr = cairo_create(cs); + + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); + + // relevant measurements + const int left_w = ninepatch->left; + const int top_h = ninepatch->top; + const int middle_h = ninepatch->height - ninepatch->top - ninepatch->bottom; + const int middle_w = ninepatch->width - ninepatch->left - ninepatch->right; + + // offset for left/top is zero, and for middle it's width/height of left/top respectively + double offset_right_x = left_w + middle_w * ninepatch->__sx; + double offset_bottom_y = top_h + middle_h * ninepatch->__sy; + + // --- left top --- + if(ninepatch->lt) { + cairo_set_source_surface(cr, ninepatch->lt, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + } + + // --- left middle --- + if(ninepatch->lm) { + cairo_translate(cr, 0, top_h); + cairo_scale(cr, 1, ninepatch->__sy); + cairo_set_source_surface(cr, ninepatch->lm, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + // --- left bottom --- + if(ninepatch->lb) { + cairo_translate(cr, 0, offset_bottom_y); + cairo_set_source_surface(cr, ninepatch->lb, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + +// ------------------------------------------------------------------------- + + // --- middle top --- + if(ninepatch->mt) { + cairo_translate(cr, left_w, 0); + cairo_scale(cr, ninepatch->__sx, 1); + cairo_set_source_surface(cr, ninepatch->mt, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + // --- middle middle --- + if(ninepatch->mm) { + cairo_translate(cr, left_w, top_h); + cairo_scale(cr, ninepatch->__sx, ninepatch->__sy); + cairo_set_source_surface(cr, ninepatch->mm, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + // --- middle bottom --- + if(ninepatch->mb) { + cairo_translate(cr, left_w, offset_bottom_y); + cairo_scale(cr, ninepatch->__sx, 1); + cairo_set_source_surface(cr, ninepatch->mb, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + +// ------------------------------------------------------------------------- + + // --- right top --- + if(ninepatch->rt) { + cairo_translate(cr, offset_right_x, 0); + cairo_set_source_surface(cr, ninepatch->rt, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + // --- right middle --- + if(ninepatch->rm) { + cairo_translate(cr, offset_right_x, top_h); + cairo_scale(cr, 1, ninepatch->__sy); + cairo_set_source_surface(cr, ninepatch->rm, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + // --- right bottom --- + if(ninepatch->rb) { + cairo_translate(cr, offset_right_x, offset_bottom_y); + cairo_set_source_surface(cr, ninepatch->rb, 0, 0); + cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); + cairo_paint(cr); + cairo_set_matrix(cr, &identity); + } + + printf(";;;;;; %lf %lf | %d %d\n", ninepatch->__w, ninepatch->__h, cairo_image_surface_get_width(cs), cairo_image_surface_get_height(cs)); + + return cs; +} diff --git a/src/api-impl-jni/drawables/ninepatch.h b/src/api-impl-jni/drawables/ninepatch.h new file mode 100644 index 00000000..c654bfbf --- /dev/null +++ b/src/api-impl-jni/drawables/ninepatch.h @@ -0,0 +1,24 @@ +#ifndef NINEPATCH_H +#define NINEPATCH_H + +struct ninepatch_t { + int width, height; + int left, top, right, bottom; + cairo_surface_t * lt; + cairo_surface_t * mt; + cairo_surface_t * rt; + cairo_surface_t * lm; + cairo_surface_t * mm; + cairo_surface_t * rm; + cairo_surface_t * lb; + cairo_surface_t * mb; + cairo_surface_t * rb; + double __w, __h; + double __sx, __sy; +}; + +void ninepatch_stretch(struct ninepatch_t * ninepatch, double width, double height); +struct ninepatch_t * ninepatch_new(char *filename); +cairo_surface_t * ninepatch_to_surface(struct ninepatch_t *ninepatch); + +#endif diff --git a/src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c b/src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c new file mode 100644 index 00000000..db651a82 --- /dev/null +++ b/src/api-impl-jni/egl/com_google_android_gles_jni_EGLImpl.c @@ -0,0 +1,69 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "../generated_headers/com_google_android_gles_jni_EGLImpl.h" + +// helpers from android source (TODO: either use GetIntArrayElements, or figure out if GetPrimitiveArrayCritical is superior and use it everywhere if so) +static jint* get_int_array_crit(JNIEnv *env, jintArray array) { + if (array != NULL) { + return (jint *)(*env)->GetPrimitiveArrayCritical(env, array, (jboolean *)0); + } else { + return(jint*) NULL; // FIXME - do apps expect us to use some default? + } +} + +static void release_int_array_crit(JNIEnv *env, jintArray array, jint* base) { + if (array != NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, array, base, JNI_ABORT); + } +} + +// --- + +static jlong* get_long_array_crit(JNIEnv *env, jlongArray array) { + if (array != NULL) { + return (jlong *)(*env)->GetPrimitiveArrayCritical(env, array, (jboolean *)0); + } else { + return(jlong*) NULL; // FIXME - do apps expect us to use some default? + } +} + +static void release_long_array_crit(JNIEnv *env, jlongArray array, jlong* base) { + if (array != NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, array, base, JNI_ABORT); + } +} + +JNIEXPORT jlong JNICALL Java_com_google_android_gles_1jni_EGLImpl_native_1eglCreateContext(JNIEnv *env, jobject this, jlong egl_display, jlong egl_config, jobject share_context, jintArray attrib_list) +{ + printf("env: %p, this: %p, egl_display: %p, egl_config: %p, share_context: %p, attrib_list: %p\n", env, this, _PTR(egl_display), _PTR(egl_config), share_context, attrib_list); + + jint* attrib_base = get_int_array_crit(env, attrib_list); + + EGLContext egl_context = eglCreateContext(_PTR(egl_display), _PTR(egl_config), NULL, attrib_base); + printf("egl_context: %d\n", egl_context); + + release_int_array_crit(env, attrib_list, attrib_base); + + return _INTPTR(egl_context); +} + +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_EGLImpl_native_1eglChooseConfig(JNIEnv *env, jobject this, jlong egl_display, jintArray attrib_list, jlongArray egl_configs, jint config_size, jintArray num_config) +{ + int ret; + + jint* attrib_base = get_int_array_crit(env, attrib_list); + jlong* configs_base = get_long_array_crit(env, egl_configs); + jint* num_config_base = get_int_array_crit(env, num_config); + + ret = eglChooseConfig(_PTR(egl_display), attrib_base, egl_configs ? _PTR(configs_base) : NULL, config_size, num_config_base); + printf(".. eglChooseConfig: egl_display: %p, egl_configs: %d, _PTR(configs_base): %p, config_size: %d, num_config_base[0]: %d\n", egl_display, egl_configs, _PTR(configs_base), config_size, num_config_base[0]); + + release_int_array_crit(env, attrib_list, attrib_base); + release_long_array_crit(env, egl_configs, configs_base); + release_int_array_crit(env, num_config, num_config_base); + + return ret; +} diff --git a/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h b/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h new file mode 100644 index 00000000..280b3b80 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h @@ -0,0 +1,367 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_content_res_AssetManager */ + +#ifndef _Included_android_content_res_AssetManager +#define _Included_android_content_res_AssetManager +#ifdef __cplusplus +extern "C" { +#endif +#undef android_content_res_AssetManager_ACCESS_UNKNOWN +#define android_content_res_AssetManager_ACCESS_UNKNOWN 0L +#undef android_content_res_AssetManager_ACCESS_RANDOM +#define android_content_res_AssetManager_ACCESS_RANDOM 1L +#undef android_content_res_AssetManager_ACCESS_STREAMING +#define android_content_res_AssetManager_ACCESS_STREAMING 2L +#undef android_content_res_AssetManager_ACCESS_BUFFER +#define android_content_res_AssetManager_ACCESS_BUFFER 3L +#undef android_content_res_AssetManager_localLOGV +#define android_content_res_AssetManager_localLOGV 0L +#undef android_content_res_AssetManager_DEBUG_REFS +#define android_content_res_AssetManager_DEBUG_REFS 0L +#undef android_content_res_AssetManager_STYLE_NUM_ENTRIES +#define android_content_res_AssetManager_STYLE_NUM_ENTRIES 6L +#undef android_content_res_AssetManager_STYLE_TYPE +#define android_content_res_AssetManager_STYLE_TYPE 0L +#undef android_content_res_AssetManager_STYLE_DATA +#define android_content_res_AssetManager_STYLE_DATA 1L +#undef android_content_res_AssetManager_STYLE_ASSET_COOKIE +#define android_content_res_AssetManager_STYLE_ASSET_COOKIE 2L +#undef android_content_res_AssetManager_STYLE_RESOURCE_ID +#define android_content_res_AssetManager_STYLE_RESOURCE_ID 3L +#undef android_content_res_AssetManager_STYLE_CHANGING_CONFIGURATIONS +#define android_content_res_AssetManager_STYLE_CHANGING_CONFIGURATIONS 4L +#undef android_content_res_AssetManager_STYLE_DENSITY +#define android_content_res_AssetManager_STYLE_DENSITY 5L +/* + * Class: android_content_res_AssetManager + * Method: list + * Signature: (Ljava/lang/String;)[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL Java_android_content_res_AssetManager_list + (JNIEnv *, jobject, jstring); + +/* + * Class: android_content_res_AssetManager + * Method: addAssetPathNative + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_addAssetPathNative + (JNIEnv *, jobject, jstring); + +/* + * Class: android_content_res_AssetManager + * Method: isUpToDate + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_content_res_AssetManager_isUpToDate + (JNIEnv *, jobject); + +/* + * Class: android_content_res_AssetManager + * Method: setLocale + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_setLocale + (JNIEnv *, jobject, jstring); + +/* + * Class: android_content_res_AssetManager + * Method: getLocales + * Signature: ()[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL Java_android_content_res_AssetManager_getLocales + (JNIEnv *, jobject); + +/* + * Class: android_content_res_AssetManager + * Method: setConfiguration + * Signature: (IILjava/lang/String;IIIIIIIIIIIIII)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_setConfiguration + (JNIEnv *, jobject, jint, jint, jstring, jint, jint, jint, jint, jint, jint, jint, jint, jint, jint, jint, jint, jint, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getResourceName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getResourceName + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getResourcePackageName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getResourcePackageName + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getResourceTypeName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getResourceTypeName + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getResourceEntryName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getResourceEntryName + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: openAsset + * Signature: (Ljava/lang/String;I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_openAsset + (JNIEnv *, jobject, jstring, jint); + +/* + * Class: android_content_res_AssetManager + * Method: openAssetFd + * Signature: (Ljava/lang/String;[J)Landroid/os/ParcelFileDescriptor; + */ +JNIEXPORT jobject JNICALL Java_android_content_res_AssetManager_openAssetFd + (JNIEnv *, jobject, jstring, jlongArray); + +/* + * Class: android_content_res_AssetManager + * Method: openNonAssetFdNative + * Signature: (ILjava/lang/String;[J)Landroid/os/ParcelFileDescriptor; + */ +JNIEXPORT jobject JNICALL Java_android_content_res_AssetManager_openNonAssetFdNative + (JNIEnv *, jobject, jint, jstring, jlongArray); + +/* + * Class: android_content_res_AssetManager + * Method: destroyAsset + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_destroyAsset + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: readAssetChar + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_readAssetChar + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: readAsset + * Signature: (I[BII)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_readAsset + (JNIEnv *, jobject, jint, jbyteArray, jint, jint); + +/* + * Class: android_content_res_AssetManager + * Method: seekAsset + * Signature: (IJI)J + */ +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_seekAsset + (JNIEnv *, jobject, jint, jlong, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getAssetLength + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_getAssetLength + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getAssetRemainingLength + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_getAssetRemainingLength + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: loadResourceValue + * Signature: (ISLandroid/util/TypedValue;Z)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_loadResourceValue + (JNIEnv *, jobject, jint, jshort, jobject, jboolean); + +/* + * Class: android_content_res_AssetManager + * Method: loadResourceBagValue + * Signature: (IILandroid/util/TypedValue;Z)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_loadResourceBagValue + (JNIEnv *, jobject, jint, jint, jobject, jboolean); + +/* + * Class: android_content_res_AssetManager + * Method: applyStyle + * Signature: (IIII[I[I[I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_content_res_AssetManager_applyStyle + (JNIEnv *, jclass, jint, jint, jint, jint, jintArray, jintArray, jintArray); + +/* + * Class: android_content_res_AssetManager + * Method: retrieveAttributes + * Signature: (I[I[I[I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_content_res_AssetManager_retrieveAttributes + (JNIEnv *, jobject, jint, jintArray, jintArray, jintArray); + +/* + * Class: android_content_res_AssetManager + * Method: getArraySize + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_getArraySize + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: retrieveArray + * Signature: (I[I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_retrieveArray + (JNIEnv *, jobject, jint, jintArray); + +/* + * Class: android_content_res_AssetManager + * Method: getStringBlockCount + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_getStringBlockCount + (JNIEnv *, jobject); + +/* + * Class: android_content_res_AssetManager + * Method: getNativeStringBlock + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_getNativeStringBlock + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getCookieName + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getCookieName + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getGlobalAssetCount + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_getGlobalAssetCount + (JNIEnv *, jclass); + +/* + * Class: android_content_res_AssetManager + * Method: getAssetAllocations + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getAssetAllocations + (JNIEnv *, jclass); + +/* + * Class: android_content_res_AssetManager + * Method: getGlobalAssetManagerCount + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_getGlobalAssetManagerCount + (JNIEnv *, jclass); + +/* + * Class: android_content_res_AssetManager + * Method: newTheme + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_newTheme + (JNIEnv *, jobject); + +/* + * Class: android_content_res_AssetManager + * Method: deleteTheme + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_deleteTheme + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: applyThemeStyle + * Signature: (IIZ)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_applyThemeStyle + (JNIEnv *, jclass, jint, jint, jboolean); + +/* + * Class: android_content_res_AssetManager + * Method: copyTheme + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_copyTheme + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_AssetManager + * Method: loadThemeAttributeValue + * Signature: (IILandroid/util/TypedValue;Z)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_loadThemeAttributeValue + (JNIEnv *, jclass, jint, jint, jobject, jboolean); + +/* + * Class: android_content_res_AssetManager + * Method: dumpTheme + * Signature: (IILjava/lang/String;Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_dumpTheme + (JNIEnv *, jclass, jint, jint, jstring, jstring); + +/* + * Class: android_content_res_AssetManager + * Method: getArrayStringResource + * Signature: (I)[Ljava/lang/String; + */ +JNIEXPORT jobjectArray JNICALL Java_android_content_res_AssetManager_getArrayStringResource + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getArrayStringInfo + * Signature: (I)[I + */ +JNIEXPORT jintArray JNICALL Java_android_content_res_AssetManager_getArrayStringInfo + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: getArrayIntResource + * Signature: (I)[I + */ +JNIEXPORT jintArray JNICALL Java_android_content_res_AssetManager_getArrayIntResource + (JNIEnv *, jobject, jint); + +/* + * Class: android_content_res_AssetManager + * Method: destroy + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_content_res_AssetManager_destroy + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_content_res_StringBlock.h b/src/api-impl-jni/generated_headers/android_content_res_StringBlock.h new file mode 100644 index 00000000..22070820 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_content_res_StringBlock.h @@ -0,0 +1,55 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_content_res_StringBlock */ + +#ifndef _Included_android_content_res_StringBlock +#define _Included_android_content_res_StringBlock +#ifdef __cplusplus +extern "C" { +#endif +#undef android_content_res_StringBlock_localLOGV +#define android_content_res_StringBlock_localLOGV 0L +/* + * Class: android_content_res_StringBlock + * Method: nativeCreate + * Signature: ([BII)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_StringBlock_nativeCreate + (JNIEnv *, jclass, jbyteArray, jint, jint); + +/* + * Class: android_content_res_StringBlock + * Method: nativeGetSize + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_StringBlock_nativeGetSize + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_StringBlock + * Method: nativeGetString + * Signature: (II)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_content_res_StringBlock_nativeGetString + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_StringBlock + * Method: nativeGetStyle + * Signature: (II)[I + */ +JNIEXPORT jintArray JNICALL Java_android_content_res_StringBlock_nativeGetStyle + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_StringBlock + * Method: nativeDestroy + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_content_res_StringBlock_nativeDestroy + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_content_res_XmlBlock.h b/src/api-impl-jni/generated_headers/android_content_res_XmlBlock.h new file mode 100644 index 00000000..366c0f71 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_content_res_XmlBlock.h @@ -0,0 +1,183 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_content_res_XmlBlock */ + +#ifndef _Included_android_content_res_XmlBlock +#define _Included_android_content_res_XmlBlock +#ifdef __cplusplus +extern "C" { +#endif +#undef android_content_res_XmlBlock_DEBUG +#define android_content_res_XmlBlock_DEBUG 0L +/* + * Class: android_content_res_XmlBlock + * Method: nativeCreate + * Signature: ([BII)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeCreate + (JNIEnv *, jclass, jbyteArray, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetStringBlock + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetStringBlock + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeCreateParseState + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeCreateParseState + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeNext + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeNext + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetNamespace + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetNamespace + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetName + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetName + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetText + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetText + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetLineNumber + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetLineNumber + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeCount + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeCount + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeNamespace + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeNamespace + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeName + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeName + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeResource + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeResource + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeDataType + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeDataType + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeData + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeData + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeStringValue + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeStringValue + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetIdAttribute + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetIdAttribute + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetClassAttribute + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetClassAttribute + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetStyleAttribute + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetStyleAttribute + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeGetAttributeIndex + * Signature: (ILjava/lang/String;Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeGetAttributeIndex + (JNIEnv *, jclass, jint, jstring, jstring); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeDestroyParseState + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_content_res_XmlBlock_nativeDestroyParseState + (JNIEnv *, jclass, jint); + +/* + * Class: android_content_res_XmlBlock + * Method: nativeDestroy + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_content_res_XmlBlock_nativeDestroy + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_Bitmap.h b/src/api-impl-jni/generated_headers/android_graphics_Bitmap.h new file mode 100644 index 00000000..5819dc32 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_Bitmap.h @@ -0,0 +1,217 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_Bitmap */ + +#ifndef _Included_android_graphics_Bitmap +#define _Included_android_graphics_Bitmap +#ifdef __cplusplus +extern "C" { +#endif +#undef android_graphics_Bitmap_DENSITY_NONE +#define android_graphics_Bitmap_DENSITY_NONE 0L +#undef android_graphics_Bitmap_WORKING_COMPRESS_STORAGE +#define android_graphics_Bitmap_WORKING_COMPRESS_STORAGE 4096L +/* + * Class: android_graphics_Bitmap + * Method: native_bitmap_from_path + * Signature: (Ljava/lang/CharSequence;)J + */ +JNIEXPORT jlong JNICALL Java_android_graphics_Bitmap_native_1bitmap_1from_1path + (JNIEnv *, jobject, jobject); + +/* + * Class: android_graphics_Bitmap + * Method: getWidth + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_getWidth + (JNIEnv *, jobject); + +/* + * Class: android_graphics_Bitmap + * Method: getHeight + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_getHeight + (JNIEnv *, jobject); + +/* + * Class: android_graphics_Bitmap + * Method: nativeCopy + * Signature: (IIZ)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_Bitmap_nativeCopy + (JNIEnv *, jclass, jint, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeDestructor + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeDestructor + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeRecycle + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Bitmap_nativeRecycle + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeReconfigure + * Signature: (IIIII)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeReconfigure + (JNIEnv *, jclass, jint, jint, jint, jint, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeCompress + * Signature: (IIILjava/io/OutputStream;[B)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Bitmap_nativeCompress + (JNIEnv *, jclass, jint, jint, jint, jobject, jbyteArray); + +/* + * Class: android_graphics_Bitmap + * Method: nativeErase + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeErase + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeRowBytes + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_nativeRowBytes + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeConfig + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_nativeConfig + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeGetPixel + * Signature: (IIIZ)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_nativeGetPixel + (JNIEnv *, jclass, jint, jint, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeGetPixels + * Signature: (I[IIIIIIIZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeGetPixels + (JNIEnv *, jclass, jint, jintArray, jint, jint, jint, jint, jint, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeSetPixel + * Signature: (IIIIZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeSetPixel + (JNIEnv *, jclass, jint, jint, jint, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeSetPixels + * Signature: (I[IIIIIIIZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeSetPixels + (JNIEnv *, jclass, jint, jintArray, jint, jint, jint, jint, jint, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeCopyPixelsToBuffer + * Signature: (ILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeCopyPixelsToBuffer + (JNIEnv *, jclass, jint, jobject); + +/* + * Class: android_graphics_Bitmap + * Method: nativeCopyPixelsFromBuffer + * Signature: (ILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeCopyPixelsFromBuffer + (JNIEnv *, jclass, jint, jobject); + +/* + * Class: android_graphics_Bitmap + * Method: nativeGenerationId + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Bitmap_nativeGenerationId + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeExtractAlpha + * Signature: (II[I)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_Bitmap_nativeExtractAlpha + (JNIEnv *, jclass, jint, jint, jintArray); + +/* + * Class: android_graphics_Bitmap + * Method: nativePrepareToDraw + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativePrepareToDraw + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeHasAlpha + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Bitmap_nativeHasAlpha + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeSetAlphaAndPremultiplied + * Signature: (IZZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeSetAlphaAndPremultiplied + (JNIEnv *, jclass, jint, jboolean, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeHasMipMap + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Bitmap_nativeHasMipMap + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Bitmap + * Method: nativeSetHasMipMap + * Signature: (IZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Bitmap_nativeSetHasMipMap + (JNIEnv *, jclass, jint, jboolean); + +/* + * Class: android_graphics_Bitmap + * Method: nativeSameAs + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Bitmap_nativeSameAs + (JNIEnv *, jclass, jint, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory.h b/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory.h new file mode 100644 index 00000000..c7d95182 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory.h @@ -0,0 +1,55 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_BitmapFactory */ + +#ifndef _Included_android_graphics_BitmapFactory +#define _Included_android_graphics_BitmapFactory +#ifdef __cplusplus +extern "C" { +#endif +#undef android_graphics_BitmapFactory_DECODE_BUFFER_SIZE +#define android_graphics_BitmapFactory_DECODE_BUFFER_SIZE 16384L +/* + * Class: android_graphics_BitmapFactory + * Method: nativeDecodeStream + * Signature: (Ljava/io/InputStream;[BLandroid/graphics/Rect;Landroid/graphics/BitmapFactory/Options;)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_BitmapFactory_nativeDecodeStream + (JNIEnv *, jclass, jobject, jbyteArray, jobject, jobject); + +/* + * Class: android_graphics_BitmapFactory + * Method: nativeDecodeFileDescriptor + * Signature: (Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory/Options;)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_BitmapFactory_nativeDecodeFileDescriptor + (JNIEnv *, jclass, jobject, jobject, jobject); + +/* + * Class: android_graphics_BitmapFactory + * Method: nativeDecodeAsset + * Signature: (ILandroid/graphics/Rect;Landroid/graphics/BitmapFactory/Options;)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_BitmapFactory_nativeDecodeAsset + (JNIEnv *, jclass, jint, jobject, jobject); + +/* + * Class: android_graphics_BitmapFactory + * Method: nativeDecodeByteArray + * Signature: ([BIILandroid/graphics/BitmapFactory/Options;)Landroid/graphics/Bitmap; + */ +JNIEXPORT jobject JNICALL Java_android_graphics_BitmapFactory_nativeDecodeByteArray + (JNIEnv *, jclass, jbyteArray, jint, jint, jobject); + +/* + * Class: android_graphics_BitmapFactory + * Method: nativeIsSeekable + * Signature: (Ljava/io/FileDescriptor;)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_BitmapFactory_nativeIsSeekable + (JNIEnv *, jclass, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory_Options.h b/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory_Options.h new file mode 100644 index 00000000..2f3e210c --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_BitmapFactory_Options.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_BitmapFactory_Options */ + +#ifndef _Included_android_graphics_BitmapFactory_Options +#define _Included_android_graphics_BitmapFactory_Options +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_graphics_BitmapFactory_Options + * Method: requestCancel + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_graphics_BitmapFactory_00024Options_requestCancel + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_Canvas.h b/src/api-impl-jni/generated_headers/android_graphics_Canvas.h new file mode 100644 index 00000000..8b552b5d --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_Canvas.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_Canvas */ + +#ifndef _Included_android_graphics_Canvas +#define _Included_android_graphics_Canvas +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_graphics_Canvas + * Method: native_save + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1save + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: android_graphics_Canvas + * Method: native_restore + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1restore + (JNIEnv *, jclass, jlong, jlong); + +/* + * Class: android_graphics_Canvas + * Method: native_drawLine + * Signature: (JJFFFFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1drawLine + (JNIEnv *, jclass, jlong, jlong, jfloat, jfloat, jfloat, jfloat, jint); + +/* + * Class: android_graphics_Canvas + * Method: native_drawBitmap + * Signature: (JJJFFFFLandroid/graphics/Paint;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1drawBitmap + (JNIEnv *, jclass, jlong, jlong, jlong, jfloat, jfloat, jfloat, jfloat, jobject); + +/* + * Class: android_graphics_Canvas + * Method: native_rotate + * Signature: (JJF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1rotate + (JNIEnv *, jclass, jlong, jlong, jfloat); + +/* + * Class: android_graphics_Canvas + * Method: native_rotate_and_translate + * Signature: (JJFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Canvas_native_1rotate_1and_1translate + (JNIEnv *, jclass, jlong, jlong, jfloat, jfloat, jfloat); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_Matrix.h b/src/api-impl-jni/generated_headers/android_graphics_Matrix.h new file mode 100644 index 00000000..eeadbff0 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_Matrix.h @@ -0,0 +1,359 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_Matrix */ + +#ifndef _Included_android_graphics_Matrix +#define _Included_android_graphics_Matrix +#ifdef __cplusplus +extern "C" { +#endif +#undef android_graphics_Matrix_MSCALE_X +#define android_graphics_Matrix_MSCALE_X 0L +#undef android_graphics_Matrix_MSKEW_X +#define android_graphics_Matrix_MSKEW_X 1L +#undef android_graphics_Matrix_MTRANS_X +#define android_graphics_Matrix_MTRANS_X 2L +#undef android_graphics_Matrix_MSKEW_Y +#define android_graphics_Matrix_MSKEW_Y 3L +#undef android_graphics_Matrix_MSCALE_Y +#define android_graphics_Matrix_MSCALE_Y 4L +#undef android_graphics_Matrix_MTRANS_Y +#define android_graphics_Matrix_MTRANS_Y 5L +#undef android_graphics_Matrix_MPERSP_0 +#define android_graphics_Matrix_MPERSP_0 6L +#undef android_graphics_Matrix_MPERSP_1 +#define android_graphics_Matrix_MPERSP_1 7L +#undef android_graphics_Matrix_MPERSP_2 +#define android_graphics_Matrix_MPERSP_2 8L +/* + * Class: android_graphics_Matrix + * Method: native_create + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Matrix_native_1create + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_isIdentity + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1isIdentity + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_rectStaysRect + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1rectStaysRect + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_reset + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1reset + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_set + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1set + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_setTranslate + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setTranslate + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setScale + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setScale__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setScale + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setScale__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setRotate + * Signature: (IFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setRotate__IFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setRotate + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setRotate__IF + (JNIEnv *, jclass, jint, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setSinCos + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setSinCos__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setSinCos + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setSinCos__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setSkew + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setSkew__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setSkew + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setSkew__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_setConcat + * Signature: (III)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1setConcat + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_preTranslate + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preTranslate + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preScale + * Signature: (IFFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preScale__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preScale + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preScale__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preRotate + * Signature: (IFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preRotate__IFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preRotate + * Signature: (IF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preRotate__IF + (JNIEnv *, jclass, jint, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preSkew + * Signature: (IFFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preSkew__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preSkew + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preSkew__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_preConcat + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1preConcat + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_postTranslate + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postTranslate + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postScale + * Signature: (IFFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postScale__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postScale + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postScale__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postRotate + * Signature: (IFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postRotate__IFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postRotate + * Signature: (IF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postRotate__IF + (JNIEnv *, jclass, jint, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postSkew + * Signature: (IFFFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postSkew__IFFFF + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postSkew + * Signature: (IFF)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postSkew__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_postConcat + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1postConcat + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_setRectToRect + * Signature: (ILandroid/graphics/RectF;Landroid/graphics/RectF;I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1setRectToRect + (JNIEnv *, jclass, jint, jobject, jobject, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_setPolyToPoly + * Signature: (I[FI[FII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1setPolyToPoly + (JNIEnv *, jclass, jint, jfloatArray, jint, jfloatArray, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_invert + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1invert + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: native_mapPoints + * Signature: (I[FI[FIIZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1mapPoints + (JNIEnv *, jclass, jint, jfloatArray, jint, jfloatArray, jint, jint, jboolean); + +/* + * Class: android_graphics_Matrix + * Method: native_mapRect + * Signature: (ILandroid/graphics/RectF;Landroid/graphics/RectF;)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1mapRect + (JNIEnv *, jclass, jint, jobject, jobject); + +/* + * Class: android_graphics_Matrix + * Method: native_mapRadius + * Signature: (IF)F + */ +JNIEXPORT jfloat JNICALL Java_android_graphics_Matrix_native_1mapRadius + (JNIEnv *, jclass, jint, jfloat); + +/* + * Class: android_graphics_Matrix + * Method: native_getValues + * Signature: (I[F)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1getValues + (JNIEnv *, jclass, jint, jfloatArray); + +/* + * Class: android_graphics_Matrix + * Method: native_setValues + * Signature: (I[F)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setValues + (JNIEnv *, jclass, jint, jfloatArray); + +/* + * Class: android_graphics_Matrix + * Method: native_equals + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1equals + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Matrix + * Method: finalizer + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Matrix_finalizer + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_Path.h b/src/api-impl-jni/generated_headers/android_graphics_Path.h new file mode 100644 index 00000000..fd960254 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_Path.h @@ -0,0 +1,317 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_Path */ + +#ifndef _Included_android_graphics_Path +#define _Included_android_graphics_Path +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_graphics_Path + * Method: init1 + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Path_init1 + (JNIEnv *, jclass); + +/* + * Class: android_graphics_Path + * Method: init2 + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Path_init2 + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_reset + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1reset + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_rewind + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1rewind + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_set + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1set + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_getFillType + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Path_native_1getFillType + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_setFillType + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1setFillType + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_isEmpty + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Path_native_1isEmpty + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_isRect + * Signature: (ILandroid/graphics/RectF;)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Path_native_1isRect + (JNIEnv *, jclass, jint, jobject); + +/* + * Class: android_graphics_Path + * Method: native_computeBounds + * Signature: (ILandroid/graphics/RectF;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1computeBounds + (JNIEnv *, jclass, jint, jobject); + +/* + * Class: android_graphics_Path + * Method: native_incReserve + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1incReserve + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_moveTo + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1moveTo + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_rMoveTo + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1rMoveTo + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_lineTo + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1lineTo + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_rLineTo + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1rLineTo + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_quadTo + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1quadTo + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_rQuadTo + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1rQuadTo + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_cubicTo + * Signature: (IFFFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1cubicTo + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_rCubicTo + * Signature: (IFFFFFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1rCubicTo + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_arcTo + * Signature: (ILandroid/graphics/RectF;FFZ)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1arcTo + (JNIEnv *, jclass, jint, jobject, jfloat, jfloat, jboolean); + +/* + * Class: android_graphics_Path + * Method: native_close + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1close + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Path + * Method: native_addRect + * Signature: (ILandroid/graphics/RectF;I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addRect__ILandroid_graphics_RectF_2I + (JNIEnv *, jclass, jint, jobject, jint); + +/* + * Class: android_graphics_Path + * Method: native_addRect + * Signature: (IFFFFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addRect__IFFFFI + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jfloat, jint); + +/* + * Class: android_graphics_Path + * Method: native_addOval + * Signature: (ILandroid/graphics/RectF;I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addOval + (JNIEnv *, jclass, jint, jobject, jint); + +/* + * Class: android_graphics_Path + * Method: native_addCircle + * Signature: (IFFFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addCircle + (JNIEnv *, jclass, jint, jfloat, jfloat, jfloat, jint); + +/* + * Class: android_graphics_Path + * Method: native_addArc + * Signature: (ILandroid/graphics/RectF;FF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addArc + (JNIEnv *, jclass, jint, jobject, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_addRoundRect + * Signature: (ILandroid/graphics/RectF;FFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addRoundRect__ILandroid_graphics_RectF_2FFI + (JNIEnv *, jclass, jint, jobject, jfloat, jfloat, jint); + +/* + * Class: android_graphics_Path + * Method: native_addRoundRect + * Signature: (ILandroid/graphics/RectF;[FI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addRoundRect__ILandroid_graphics_RectF_2_3FI + (JNIEnv *, jclass, jint, jobject, jfloatArray, jint); + +/* + * Class: android_graphics_Path + * Method: native_addPath + * Signature: (IIFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addPath__IIFF + (JNIEnv *, jclass, jint, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_addPath + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addPath__II + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_addPath + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addPath__III + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_offset + * Signature: (IFFI)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1offset__IFFI + (JNIEnv *, jclass, jint, jfloat, jfloat, jint); + +/* + * Class: android_graphics_Path + * Method: native_offset + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1offset__IFF + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_setLastPoint + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1setLastPoint + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_graphics_Path + * Method: native_transform + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1transform__III + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_transform + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_native_1transform__II + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Path + * Method: native_op + * Signature: (IIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Path_native_1op + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: android_graphics_Path + * Method: finalizer + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Path_finalizer + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_graphics_Region.h b/src/api-impl-jni/generated_headers/android_graphics_Region.h new file mode 100644 index 00000000..c30c6063 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_graphics_Region.h @@ -0,0 +1,183 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_graphics_Region */ + +#ifndef _Included_android_graphics_Region +#define _Included_android_graphics_Region +#ifdef __cplusplus +extern "C" { +#endif +#undef android_graphics_Region_MAX_POOL_SIZE +#define android_graphics_Region_MAX_POOL_SIZE 10L +/* + * Class: android_graphics_Region + * Method: isEmpty + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_isEmpty + (JNIEnv *, jobject); + +/* + * Class: android_graphics_Region + * Method: isRect + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_isRect + (JNIEnv *, jobject); + +/* + * Class: android_graphics_Region + * Method: isComplex + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_isComplex + (JNIEnv *, jobject); + +/* + * Class: android_graphics_Region + * Method: contains + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_contains + (JNIEnv *, jobject, jint, jint); + +/* + * Class: android_graphics_Region + * Method: quickContains + * Signature: (IIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_quickContains + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: quickReject + * Signature: (IIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_quickReject__IIII + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: quickReject + * Signature: (Landroid/graphics/Region;)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_quickReject__Landroid_graphics_Region_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_graphics_Region + * Method: translate + * Signature: (IILandroid/graphics/Region;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Region_translate + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: android_graphics_Region + * Method: scale + * Signature: (FLandroid/graphics/Region;)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Region_scale + (JNIEnv *, jobject, jfloat, jobject); + +/* + * Class: android_graphics_Region + * Method: nativeEquals + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeEquals + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeConstructor + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_graphics_Region_nativeConstructor + (JNIEnv *, jclass); + +/* + * Class: android_graphics_Region + * Method: nativeDestructor + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Region_nativeDestructor + (JNIEnv *, jclass, jint); + +/* + * Class: android_graphics_Region + * Method: nativeSetRegion + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_graphics_Region_nativeSetRegion + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeSetRect + * Signature: (IIIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeSetRect + (JNIEnv *, jclass, jint, jint, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeSetPath + * Signature: (III)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeSetPath + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeGetBounds + * Signature: (ILandroid/graphics/Rect;)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeGetBounds + (JNIEnv *, jclass, jint, jobject); + +/* + * Class: android_graphics_Region + * Method: nativeGetBoundaryPath + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeGetBoundaryPath + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeOp + * Signature: (IIIIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeOp__IIIIII + (JNIEnv *, jclass, jint, jint, jint, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeOp + * Signature: (ILandroid/graphics/Rect;II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeOp__ILandroid_graphics_Rect_2II + (JNIEnv *, jclass, jint, jobject, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeOp + * Signature: (IIII)Z + */ +JNIEXPORT jboolean JNICALL Java_android_graphics_Region_nativeOp__IIII + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: android_graphics_Region + * Method: nativeToString + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_android_graphics_Region_nativeToString + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_media_AudioTrack.h b/src/api-impl-jni/generated_headers/android_media_AudioTrack.h new file mode 100644 index 00000000..c8a99fac --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_media_AudioTrack.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_media_AudioTrack */ + +#ifndef _Included_android_media_AudioTrack +#define _Included_android_media_AudioTrack +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_media_AudioTrack + * Method: native_constructor + * Signature: (IIIIII)V + */ +JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1constructor + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint); + +/* + * Class: android_media_AudioTrack + * Method: getMinBufferSize + * Signature: (III)I + */ +JNIEXPORT jint JNICALL Java_android_media_AudioTrack_getMinBufferSize + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_media_AudioTrack + * Method: play + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_media_AudioTrack_play + (JNIEnv *, jobject); + +/* + * Class: android_media_AudioTrack + * Method: write + * Signature: ([BII)I + */ +JNIEXPORT jint JNICALL Java_android_media_AudioTrack_write + (JNIEnv *, jobject, jbyteArray, jint, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h b/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h new file mode 100644 index 00000000..92fdbc83 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h @@ -0,0 +1,179 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_opengl_GLSurfaceView */ + +#ifndef _Included_android_opengl_GLSurfaceView +#define _Included_android_opengl_GLSurfaceView +#ifdef __cplusplus +extern "C" { +#endif +#undef android_opengl_GLSurfaceView_NO_ID +#define android_opengl_GLSurfaceView_NO_ID -1L +#undef android_opengl_GLSurfaceView_NOT_FOCUSABLE +#define android_opengl_GLSurfaceView_NOT_FOCUSABLE 0L +#undef android_opengl_GLSurfaceView_FOCUSABLE +#define android_opengl_GLSurfaceView_FOCUSABLE 1L +#undef android_opengl_GLSurfaceView_FOCUSABLE_MASK +#define android_opengl_GLSurfaceView_FOCUSABLE_MASK 1L +#undef android_opengl_GLSurfaceView_FITS_SYSTEM_WINDOWS +#define android_opengl_GLSurfaceView_FITS_SYSTEM_WINDOWS 2L +#undef android_opengl_GLSurfaceView_VISIBLE +#define android_opengl_GLSurfaceView_VISIBLE 0L +#undef android_opengl_GLSurfaceView_INVISIBLE +#define android_opengl_GLSurfaceView_INVISIBLE 4L +#undef android_opengl_GLSurfaceView_GONE +#define android_opengl_GLSurfaceView_GONE 8L +#undef android_opengl_GLSurfaceView_VISIBILITY_MASK +#define android_opengl_GLSurfaceView_VISIBILITY_MASK 12L +#undef android_opengl_GLSurfaceView_ENABLED +#define android_opengl_GLSurfaceView_ENABLED 0L +#undef android_opengl_GLSurfaceView_DISABLED +#define android_opengl_GLSurfaceView_DISABLED 32L +#undef android_opengl_GLSurfaceView_ENABLED_MASK +#define android_opengl_GLSurfaceView_ENABLED_MASK 32L +#undef android_opengl_GLSurfaceView_WILL_NOT_DRAW +#define android_opengl_GLSurfaceView_WILL_NOT_DRAW 128L +#undef android_opengl_GLSurfaceView_DRAW_MASK +#define android_opengl_GLSurfaceView_DRAW_MASK 128L +#undef android_opengl_GLSurfaceView_SCROLLBARS_NONE +#define android_opengl_GLSurfaceView_SCROLLBARS_NONE 0L +#undef android_opengl_GLSurfaceView_SCROLLBARS_HORIZONTAL +#define android_opengl_GLSurfaceView_SCROLLBARS_HORIZONTAL 256L +#undef android_opengl_GLSurfaceView_SCROLLBARS_VERTICAL +#define android_opengl_GLSurfaceView_SCROLLBARS_VERTICAL 512L +#undef android_opengl_GLSurfaceView_SCROLLBARS_MASK +#define android_opengl_GLSurfaceView_SCROLLBARS_MASK 768L +#undef android_opengl_GLSurfaceView_FILTER_TOUCHES_WHEN_OBSCURED +#define android_opengl_GLSurfaceView_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_opengl_GLSurfaceView_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_opengl_GLSurfaceView_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_opengl_GLSurfaceView_FADING_EDGE_NONE +#define android_opengl_GLSurfaceView_FADING_EDGE_NONE 0L +#undef android_opengl_GLSurfaceView_FADING_EDGE_HORIZONTAL +#define android_opengl_GLSurfaceView_FADING_EDGE_HORIZONTAL 4096L +#undef android_opengl_GLSurfaceView_FADING_EDGE_VERTICAL +#define android_opengl_GLSurfaceView_FADING_EDGE_VERTICAL 8192L +#undef android_opengl_GLSurfaceView_FADING_EDGE_MASK +#define android_opengl_GLSurfaceView_FADING_EDGE_MASK 12288L +#undef android_opengl_GLSurfaceView_CLICKABLE +#define android_opengl_GLSurfaceView_CLICKABLE 16384L +#undef android_opengl_GLSurfaceView_DRAWING_CACHE_ENABLED +#define android_opengl_GLSurfaceView_DRAWING_CACHE_ENABLED 32768L +#undef android_opengl_GLSurfaceView_SAVE_DISABLED +#define android_opengl_GLSurfaceView_SAVE_DISABLED 65536L +#undef android_opengl_GLSurfaceView_SAVE_DISABLED_MASK +#define android_opengl_GLSurfaceView_SAVE_DISABLED_MASK 65536L +#undef android_opengl_GLSurfaceView_WILL_NOT_CACHE_DRAWING +#define android_opengl_GLSurfaceView_WILL_NOT_CACHE_DRAWING 131072L +#undef android_opengl_GLSurfaceView_FOCUSABLE_IN_TOUCH_MODE +#define android_opengl_GLSurfaceView_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_LOW +#define android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_HIGH +#define android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_AUTO +#define android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_MASK +#define android_opengl_GLSurfaceView_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_opengl_GLSurfaceView_LONG_CLICKABLE +#define android_opengl_GLSurfaceView_LONG_CLICKABLE 2097152L +#undef android_opengl_GLSurfaceView_DUPLICATE_PARENT_STATE +#define android_opengl_GLSurfaceView_DUPLICATE_PARENT_STATE 4194304L +#undef android_opengl_GLSurfaceView_SCROLLBARS_INSIDE_OVERLAY +#define android_opengl_GLSurfaceView_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_opengl_GLSurfaceView_SCROLLBARS_INSIDE_INSET +#define android_opengl_GLSurfaceView_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_OVERLAY +#define android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_INSET +#define android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_opengl_GLSurfaceView_SCROLLBARS_INSET_MASK +#define android_opengl_GLSurfaceView_SCROLLBARS_INSET_MASK 16777216L +#undef android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_MASK +#define android_opengl_GLSurfaceView_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_opengl_GLSurfaceView_SCROLLBARS_STYLE_MASK +#define android_opengl_GLSurfaceView_SCROLLBARS_STYLE_MASK 50331648L +#undef android_opengl_GLSurfaceView_KEEP_SCREEN_ON +#define android_opengl_GLSurfaceView_KEEP_SCREEN_ON 67108864L +#undef android_opengl_GLSurfaceView_SOUND_EFFECTS_ENABLED +#define android_opengl_GLSurfaceView_SOUND_EFFECTS_ENABLED 134217728L +#undef android_opengl_GLSurfaceView_HAPTIC_FEEDBACK_ENABLED +#define android_opengl_GLSurfaceView_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_opengl_GLSurfaceView_PARENT_SAVE_DISABLED +#define android_opengl_GLSurfaceView_PARENT_SAVE_DISABLED 536870912L +#undef android_opengl_GLSurfaceView_PARENT_SAVE_DISABLED_MASK +#define android_opengl_GLSurfaceView_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_opengl_GLSurfaceView_FOCUSABLES_ALL +#define android_opengl_GLSurfaceView_FOCUSABLES_ALL 0L +#undef android_opengl_GLSurfaceView_FOCUSABLES_TOUCH_MODE +#define android_opengl_GLSurfaceView_FOCUSABLES_TOUCH_MODE 1L +#undef android_opengl_GLSurfaceView_FOCUS_BACKWARD +#define android_opengl_GLSurfaceView_FOCUS_BACKWARD 1L +#undef android_opengl_GLSurfaceView_FOCUS_FORWARD +#define android_opengl_GLSurfaceView_FOCUS_FORWARD 2L +#undef android_opengl_GLSurfaceView_FOCUS_LEFT +#define android_opengl_GLSurfaceView_FOCUS_LEFT 17L +#undef android_opengl_GLSurfaceView_FOCUS_UP +#define android_opengl_GLSurfaceView_FOCUS_UP 33L +#undef android_opengl_GLSurfaceView_FOCUS_RIGHT +#define android_opengl_GLSurfaceView_FOCUS_RIGHT 66L +#undef android_opengl_GLSurfaceView_FOCUS_DOWN +#define android_opengl_GLSurfaceView_FOCUS_DOWN 130L +#undef android_opengl_GLSurfaceView_MEASURED_SIZE_MASK +#define android_opengl_GLSurfaceView_MEASURED_SIZE_MASK 16777215L +#undef android_opengl_GLSurfaceView_MEASURED_STATE_MASK +#define android_opengl_GLSurfaceView_MEASURED_STATE_MASK -16777216L +#undef android_opengl_GLSurfaceView_MEASURED_HEIGHT_STATE_SHIFT +#define android_opengl_GLSurfaceView_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_opengl_GLSurfaceView_MEASURED_STATE_TOO_SMALL +#define android_opengl_GLSurfaceView_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_opengl_GLSurfaceView_PFLAG2_DRAG_CAN_ACCEPT +#define android_opengl_GLSurfaceView_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_opengl_GLSurfaceView_PFLAG2_DRAG_HOVERED +#define android_opengl_GLSurfaceView_PFLAG2_DRAG_HOVERED 2L +#undef android_opengl_GLSurfaceView_LAYOUT_DIRECTION_LTR +#define android_opengl_GLSurfaceView_LAYOUT_DIRECTION_LTR 0L +#undef android_opengl_GLSurfaceView_LAYOUT_DIRECTION_RTL +#define android_opengl_GLSurfaceView_LAYOUT_DIRECTION_RTL 1L +#undef android_opengl_GLSurfaceView_LAYOUT_DIRECTION_INHERIT +#define android_opengl_GLSurfaceView_LAYOUT_DIRECTION_INHERIT 2L +#undef android_opengl_GLSurfaceView_LAYOUT_DIRECTION_LOCALE +#define android_opengl_GLSurfaceView_LAYOUT_DIRECTION_LOCALE 3L +#undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_opengl_GLSurfaceView + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_opengl_GLSurfaceView + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_opengl_GLSurfaceView + * Method: native_set_renderer + * Signature: (Landroid/opengl/GLSurfaceView/Renderer;Z)V + */ +JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1set_1renderer + (JNIEnv *, jobject, jobject, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_os_MemoryFile.h b/src/api-impl-jni/generated_headers/android_os_MemoryFile.h new file mode 100644 index 00000000..b2083f40 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_os_MemoryFile.h @@ -0,0 +1,81 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_os_MemoryFile */ + +#ifndef _Included_android_os_MemoryFile +#define _Included_android_os_MemoryFile +#ifdef __cplusplus +extern "C" { +#endif +#undef android_os_MemoryFile_PROT_READ +#define android_os_MemoryFile_PROT_READ 1L +#undef android_os_MemoryFile_PROT_WRITE +#define android_os_MemoryFile_PROT_WRITE 2L +/* + * Class: android_os_MemoryFile + * Method: native_open + * Signature: (Ljava/lang/String;I)Ljava/io/FileDescriptor; + */ +JNIEXPORT jobject JNICALL Java_android_os_MemoryFile_native_1open + (JNIEnv *, jclass, jstring, jint); + +/* + * Class: android_os_MemoryFile + * Method: native_mmap + * Signature: (Ljava/io/FileDescriptor;II)I + */ +JNIEXPORT jint JNICALL Java_android_os_MemoryFile_native_1mmap + (JNIEnv *, jclass, jobject, jint, jint); + +/* + * Class: android_os_MemoryFile + * Method: native_munmap + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_MemoryFile_native_1munmap + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_MemoryFile + * Method: native_close + * Signature: (Ljava/io/FileDescriptor;)V + */ +JNIEXPORT void JNICALL Java_android_os_MemoryFile_native_1close + (JNIEnv *, jclass, jobject); + +/* + * Class: android_os_MemoryFile + * Method: native_read + * Signature: (Ljava/io/FileDescriptor;I[BIIIZ)I + */ +JNIEXPORT jint JNICALL Java_android_os_MemoryFile_native_1read + (JNIEnv *, jclass, jobject, jint, jbyteArray, jint, jint, jint, jboolean); + +/* + * Class: android_os_MemoryFile + * Method: native_write + * Signature: (Ljava/io/FileDescriptor;I[BIIIZ)V + */ +JNIEXPORT void JNICALL Java_android_os_MemoryFile_native_1write + (JNIEnv *, jclass, jobject, jint, jbyteArray, jint, jint, jint, jboolean); + +/* + * Class: android_os_MemoryFile + * Method: native_pin + * Signature: (Ljava/io/FileDescriptor;Z)V + */ +JNIEXPORT void JNICALL Java_android_os_MemoryFile_native_1pin + (JNIEnv *, jclass, jobject, jboolean); + +/* + * Class: android_os_MemoryFile + * Method: native_get_size + * Signature: (Ljava/io/FileDescriptor;)I + */ +JNIEXPORT jint JNICALL Java_android_os_MemoryFile_native_1get_1size + (JNIEnv *, jclass, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_os_MessageQueue.h b/src/api-impl-jni/generated_headers/android_os_MessageQueue.h new file mode 100644 index 00000000..99d334fe --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_os_MessageQueue.h @@ -0,0 +1,53 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_os_MessageQueue */ + +#ifndef _Included_android_os_MessageQueue +#define _Included_android_os_MessageQueue +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_os_MessageQueue + * Method: nativeInit + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_os_MessageQueue_nativeInit + (JNIEnv *, jclass); + +/* + * Class: android_os_MessageQueue + * Method: nativeDestroy + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_os_MessageQueue_nativeDestroy + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_MessageQueue + * Method: nativePollOnce + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_MessageQueue_nativePollOnce + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_MessageQueue + * Method: nativeWake + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_os_MessageQueue_nativeWake + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_MessageQueue + * Method: nativeIsIdling + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_MessageQueue_nativeIsIdling + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_os_Process.h b/src/api-impl-jni/generated_headers/android_os_Process.h new file mode 100644 index 00000000..efe5147a --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_os_Process.h @@ -0,0 +1,319 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_os_Process */ + +#ifndef _Included_android_os_Process +#define _Included_android_os_Process +#ifdef __cplusplus +extern "C" { +#endif +#undef android_os_Process_SYSTEM_UID +#define android_os_Process_SYSTEM_UID 1000L +#undef android_os_Process_PHONE_UID +#define android_os_Process_PHONE_UID 1001L +#undef android_os_Process_SHELL_UID +#define android_os_Process_SHELL_UID 2000L +#undef android_os_Process_LOG_UID +#define android_os_Process_LOG_UID 1007L +#undef android_os_Process_WIFI_UID +#define android_os_Process_WIFI_UID 1010L +#undef android_os_Process_MEDIA_UID +#define android_os_Process_MEDIA_UID 1013L +#undef android_os_Process_DRM_UID +#define android_os_Process_DRM_UID 1019L +#undef android_os_Process_VPN_UID +#define android_os_Process_VPN_UID 1016L +#undef android_os_Process_NFC_UID +#define android_os_Process_NFC_UID 1027L +#undef android_os_Process_BLUETOOTH_UID +#define android_os_Process_BLUETOOTH_UID 1002L +#undef android_os_Process_MEDIA_RW_GID +#define android_os_Process_MEDIA_RW_GID 1023L +#undef android_os_Process_PACKAGE_INFO_GID +#define android_os_Process_PACKAGE_INFO_GID 1032L +#undef android_os_Process_FIRST_APPLICATION_UID +#define android_os_Process_FIRST_APPLICATION_UID 10000L +#undef android_os_Process_LAST_APPLICATION_UID +#define android_os_Process_LAST_APPLICATION_UID 19999L +#undef android_os_Process_FIRST_ISOLATED_UID +#define android_os_Process_FIRST_ISOLATED_UID 99000L +#undef android_os_Process_LAST_ISOLATED_UID +#define android_os_Process_LAST_ISOLATED_UID 99999L +#undef android_os_Process_FIRST_SHARED_APPLICATION_GID +#define android_os_Process_FIRST_SHARED_APPLICATION_GID 50000L +#undef android_os_Process_LAST_SHARED_APPLICATION_GID +#define android_os_Process_LAST_SHARED_APPLICATION_GID 59999L +#undef android_os_Process_THREAD_PRIORITY_DEFAULT +#define android_os_Process_THREAD_PRIORITY_DEFAULT 0L +#undef android_os_Process_THREAD_PRIORITY_LOWEST +#define android_os_Process_THREAD_PRIORITY_LOWEST 19L +#undef android_os_Process_THREAD_PRIORITY_BACKGROUND +#define android_os_Process_THREAD_PRIORITY_BACKGROUND 10L +#undef android_os_Process_THREAD_PRIORITY_FOREGROUND +#define android_os_Process_THREAD_PRIORITY_FOREGROUND -2L +#undef android_os_Process_THREAD_PRIORITY_DISPLAY +#define android_os_Process_THREAD_PRIORITY_DISPLAY -4L +#undef android_os_Process_THREAD_PRIORITY_URGENT_DISPLAY +#define android_os_Process_THREAD_PRIORITY_URGENT_DISPLAY -8L +#undef android_os_Process_THREAD_PRIORITY_AUDIO +#define android_os_Process_THREAD_PRIORITY_AUDIO -16L +#undef android_os_Process_THREAD_PRIORITY_URGENT_AUDIO +#define android_os_Process_THREAD_PRIORITY_URGENT_AUDIO -19L +#undef android_os_Process_THREAD_PRIORITY_MORE_FAVORABLE +#define android_os_Process_THREAD_PRIORITY_MORE_FAVORABLE -1L +#undef android_os_Process_THREAD_PRIORITY_LESS_FAVORABLE +#define android_os_Process_THREAD_PRIORITY_LESS_FAVORABLE 1L +#undef android_os_Process_SCHED_OTHER +#define android_os_Process_SCHED_OTHER 0L +#undef android_os_Process_SCHED_FIFO +#define android_os_Process_SCHED_FIFO 1L +#undef android_os_Process_SCHED_RR +#define android_os_Process_SCHED_RR 2L +#undef android_os_Process_SCHED_BATCH +#define android_os_Process_SCHED_BATCH 3L +#undef android_os_Process_SCHED_IDLE +#define android_os_Process_SCHED_IDLE 5L +#undef android_os_Process_THREAD_GROUP_DEFAULT +#define android_os_Process_THREAD_GROUP_DEFAULT -1L +#undef android_os_Process_THREAD_GROUP_BG_NONINTERACTIVE +#define android_os_Process_THREAD_GROUP_BG_NONINTERACTIVE 0L +#undef android_os_Process_THREAD_GROUP_FOREGROUND +#define android_os_Process_THREAD_GROUP_FOREGROUND 1L +#undef android_os_Process_THREAD_GROUP_SYSTEM +#define android_os_Process_THREAD_GROUP_SYSTEM 2L +#undef android_os_Process_THREAD_GROUP_AUDIO_APP +#define android_os_Process_THREAD_GROUP_AUDIO_APP 3L +#undef android_os_Process_THREAD_GROUP_AUDIO_SYS +#define android_os_Process_THREAD_GROUP_AUDIO_SYS 4L +#undef android_os_Process_SIGNAL_QUIT +#define android_os_Process_SIGNAL_QUIT 3L +#undef android_os_Process_SIGNAL_KILL +#define android_os_Process_SIGNAL_KILL 9L +#undef android_os_Process_SIGNAL_USR1 +#define android_os_Process_SIGNAL_USR1 10L +#undef android_os_Process_ZYGOTE_RETRY_MILLIS +#define android_os_Process_ZYGOTE_RETRY_MILLIS 500L +#undef android_os_Process_PROC_TERM_MASK +#define android_os_Process_PROC_TERM_MASK 255L +#undef android_os_Process_PROC_ZERO_TERM +#define android_os_Process_PROC_ZERO_TERM 0L +#undef android_os_Process_PROC_SPACE_TERM +#define android_os_Process_PROC_SPACE_TERM 32L +#undef android_os_Process_PROC_TAB_TERM +#define android_os_Process_PROC_TAB_TERM 9L +#undef android_os_Process_PROC_COMBINE +#define android_os_Process_PROC_COMBINE 256L +#undef android_os_Process_PROC_PARENS +#define android_os_Process_PROC_PARENS 512L +#undef android_os_Process_PROC_QUOTES +#define android_os_Process_PROC_QUOTES 1024L +#undef android_os_Process_PROC_OUT_STRING +#define android_os_Process_PROC_OUT_STRING 4096L +#undef android_os_Process_PROC_OUT_LONG +#define android_os_Process_PROC_OUT_LONG 8192L +#undef android_os_Process_PROC_OUT_FLOAT +#define android_os_Process_PROC_OUT_FLOAT 16384L +/* + * Class: android_os_Process + * Method: getElapsedCpuTime + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_Process_getElapsedCpuTime + (JNIEnv *, jclass); + +/* + * Class: android_os_Process + * Method: getUidForName + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_getUidForName + (JNIEnv *, jclass, jstring); + +/* + * Class: android_os_Process + * Method: getGidForName + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_getGidForName + (JNIEnv *, jclass, jstring); + +/* + * Class: android_os_Process + * Method: setThreadPriority + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setThreadPriority + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: setCanSelfBackground + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setCanSelfBackground + (JNIEnv *, jclass, jboolean); + +/* + * Class: android_os_Process + * Method: setThreadGroup + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setThreadGroup + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: setProcessGroup + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setProcessGroup + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: getProcessGroup + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_getProcessGroup + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_Process + * Method: getThreadPriority + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_getThreadPriority + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_Process + * Method: setThreadScheduler + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setThreadScheduler + (JNIEnv *, jclass, jint, jint, jint); + +/* + * Class: android_os_Process + * Method: setOomAdj + * Signature: (II)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_Process_setOomAdj + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: setSwappiness + * Signature: (IZ)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_Process_setSwappiness + (JNIEnv *, jclass, jint, jboolean); + +/* + * Class: android_os_Process + * Method: setArgV0 + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_setArgV0 + (JNIEnv *, jclass, jstring); + +/* + * Class: android_os_Process + * Method: setUid + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_setUid + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_Process + * Method: setGid + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_os_Process_setGid + (JNIEnv *, jclass, jint); + +/* + * Class: android_os_Process + * Method: sendSignal + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_sendSignal + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: sendSignalQuiet + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_sendSignalQuiet + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_os_Process + * Method: getFreeMemory + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_Process_getFreeMemory + (JNIEnv *, jclass); + +/* + * Class: android_os_Process + * Method: getTotalMemory + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_Process_getTotalMemory + (JNIEnv *, jclass); + +/* + * Class: android_os_Process + * Method: readProcLines + * Signature: (Ljava/lang/String;[Ljava/lang/String;[J)V + */ +JNIEXPORT void JNICALL Java_android_os_Process_readProcLines + (JNIEnv *, jclass, jstring, jobjectArray, jlongArray); + +/* + * Class: android_os_Process + * Method: getPids + * Signature: (Ljava/lang/String;[I)[I + */ +JNIEXPORT jintArray JNICALL Java_android_os_Process_getPids + (JNIEnv *, jclass, jstring, jintArray); + +/* + * Class: android_os_Process + * Method: readProcFile + * Signature: (Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_Process_readProcFile + (JNIEnv *, jclass, jstring, jintArray, jobjectArray, jlongArray, jfloatArray); + +/* + * Class: android_os_Process + * Method: parseProcLine + * Signature: ([BII[I[Ljava/lang/String;[J[F)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_Process_parseProcLine + (JNIEnv *, jclass, jbyteArray, jint, jint, jintArray, jobjectArray, jlongArray, jfloatArray); + +/* + * Class: android_os_Process + * Method: getPidsForCommands + * Signature: ([Ljava/lang/String;)[I + */ +JNIEXPORT jintArray JNICALL Java_android_os_Process_getPidsForCommands + (JNIEnv *, jclass, jobjectArray); + +/* + * Class: android_os_Process + * Method: getPss + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_android_os_Process_getPss + (JNIEnv *, jclass, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_os_SystemClock.h b/src/api-impl-jni/generated_headers/android_os_SystemClock.h new file mode 100644 index 00000000..6d71ead0 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_os_SystemClock.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_os_SystemClock */ + +#ifndef _Included_android_os_SystemClock +#define _Included_android_os_SystemClock +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_os_SystemClock + * Method: setCurrentTimeMillis + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_SystemClock_setCurrentTimeMillis + (JNIEnv *, jclass, jlong); + +/* + * Class: android_os_SystemClock + * Method: elapsedRealtime + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_elapsedRealtime + (JNIEnv *, jclass); + +/* + * Class: android_os_SystemClock + * Method: elapsedRealtimeNanos + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_elapsedRealtimeNanos + (JNIEnv *, jclass); + +/* + * Class: android_os_SystemClock + * Method: currentThreadTimeMillis + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_currentThreadTimeMillis + (JNIEnv *, jclass); + +/* + * Class: android_os_SystemClock + * Method: currentThreadTimeMicro + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_currentThreadTimeMicro + (JNIEnv *, jclass); + +/* + * Class: android_os_SystemClock + * Method: currentTimeMicro + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_SystemClock_currentTimeMicro + (JNIEnv *, jclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_os_Trace.h b/src/api-impl-jni/generated_headers/android_os_Trace.h new file mode 100644 index 00000000..05030f04 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_os_Trace.h @@ -0,0 +1,115 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_os_Trace */ + +#ifndef _Included_android_os_Trace +#define _Included_android_os_Trace +#ifdef __cplusplus +extern "C" { +#endif +#undef android_os_Trace_TRACE_TAG_NEVER +#define android_os_Trace_TRACE_TAG_NEVER 0LL +#undef android_os_Trace_TRACE_TAG_ALWAYS +#define android_os_Trace_TRACE_TAG_ALWAYS 1LL +#undef android_os_Trace_TRACE_TAG_GRAPHICS +#define android_os_Trace_TRACE_TAG_GRAPHICS 2LL +#undef android_os_Trace_TRACE_TAG_INPUT +#define android_os_Trace_TRACE_TAG_INPUT 4LL +#undef android_os_Trace_TRACE_TAG_VIEW +#define android_os_Trace_TRACE_TAG_VIEW 8LL +#undef android_os_Trace_TRACE_TAG_WEBVIEW +#define android_os_Trace_TRACE_TAG_WEBVIEW 16LL +#undef android_os_Trace_TRACE_TAG_WINDOW_MANAGER +#define android_os_Trace_TRACE_TAG_WINDOW_MANAGER 32LL +#undef android_os_Trace_TRACE_TAG_ACTIVITY_MANAGER +#define android_os_Trace_TRACE_TAG_ACTIVITY_MANAGER 64LL +#undef android_os_Trace_TRACE_TAG_SYNC_MANAGER +#define android_os_Trace_TRACE_TAG_SYNC_MANAGER 128LL +#undef android_os_Trace_TRACE_TAG_AUDIO +#define android_os_Trace_TRACE_TAG_AUDIO 256LL +#undef android_os_Trace_TRACE_TAG_VIDEO +#define android_os_Trace_TRACE_TAG_VIDEO 512LL +#undef android_os_Trace_TRACE_TAG_CAMERA +#define android_os_Trace_TRACE_TAG_CAMERA 1024LL +#undef android_os_Trace_TRACE_TAG_HAL +#define android_os_Trace_TRACE_TAG_HAL 2048LL +#undef android_os_Trace_TRACE_TAG_APP +#define android_os_Trace_TRACE_TAG_APP 4096LL +#undef android_os_Trace_TRACE_TAG_RESOURCES +#define android_os_Trace_TRACE_TAG_RESOURCES 8192LL +#undef android_os_Trace_TRACE_TAG_DALVIK +#define android_os_Trace_TRACE_TAG_DALVIK 16384LL +#undef android_os_Trace_TRACE_TAG_RS +#define android_os_Trace_TRACE_TAG_RS 32768LL +#undef android_os_Trace_TRACE_TAG_NOT_READY +#define android_os_Trace_TRACE_TAG_NOT_READY -9223372036854775808LL +#undef android_os_Trace_MAX_SECTION_NAME_LEN +#define android_os_Trace_MAX_SECTION_NAME_LEN 127L +/* + * Class: android_os_Trace + * Method: nativeGetEnabledTags + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_android_os_Trace_nativeGetEnabledTags + (JNIEnv *, jclass); + +/* + * Class: android_os_Trace + * Method: nativeTraceCounter + * Signature: (JLjava/lang/String;I)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeTraceCounter + (JNIEnv *, jclass, jlong, jstring, jint); + +/* + * Class: android_os_Trace + * Method: nativeTraceBegin + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeTraceBegin + (JNIEnv *, jclass, jlong, jstring); + +/* + * Class: android_os_Trace + * Method: nativeTraceEnd + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeTraceEnd + (JNIEnv *, jclass, jlong); + +/* + * Class: android_os_Trace + * Method: nativeAsyncTraceBegin + * Signature: (JLjava/lang/String;I)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeAsyncTraceBegin + (JNIEnv *, jclass, jlong, jstring, jint); + +/* + * Class: android_os_Trace + * Method: nativeAsyncTraceEnd + * Signature: (JLjava/lang/String;I)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeAsyncTraceEnd + (JNIEnv *, jclass, jlong, jstring, jint); + +/* + * Class: android_os_Trace + * Method: nativeSetAppTracingAllowed + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeSetAppTracingAllowed + (JNIEnv *, jclass, jboolean); + +/* + * Class: android_os_Trace + * Method: nativeSetTracingEnabled + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_android_os_Trace_nativeSetTracingEnabled + (JNIEnv *, jclass, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_util_Log.h b/src/api-impl-jni/generated_headers/android_util_Log.h new file mode 100644 index 00000000..1ea3fcf7 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_util_Log.h @@ -0,0 +1,41 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_util_Log */ + +#ifndef _Included_android_util_Log +#define _Included_android_util_Log +#ifdef __cplusplus +extern "C" { +#endif +#undef android_util_Log_VERBOSE +#define android_util_Log_VERBOSE 2L +#undef android_util_Log_DEBUG +#define android_util_Log_DEBUG 3L +#undef android_util_Log_INFO +#define android_util_Log_INFO 4L +#undef android_util_Log_WARN +#define android_util_Log_WARN 5L +#undef android_util_Log_ERROR +#define android_util_Log_ERROR 6L +#undef android_util_Log_ASSERT +#define android_util_Log_ASSERT 7L +#undef android_util_Log_LOG_ID_MAIN +#define android_util_Log_LOG_ID_MAIN 0L +#undef android_util_Log_LOG_ID_RADIO +#define android_util_Log_LOG_ID_RADIO 1L +#undef android_util_Log_LOG_ID_EVENTS +#define android_util_Log_LOG_ID_EVENTS 2L +#undef android_util_Log_LOG_ID_SYSTEM +#define android_util_Log_LOG_ID_SYSTEM 3L +/* + * Class: android_util_Log + * Method: isLoggable + * Signature: (Ljava/lang/String;I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_util_Log_isLoggable + (JNIEnv *, jclass, jstring, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_view_MotionEvent.h b/src/api-impl-jni/generated_headers/android_view_MotionEvent.h new file mode 100644 index 00000000..c2874fb6 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_view_MotionEvent.h @@ -0,0 +1,467 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_view_MotionEvent */ + +#ifndef _Included_android_view_MotionEvent +#define _Included_android_view_MotionEvent +#ifdef __cplusplus +extern "C" { +#endif +#undef android_view_MotionEvent_PARCEL_TOKEN_MOTION_EVENT +#define android_view_MotionEvent_PARCEL_TOKEN_MOTION_EVENT 1L +#undef android_view_MotionEvent_PARCEL_TOKEN_KEY_EVENT +#define android_view_MotionEvent_PARCEL_TOKEN_KEY_EVENT 2L +#undef android_view_MotionEvent_TRACK_RECYCLED_LOCATION +#define android_view_MotionEvent_TRACK_RECYCLED_LOCATION 0L +#undef android_view_MotionEvent_NS_PER_MS +#define android_view_MotionEvent_NS_PER_MS 1000000LL +#undef android_view_MotionEvent_INVALID_POINTER_ID +#define android_view_MotionEvent_INVALID_POINTER_ID -1L +#undef android_view_MotionEvent_ACTION_MASK +#define android_view_MotionEvent_ACTION_MASK 255L +#undef android_view_MotionEvent_ACTION_DOWN +#define android_view_MotionEvent_ACTION_DOWN 0L +#undef android_view_MotionEvent_ACTION_UP +#define android_view_MotionEvent_ACTION_UP 1L +#undef android_view_MotionEvent_ACTION_MOVE +#define android_view_MotionEvent_ACTION_MOVE 2L +#undef android_view_MotionEvent_ACTION_CANCEL +#define android_view_MotionEvent_ACTION_CANCEL 3L +#undef android_view_MotionEvent_ACTION_OUTSIDE +#define android_view_MotionEvent_ACTION_OUTSIDE 4L +#undef android_view_MotionEvent_ACTION_POINTER_DOWN +#define android_view_MotionEvent_ACTION_POINTER_DOWN 5L +#undef android_view_MotionEvent_ACTION_POINTER_UP +#define android_view_MotionEvent_ACTION_POINTER_UP 6L +#undef android_view_MotionEvent_ACTION_HOVER_MOVE +#define android_view_MotionEvent_ACTION_HOVER_MOVE 7L +#undef android_view_MotionEvent_ACTION_SCROLL +#define android_view_MotionEvent_ACTION_SCROLL 8L +#undef android_view_MotionEvent_ACTION_HOVER_ENTER +#define android_view_MotionEvent_ACTION_HOVER_ENTER 9L +#undef android_view_MotionEvent_ACTION_HOVER_EXIT +#define android_view_MotionEvent_ACTION_HOVER_EXIT 10L +#undef android_view_MotionEvent_ACTION_POINTER_INDEX_MASK +#define android_view_MotionEvent_ACTION_POINTER_INDEX_MASK 65280L +#undef android_view_MotionEvent_ACTION_POINTER_INDEX_SHIFT +#define android_view_MotionEvent_ACTION_POINTER_INDEX_SHIFT 8L +#undef android_view_MotionEvent_ACTION_POINTER_1_DOWN +#define android_view_MotionEvent_ACTION_POINTER_1_DOWN 5L +#undef android_view_MotionEvent_ACTION_POINTER_2_DOWN +#define android_view_MotionEvent_ACTION_POINTER_2_DOWN 261L +#undef android_view_MotionEvent_ACTION_POINTER_3_DOWN +#define android_view_MotionEvent_ACTION_POINTER_3_DOWN 517L +#undef android_view_MotionEvent_ACTION_POINTER_1_UP +#define android_view_MotionEvent_ACTION_POINTER_1_UP 6L +#undef android_view_MotionEvent_ACTION_POINTER_2_UP +#define android_view_MotionEvent_ACTION_POINTER_2_UP 262L +#undef android_view_MotionEvent_ACTION_POINTER_3_UP +#define android_view_MotionEvent_ACTION_POINTER_3_UP 518L +#undef android_view_MotionEvent_ACTION_POINTER_ID_MASK +#define android_view_MotionEvent_ACTION_POINTER_ID_MASK 65280L +#undef android_view_MotionEvent_ACTION_POINTER_ID_SHIFT +#define android_view_MotionEvent_ACTION_POINTER_ID_SHIFT 8L +#undef android_view_MotionEvent_FLAG_WINDOW_IS_OBSCURED +#define android_view_MotionEvent_FLAG_WINDOW_IS_OBSCURED 1L +#undef android_view_MotionEvent_FLAG_TAINTED +#define android_view_MotionEvent_FLAG_TAINTED -2147483648L +#undef android_view_MotionEvent_EDGE_TOP +#define android_view_MotionEvent_EDGE_TOP 1L +#undef android_view_MotionEvent_EDGE_BOTTOM +#define android_view_MotionEvent_EDGE_BOTTOM 2L +#undef android_view_MotionEvent_EDGE_LEFT +#define android_view_MotionEvent_EDGE_LEFT 4L +#undef android_view_MotionEvent_EDGE_RIGHT +#define android_view_MotionEvent_EDGE_RIGHT 8L +#undef android_view_MotionEvent_AXIS_X +#define android_view_MotionEvent_AXIS_X 0L +#undef android_view_MotionEvent_AXIS_Y +#define android_view_MotionEvent_AXIS_Y 1L +#undef android_view_MotionEvent_AXIS_PRESSURE +#define android_view_MotionEvent_AXIS_PRESSURE 2L +#undef android_view_MotionEvent_AXIS_SIZE +#define android_view_MotionEvent_AXIS_SIZE 3L +#undef android_view_MotionEvent_AXIS_TOUCH_MAJOR +#define android_view_MotionEvent_AXIS_TOUCH_MAJOR 4L +#undef android_view_MotionEvent_AXIS_TOUCH_MINOR +#define android_view_MotionEvent_AXIS_TOUCH_MINOR 5L +#undef android_view_MotionEvent_AXIS_TOOL_MAJOR +#define android_view_MotionEvent_AXIS_TOOL_MAJOR 6L +#undef android_view_MotionEvent_AXIS_TOOL_MINOR +#define android_view_MotionEvent_AXIS_TOOL_MINOR 7L +#undef android_view_MotionEvent_AXIS_ORIENTATION +#define android_view_MotionEvent_AXIS_ORIENTATION 8L +#undef android_view_MotionEvent_AXIS_VSCROLL +#define android_view_MotionEvent_AXIS_VSCROLL 9L +#undef android_view_MotionEvent_AXIS_HSCROLL +#define android_view_MotionEvent_AXIS_HSCROLL 10L +#undef android_view_MotionEvent_AXIS_Z +#define android_view_MotionEvent_AXIS_Z 11L +#undef android_view_MotionEvent_AXIS_RX +#define android_view_MotionEvent_AXIS_RX 12L +#undef android_view_MotionEvent_AXIS_RY +#define android_view_MotionEvent_AXIS_RY 13L +#undef android_view_MotionEvent_AXIS_RZ +#define android_view_MotionEvent_AXIS_RZ 14L +#undef android_view_MotionEvent_AXIS_HAT_X +#define android_view_MotionEvent_AXIS_HAT_X 15L +#undef android_view_MotionEvent_AXIS_HAT_Y +#define android_view_MotionEvent_AXIS_HAT_Y 16L +#undef android_view_MotionEvent_AXIS_LTRIGGER +#define android_view_MotionEvent_AXIS_LTRIGGER 17L +#undef android_view_MotionEvent_AXIS_RTRIGGER +#define android_view_MotionEvent_AXIS_RTRIGGER 18L +#undef android_view_MotionEvent_AXIS_THROTTLE +#define android_view_MotionEvent_AXIS_THROTTLE 19L +#undef android_view_MotionEvent_AXIS_RUDDER +#define android_view_MotionEvent_AXIS_RUDDER 20L +#undef android_view_MotionEvent_AXIS_WHEEL +#define android_view_MotionEvent_AXIS_WHEEL 21L +#undef android_view_MotionEvent_AXIS_GAS +#define android_view_MotionEvent_AXIS_GAS 22L +#undef android_view_MotionEvent_AXIS_BRAKE +#define android_view_MotionEvent_AXIS_BRAKE 23L +#undef android_view_MotionEvent_AXIS_DISTANCE +#define android_view_MotionEvent_AXIS_DISTANCE 24L +#undef android_view_MotionEvent_AXIS_TILT +#define android_view_MotionEvent_AXIS_TILT 25L +#undef android_view_MotionEvent_AXIS_GENERIC_1 +#define android_view_MotionEvent_AXIS_GENERIC_1 32L +#undef android_view_MotionEvent_AXIS_GENERIC_2 +#define android_view_MotionEvent_AXIS_GENERIC_2 33L +#undef android_view_MotionEvent_AXIS_GENERIC_3 +#define android_view_MotionEvent_AXIS_GENERIC_3 34L +#undef android_view_MotionEvent_AXIS_GENERIC_4 +#define android_view_MotionEvent_AXIS_GENERIC_4 35L +#undef android_view_MotionEvent_AXIS_GENERIC_5 +#define android_view_MotionEvent_AXIS_GENERIC_5 36L +#undef android_view_MotionEvent_AXIS_GENERIC_6 +#define android_view_MotionEvent_AXIS_GENERIC_6 37L +#undef android_view_MotionEvent_AXIS_GENERIC_7 +#define android_view_MotionEvent_AXIS_GENERIC_7 38L +#undef android_view_MotionEvent_AXIS_GENERIC_8 +#define android_view_MotionEvent_AXIS_GENERIC_8 39L +#undef android_view_MotionEvent_AXIS_GENERIC_9 +#define android_view_MotionEvent_AXIS_GENERIC_9 40L +#undef android_view_MotionEvent_AXIS_GENERIC_10 +#define android_view_MotionEvent_AXIS_GENERIC_10 41L +#undef android_view_MotionEvent_AXIS_GENERIC_11 +#define android_view_MotionEvent_AXIS_GENERIC_11 42L +#undef android_view_MotionEvent_AXIS_GENERIC_12 +#define android_view_MotionEvent_AXIS_GENERIC_12 43L +#undef android_view_MotionEvent_AXIS_GENERIC_13 +#define android_view_MotionEvent_AXIS_GENERIC_13 44L +#undef android_view_MotionEvent_AXIS_GENERIC_14 +#define android_view_MotionEvent_AXIS_GENERIC_14 45L +#undef android_view_MotionEvent_AXIS_GENERIC_15 +#define android_view_MotionEvent_AXIS_GENERIC_15 46L +#undef android_view_MotionEvent_AXIS_GENERIC_16 +#define android_view_MotionEvent_AXIS_GENERIC_16 47L +#undef android_view_MotionEvent_BUTTON_PRIMARY +#define android_view_MotionEvent_BUTTON_PRIMARY 1L +#undef android_view_MotionEvent_BUTTON_SECONDARY +#define android_view_MotionEvent_BUTTON_SECONDARY 2L +#undef android_view_MotionEvent_BUTTON_TERTIARY +#define android_view_MotionEvent_BUTTON_TERTIARY 4L +#undef android_view_MotionEvent_BUTTON_BACK +#define android_view_MotionEvent_BUTTON_BACK 8L +#undef android_view_MotionEvent_BUTTON_FORWARD +#define android_view_MotionEvent_BUTTON_FORWARD 16L +#undef android_view_MotionEvent_TOOL_TYPE_UNKNOWN +#define android_view_MotionEvent_TOOL_TYPE_UNKNOWN 0L +#undef android_view_MotionEvent_TOOL_TYPE_FINGER +#define android_view_MotionEvent_TOOL_TYPE_FINGER 1L +#undef android_view_MotionEvent_TOOL_TYPE_STYLUS +#define android_view_MotionEvent_TOOL_TYPE_STYLUS 2L +#undef android_view_MotionEvent_TOOL_TYPE_MOUSE +#define android_view_MotionEvent_TOOL_TYPE_MOUSE 3L +#undef android_view_MotionEvent_TOOL_TYPE_ERASER +#define android_view_MotionEvent_TOOL_TYPE_ERASER 4L +#undef android_view_MotionEvent_HISTORY_CURRENT +#define android_view_MotionEvent_HISTORY_CURRENT -2147483648L +#undef android_view_MotionEvent_MAX_RECYCLED +#define android_view_MotionEvent_MAX_RECYCLED 10L +/* + * Class: android_view_MotionEvent + * Method: nativeInitialize + * Signature: (IIIIIIIIFFFFJJI[Landroid/view/MotionEvent/PointerProperties;[Landroid/view/MotionEvent/PointerCoords;)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeInitialize + (JNIEnv *, jclass, jint, jint, jint, jint, jint, jint, jint, jint, jfloat, jfloat, jfloat, jfloat, jlong, jlong, jint, jobjectArray, jobjectArray); + +/* + * Class: android_view_MotionEvent + * Method: nativeCopy + * Signature: (IIZ)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeCopy + (JNIEnv *, jclass, jint, jint, jboolean); + +/* + * Class: android_view_MotionEvent + * Method: nativeDispose + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeDispose + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeAddBatch + * Signature: (IJ[Landroid/view/MotionEvent/PointerCoords;I)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeAddBatch + (JNIEnv *, jclass, jint, jlong, jobjectArray, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetDeviceId + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetDeviceId + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetSource + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetSource + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeSetSource + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeSetSource + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetAction + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetAction + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeSetAction + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeSetAction + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeIsTouchEvent + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_android_view_MotionEvent_nativeIsTouchEvent + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetFlags + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetFlags + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeSetFlags + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeSetFlags + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetEdgeFlags + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetEdgeFlags + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeSetEdgeFlags + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeSetEdgeFlags + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetMetaState + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetMetaState + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetButtonState + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetButtonState + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeOffsetLocation + * Signature: (IFF)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeOffsetLocation + (JNIEnv *, jclass, jint, jfloat, jfloat); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetXOffset + * Signature: (I)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetXOffset + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetYOffset + * Signature: (I)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetYOffset + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetXPrecision + * Signature: (I)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetXPrecision + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetYPrecision + * Signature: (I)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetYPrecision + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetDownTimeNanos + * Signature: (I)J + */ +JNIEXPORT jlong JNICALL Java_android_view_MotionEvent_nativeGetDownTimeNanos + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeSetDownTimeNanos + * Signature: (IJ)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeSetDownTimeNanos + (JNIEnv *, jclass, jint, jlong); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetPointerCount + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetPointerCount + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetPointerId + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetPointerId + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetToolType + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetToolType + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeFindPointerIndex + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeFindPointerIndex + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetHistorySize + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_android_view_MotionEvent_nativeGetHistorySize + (JNIEnv *, jclass, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetEventTimeNanos + * Signature: (II)J + */ +JNIEXPORT jlong JNICALL Java_android_view_MotionEvent_nativeGetEventTimeNanos + (JNIEnv *, jclass, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetRawAxisValue + * Signature: (IIII)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetRawAxisValue + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetAxisValue + * Signature: (IIII)F + */ +JNIEXPORT jfloat JNICALL Java_android_view_MotionEvent_nativeGetAxisValue + (JNIEnv *, jclass, jint, jint, jint, jint); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetPointerCoords + * Signature: (IIILandroid/view/MotionEvent/PointerCoords;)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeGetPointerCoords + (JNIEnv *, jclass, jint, jint, jint, jobject); + +/* + * Class: android_view_MotionEvent + * Method: nativeGetPointerProperties + * Signature: (IILandroid/view/MotionEvent/PointerProperties;)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeGetPointerProperties + (JNIEnv *, jclass, jint, jint, jobject); + +/* + * Class: android_view_MotionEvent + * Method: nativeScale + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeScale + (JNIEnv *, jclass, jint, jfloat); + +/* + * Class: android_view_MotionEvent + * Method: nativeTransform + * Signature: (ILandroid/graphics/Matrix;)V + */ +JNIEXPORT void JNICALL Java_android_view_MotionEvent_nativeTransform + (JNIEnv *, jclass, jint, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_view_View.h b/src/api-impl-jni/generated_headers/android_view_View.h new file mode 100644 index 00000000..5515b336 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_view_View.h @@ -0,0 +1,219 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_view_View */ + +#ifndef _Included_android_view_View +#define _Included_android_view_View +#ifdef __cplusplus +extern "C" { +#endif +#undef android_view_View_NO_ID +#define android_view_View_NO_ID -1L +#undef android_view_View_NOT_FOCUSABLE +#define android_view_View_NOT_FOCUSABLE 0L +#undef android_view_View_FOCUSABLE +#define android_view_View_FOCUSABLE 1L +#undef android_view_View_FOCUSABLE_MASK +#define android_view_View_FOCUSABLE_MASK 1L +#undef android_view_View_FITS_SYSTEM_WINDOWS +#define android_view_View_FITS_SYSTEM_WINDOWS 2L +#undef android_view_View_VISIBLE +#define android_view_View_VISIBLE 0L +#undef android_view_View_INVISIBLE +#define android_view_View_INVISIBLE 4L +#undef android_view_View_GONE +#define android_view_View_GONE 8L +#undef android_view_View_VISIBILITY_MASK +#define android_view_View_VISIBILITY_MASK 12L +#undef android_view_View_ENABLED +#define android_view_View_ENABLED 0L +#undef android_view_View_DISABLED +#define android_view_View_DISABLED 32L +#undef android_view_View_ENABLED_MASK +#define android_view_View_ENABLED_MASK 32L +#undef android_view_View_WILL_NOT_DRAW +#define android_view_View_WILL_NOT_DRAW 128L +#undef android_view_View_DRAW_MASK +#define android_view_View_DRAW_MASK 128L +#undef android_view_View_SCROLLBARS_NONE +#define android_view_View_SCROLLBARS_NONE 0L +#undef android_view_View_SCROLLBARS_HORIZONTAL +#define android_view_View_SCROLLBARS_HORIZONTAL 256L +#undef android_view_View_SCROLLBARS_VERTICAL +#define android_view_View_SCROLLBARS_VERTICAL 512L +#undef android_view_View_SCROLLBARS_MASK +#define android_view_View_SCROLLBARS_MASK 768L +#undef android_view_View_FILTER_TOUCHES_WHEN_OBSCURED +#define android_view_View_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_view_View_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_view_View_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_view_View_FADING_EDGE_NONE +#define android_view_View_FADING_EDGE_NONE 0L +#undef android_view_View_FADING_EDGE_HORIZONTAL +#define android_view_View_FADING_EDGE_HORIZONTAL 4096L +#undef android_view_View_FADING_EDGE_VERTICAL +#define android_view_View_FADING_EDGE_VERTICAL 8192L +#undef android_view_View_FADING_EDGE_MASK +#define android_view_View_FADING_EDGE_MASK 12288L +#undef android_view_View_CLICKABLE +#define android_view_View_CLICKABLE 16384L +#undef android_view_View_DRAWING_CACHE_ENABLED +#define android_view_View_DRAWING_CACHE_ENABLED 32768L +#undef android_view_View_SAVE_DISABLED +#define android_view_View_SAVE_DISABLED 65536L +#undef android_view_View_SAVE_DISABLED_MASK +#define android_view_View_SAVE_DISABLED_MASK 65536L +#undef android_view_View_WILL_NOT_CACHE_DRAWING +#define android_view_View_WILL_NOT_CACHE_DRAWING 131072L +#undef android_view_View_FOCUSABLE_IN_TOUCH_MODE +#define android_view_View_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_view_View_DRAWING_CACHE_QUALITY_LOW +#define android_view_View_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_view_View_DRAWING_CACHE_QUALITY_HIGH +#define android_view_View_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_view_View_DRAWING_CACHE_QUALITY_AUTO +#define android_view_View_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_view_View_DRAWING_CACHE_QUALITY_MASK +#define android_view_View_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_view_View_LONG_CLICKABLE +#define android_view_View_LONG_CLICKABLE 2097152L +#undef android_view_View_DUPLICATE_PARENT_STATE +#define android_view_View_DUPLICATE_PARENT_STATE 4194304L +#undef android_view_View_SCROLLBARS_INSIDE_OVERLAY +#define android_view_View_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_view_View_SCROLLBARS_INSIDE_INSET +#define android_view_View_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_view_View_SCROLLBARS_OUTSIDE_OVERLAY +#define android_view_View_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_view_View_SCROLLBARS_OUTSIDE_INSET +#define android_view_View_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_view_View_SCROLLBARS_INSET_MASK +#define android_view_View_SCROLLBARS_INSET_MASK 16777216L +#undef android_view_View_SCROLLBARS_OUTSIDE_MASK +#define android_view_View_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_view_View_SCROLLBARS_STYLE_MASK +#define android_view_View_SCROLLBARS_STYLE_MASK 50331648L +#undef android_view_View_KEEP_SCREEN_ON +#define android_view_View_KEEP_SCREEN_ON 67108864L +#undef android_view_View_SOUND_EFFECTS_ENABLED +#define android_view_View_SOUND_EFFECTS_ENABLED 134217728L +#undef android_view_View_HAPTIC_FEEDBACK_ENABLED +#define android_view_View_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_view_View_PARENT_SAVE_DISABLED +#define android_view_View_PARENT_SAVE_DISABLED 536870912L +#undef android_view_View_PARENT_SAVE_DISABLED_MASK +#define android_view_View_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_view_View_FOCUSABLES_ALL +#define android_view_View_FOCUSABLES_ALL 0L +#undef android_view_View_FOCUSABLES_TOUCH_MODE +#define android_view_View_FOCUSABLES_TOUCH_MODE 1L +#undef android_view_View_FOCUS_BACKWARD +#define android_view_View_FOCUS_BACKWARD 1L +#undef android_view_View_FOCUS_FORWARD +#define android_view_View_FOCUS_FORWARD 2L +#undef android_view_View_FOCUS_LEFT +#define android_view_View_FOCUS_LEFT 17L +#undef android_view_View_FOCUS_UP +#define android_view_View_FOCUS_UP 33L +#undef android_view_View_FOCUS_RIGHT +#define android_view_View_FOCUS_RIGHT 66L +#undef android_view_View_FOCUS_DOWN +#define android_view_View_FOCUS_DOWN 130L +#undef android_view_View_MEASURED_SIZE_MASK +#define android_view_View_MEASURED_SIZE_MASK 16777215L +#undef android_view_View_MEASURED_STATE_MASK +#define android_view_View_MEASURED_STATE_MASK -16777216L +#undef android_view_View_MEASURED_HEIGHT_STATE_SHIFT +#define android_view_View_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_view_View_MEASURED_STATE_TOO_SMALL +#define android_view_View_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_view_View_PFLAG2_DRAG_CAN_ACCEPT +#define android_view_View_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_view_View_PFLAG2_DRAG_HOVERED +#define android_view_View_PFLAG2_DRAG_HOVERED 2L +#undef android_view_View_LAYOUT_DIRECTION_LTR +#define android_view_View_LAYOUT_DIRECTION_LTR 0L +#undef android_view_View_LAYOUT_DIRECTION_RTL +#define android_view_View_LAYOUT_DIRECTION_RTL 1L +#undef android_view_View_LAYOUT_DIRECTION_INHERIT +#define android_view_View_LAYOUT_DIRECTION_INHERIT 2L +#undef android_view_View_LAYOUT_DIRECTION_LOCALE +#define android_view_View_LAYOUT_DIRECTION_LOCALE 3L +#undef android_view_View_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_view_View_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_view_View_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_view_View_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_view_View_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_view_View + * Method: setGravity + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_view_View_setGravity + (JNIEnv *, jobject, jint); + +/* + * Class: android_view_View + * Method: setOnTouchListener + * Signature: (Landroid/view/View/OnTouchListener;)V + */ +JNIEXPORT void JNICALL Java_android_view_View_setOnTouchListener + (JNIEnv *, jobject, jobject); + +/* + * Class: android_view_View + * Method: setOnClickListener + * Signature: (Landroid/view/View/OnClickListener;)V + */ +JNIEXPORT void JNICALL Java_android_view_View_setOnClickListener + (JNIEnv *, jobject, jobject); + +/* + * Class: android_view_View + * Method: getWidth + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_view_View_getWidth + (JNIEnv *, jobject); + +/* + * Class: android_view_View + * Method: getHeight + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_android_view_View_getHeight + (JNIEnv *, jobject); + +/* + * Class: android_view_View + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_view_View_native_1constructor + (JNIEnv *, jobject, jobject); + +/* + * Class: android_view_View + * Method: native_set_size_request + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_android_view_View_native_1set_1size_1request + (JNIEnv *, jobject, jint, jint); + +/* + * Class: android_view_View + * Method: setVisibility + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_view_View_setVisibility + (JNIEnv *, jobject, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_view_ViewGroup.h b/src/api-impl-jni/generated_headers/android_view_ViewGroup.h new file mode 100644 index 00000000..d78ffe05 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_view_ViewGroup.h @@ -0,0 +1,179 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_view_ViewGroup */ + +#ifndef _Included_android_view_ViewGroup +#define _Included_android_view_ViewGroup +#ifdef __cplusplus +extern "C" { +#endif +#undef android_view_ViewGroup_NO_ID +#define android_view_ViewGroup_NO_ID -1L +#undef android_view_ViewGroup_NOT_FOCUSABLE +#define android_view_ViewGroup_NOT_FOCUSABLE 0L +#undef android_view_ViewGroup_FOCUSABLE +#define android_view_ViewGroup_FOCUSABLE 1L +#undef android_view_ViewGroup_FOCUSABLE_MASK +#define android_view_ViewGroup_FOCUSABLE_MASK 1L +#undef android_view_ViewGroup_FITS_SYSTEM_WINDOWS +#define android_view_ViewGroup_FITS_SYSTEM_WINDOWS 2L +#undef android_view_ViewGroup_VISIBLE +#define android_view_ViewGroup_VISIBLE 0L +#undef android_view_ViewGroup_INVISIBLE +#define android_view_ViewGroup_INVISIBLE 4L +#undef android_view_ViewGroup_GONE +#define android_view_ViewGroup_GONE 8L +#undef android_view_ViewGroup_VISIBILITY_MASK +#define android_view_ViewGroup_VISIBILITY_MASK 12L +#undef android_view_ViewGroup_ENABLED +#define android_view_ViewGroup_ENABLED 0L +#undef android_view_ViewGroup_DISABLED +#define android_view_ViewGroup_DISABLED 32L +#undef android_view_ViewGroup_ENABLED_MASK +#define android_view_ViewGroup_ENABLED_MASK 32L +#undef android_view_ViewGroup_WILL_NOT_DRAW +#define android_view_ViewGroup_WILL_NOT_DRAW 128L +#undef android_view_ViewGroup_DRAW_MASK +#define android_view_ViewGroup_DRAW_MASK 128L +#undef android_view_ViewGroup_SCROLLBARS_NONE +#define android_view_ViewGroup_SCROLLBARS_NONE 0L +#undef android_view_ViewGroup_SCROLLBARS_HORIZONTAL +#define android_view_ViewGroup_SCROLLBARS_HORIZONTAL 256L +#undef android_view_ViewGroup_SCROLLBARS_VERTICAL +#define android_view_ViewGroup_SCROLLBARS_VERTICAL 512L +#undef android_view_ViewGroup_SCROLLBARS_MASK +#define android_view_ViewGroup_SCROLLBARS_MASK 768L +#undef android_view_ViewGroup_FILTER_TOUCHES_WHEN_OBSCURED +#define android_view_ViewGroup_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_view_ViewGroup_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_view_ViewGroup_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_view_ViewGroup_FADING_EDGE_NONE +#define android_view_ViewGroup_FADING_EDGE_NONE 0L +#undef android_view_ViewGroup_FADING_EDGE_HORIZONTAL +#define android_view_ViewGroup_FADING_EDGE_HORIZONTAL 4096L +#undef android_view_ViewGroup_FADING_EDGE_VERTICAL +#define android_view_ViewGroup_FADING_EDGE_VERTICAL 8192L +#undef android_view_ViewGroup_FADING_EDGE_MASK +#define android_view_ViewGroup_FADING_EDGE_MASK 12288L +#undef android_view_ViewGroup_CLICKABLE +#define android_view_ViewGroup_CLICKABLE 16384L +#undef android_view_ViewGroup_DRAWING_CACHE_ENABLED +#define android_view_ViewGroup_DRAWING_CACHE_ENABLED 32768L +#undef android_view_ViewGroup_SAVE_DISABLED +#define android_view_ViewGroup_SAVE_DISABLED 65536L +#undef android_view_ViewGroup_SAVE_DISABLED_MASK +#define android_view_ViewGroup_SAVE_DISABLED_MASK 65536L +#undef android_view_ViewGroup_WILL_NOT_CACHE_DRAWING +#define android_view_ViewGroup_WILL_NOT_CACHE_DRAWING 131072L +#undef android_view_ViewGroup_FOCUSABLE_IN_TOUCH_MODE +#define android_view_ViewGroup_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_view_ViewGroup_DRAWING_CACHE_QUALITY_LOW +#define android_view_ViewGroup_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_view_ViewGroup_DRAWING_CACHE_QUALITY_HIGH +#define android_view_ViewGroup_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_view_ViewGroup_DRAWING_CACHE_QUALITY_AUTO +#define android_view_ViewGroup_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_view_ViewGroup_DRAWING_CACHE_QUALITY_MASK +#define android_view_ViewGroup_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_view_ViewGroup_LONG_CLICKABLE +#define android_view_ViewGroup_LONG_CLICKABLE 2097152L +#undef android_view_ViewGroup_DUPLICATE_PARENT_STATE +#define android_view_ViewGroup_DUPLICATE_PARENT_STATE 4194304L +#undef android_view_ViewGroup_SCROLLBARS_INSIDE_OVERLAY +#define android_view_ViewGroup_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_view_ViewGroup_SCROLLBARS_INSIDE_INSET +#define android_view_ViewGroup_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_view_ViewGroup_SCROLLBARS_OUTSIDE_OVERLAY +#define android_view_ViewGroup_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_view_ViewGroup_SCROLLBARS_OUTSIDE_INSET +#define android_view_ViewGroup_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_view_ViewGroup_SCROLLBARS_INSET_MASK +#define android_view_ViewGroup_SCROLLBARS_INSET_MASK 16777216L +#undef android_view_ViewGroup_SCROLLBARS_OUTSIDE_MASK +#define android_view_ViewGroup_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_view_ViewGroup_SCROLLBARS_STYLE_MASK +#define android_view_ViewGroup_SCROLLBARS_STYLE_MASK 50331648L +#undef android_view_ViewGroup_KEEP_SCREEN_ON +#define android_view_ViewGroup_KEEP_SCREEN_ON 67108864L +#undef android_view_ViewGroup_SOUND_EFFECTS_ENABLED +#define android_view_ViewGroup_SOUND_EFFECTS_ENABLED 134217728L +#undef android_view_ViewGroup_HAPTIC_FEEDBACK_ENABLED +#define android_view_ViewGroup_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_view_ViewGroup_PARENT_SAVE_DISABLED +#define android_view_ViewGroup_PARENT_SAVE_DISABLED 536870912L +#undef android_view_ViewGroup_PARENT_SAVE_DISABLED_MASK +#define android_view_ViewGroup_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_view_ViewGroup_FOCUSABLES_ALL +#define android_view_ViewGroup_FOCUSABLES_ALL 0L +#undef android_view_ViewGroup_FOCUSABLES_TOUCH_MODE +#define android_view_ViewGroup_FOCUSABLES_TOUCH_MODE 1L +#undef android_view_ViewGroup_FOCUS_BACKWARD +#define android_view_ViewGroup_FOCUS_BACKWARD 1L +#undef android_view_ViewGroup_FOCUS_FORWARD +#define android_view_ViewGroup_FOCUS_FORWARD 2L +#undef android_view_ViewGroup_FOCUS_LEFT +#define android_view_ViewGroup_FOCUS_LEFT 17L +#undef android_view_ViewGroup_FOCUS_UP +#define android_view_ViewGroup_FOCUS_UP 33L +#undef android_view_ViewGroup_FOCUS_RIGHT +#define android_view_ViewGroup_FOCUS_RIGHT 66L +#undef android_view_ViewGroup_FOCUS_DOWN +#define android_view_ViewGroup_FOCUS_DOWN 130L +#undef android_view_ViewGroup_MEASURED_SIZE_MASK +#define android_view_ViewGroup_MEASURED_SIZE_MASK 16777215L +#undef android_view_ViewGroup_MEASURED_STATE_MASK +#define android_view_ViewGroup_MEASURED_STATE_MASK -16777216L +#undef android_view_ViewGroup_MEASURED_HEIGHT_STATE_SHIFT +#define android_view_ViewGroup_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_view_ViewGroup_MEASURED_STATE_TOO_SMALL +#define android_view_ViewGroup_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_view_ViewGroup_PFLAG2_DRAG_CAN_ACCEPT +#define android_view_ViewGroup_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_view_ViewGroup_PFLAG2_DRAG_HOVERED +#define android_view_ViewGroup_PFLAG2_DRAG_HOVERED 2L +#undef android_view_ViewGroup_LAYOUT_DIRECTION_LTR +#define android_view_ViewGroup_LAYOUT_DIRECTION_LTR 0L +#undef android_view_ViewGroup_LAYOUT_DIRECTION_RTL +#define android_view_ViewGroup_LAYOUT_DIRECTION_RTL 1L +#undef android_view_ViewGroup_LAYOUT_DIRECTION_INHERIT +#define android_view_ViewGroup_LAYOUT_DIRECTION_INHERIT 2L +#undef android_view_ViewGroup_LAYOUT_DIRECTION_LOCALE +#define android_view_ViewGroup_LAYOUT_DIRECTION_LOCALE 3L +#undef android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_view_ViewGroup_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_view_ViewGroup + * Method: addView + * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_view_ViewGroup_addView + (JNIEnv *, jobject, jobject, jint, jobject); + +/* + * Class: android_view_ViewGroup + * Method: removeView + * Signature: (Landroid/view/View;)V + */ +JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeView + (JNIEnv *, jobject, jobject); + +/* + * Class: android_view_ViewGroup + * Method: removeAllViews + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeAllViews + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_view_Window.h b/src/api-impl-jni/generated_headers/android_view_Window.h new file mode 100644 index 00000000..0634d39b --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_view_Window.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_view_Window */ + +#ifndef _Included_android_view_Window +#define _Included_android_view_Window +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: android_view_Window + * Method: set_widget_as_root + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_android_view_Window_set_1widget_1as_1root + (JNIEnv *, jobject, jlong, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h b/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h new file mode 100644 index 00000000..99745de1 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h @@ -0,0 +1,179 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_FrameLayout */ + +#ifndef _Included_android_widget_FrameLayout +#define _Included_android_widget_FrameLayout +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_FrameLayout_NO_ID +#define android_widget_FrameLayout_NO_ID -1L +#undef android_widget_FrameLayout_NOT_FOCUSABLE +#define android_widget_FrameLayout_NOT_FOCUSABLE 0L +#undef android_widget_FrameLayout_FOCUSABLE +#define android_widget_FrameLayout_FOCUSABLE 1L +#undef android_widget_FrameLayout_FOCUSABLE_MASK +#define android_widget_FrameLayout_FOCUSABLE_MASK 1L +#undef android_widget_FrameLayout_FITS_SYSTEM_WINDOWS +#define android_widget_FrameLayout_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_FrameLayout_VISIBLE +#define android_widget_FrameLayout_VISIBLE 0L +#undef android_widget_FrameLayout_INVISIBLE +#define android_widget_FrameLayout_INVISIBLE 4L +#undef android_widget_FrameLayout_GONE +#define android_widget_FrameLayout_GONE 8L +#undef android_widget_FrameLayout_VISIBILITY_MASK +#define android_widget_FrameLayout_VISIBILITY_MASK 12L +#undef android_widget_FrameLayout_ENABLED +#define android_widget_FrameLayout_ENABLED 0L +#undef android_widget_FrameLayout_DISABLED +#define android_widget_FrameLayout_DISABLED 32L +#undef android_widget_FrameLayout_ENABLED_MASK +#define android_widget_FrameLayout_ENABLED_MASK 32L +#undef android_widget_FrameLayout_WILL_NOT_DRAW +#define android_widget_FrameLayout_WILL_NOT_DRAW 128L +#undef android_widget_FrameLayout_DRAW_MASK +#define android_widget_FrameLayout_DRAW_MASK 128L +#undef android_widget_FrameLayout_SCROLLBARS_NONE +#define android_widget_FrameLayout_SCROLLBARS_NONE 0L +#undef android_widget_FrameLayout_SCROLLBARS_HORIZONTAL +#define android_widget_FrameLayout_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_FrameLayout_SCROLLBARS_VERTICAL +#define android_widget_FrameLayout_SCROLLBARS_VERTICAL 512L +#undef android_widget_FrameLayout_SCROLLBARS_MASK +#define android_widget_FrameLayout_SCROLLBARS_MASK 768L +#undef android_widget_FrameLayout_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_FrameLayout_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_FrameLayout_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_FrameLayout_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_FrameLayout_FADING_EDGE_NONE +#define android_widget_FrameLayout_FADING_EDGE_NONE 0L +#undef android_widget_FrameLayout_FADING_EDGE_HORIZONTAL +#define android_widget_FrameLayout_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_FrameLayout_FADING_EDGE_VERTICAL +#define android_widget_FrameLayout_FADING_EDGE_VERTICAL 8192L +#undef android_widget_FrameLayout_FADING_EDGE_MASK +#define android_widget_FrameLayout_FADING_EDGE_MASK 12288L +#undef android_widget_FrameLayout_CLICKABLE +#define android_widget_FrameLayout_CLICKABLE 16384L +#undef android_widget_FrameLayout_DRAWING_CACHE_ENABLED +#define android_widget_FrameLayout_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_FrameLayout_SAVE_DISABLED +#define android_widget_FrameLayout_SAVE_DISABLED 65536L +#undef android_widget_FrameLayout_SAVE_DISABLED_MASK +#define android_widget_FrameLayout_SAVE_DISABLED_MASK 65536L +#undef android_widget_FrameLayout_WILL_NOT_CACHE_DRAWING +#define android_widget_FrameLayout_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_FrameLayout_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_FrameLayout_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_FrameLayout_DRAWING_CACHE_QUALITY_LOW +#define android_widget_FrameLayout_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_FrameLayout_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_FrameLayout_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_FrameLayout_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_FrameLayout_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_FrameLayout_DRAWING_CACHE_QUALITY_MASK +#define android_widget_FrameLayout_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_FrameLayout_LONG_CLICKABLE +#define android_widget_FrameLayout_LONG_CLICKABLE 2097152L +#undef android_widget_FrameLayout_DUPLICATE_PARENT_STATE +#define android_widget_FrameLayout_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_FrameLayout_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_FrameLayout_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_FrameLayout_SCROLLBARS_INSIDE_INSET +#define android_widget_FrameLayout_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_FrameLayout_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_FrameLayout_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_FrameLayout_SCROLLBARS_OUTSIDE_INSET +#define android_widget_FrameLayout_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_FrameLayout_SCROLLBARS_INSET_MASK +#define android_widget_FrameLayout_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_FrameLayout_SCROLLBARS_OUTSIDE_MASK +#define android_widget_FrameLayout_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_FrameLayout_SCROLLBARS_STYLE_MASK +#define android_widget_FrameLayout_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_FrameLayout_KEEP_SCREEN_ON +#define android_widget_FrameLayout_KEEP_SCREEN_ON 67108864L +#undef android_widget_FrameLayout_SOUND_EFFECTS_ENABLED +#define android_widget_FrameLayout_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_FrameLayout_HAPTIC_FEEDBACK_ENABLED +#define android_widget_FrameLayout_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_FrameLayout_PARENT_SAVE_DISABLED +#define android_widget_FrameLayout_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_FrameLayout_PARENT_SAVE_DISABLED_MASK +#define android_widget_FrameLayout_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_FrameLayout_FOCUSABLES_ALL +#define android_widget_FrameLayout_FOCUSABLES_ALL 0L +#undef android_widget_FrameLayout_FOCUSABLES_TOUCH_MODE +#define android_widget_FrameLayout_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_FrameLayout_FOCUS_BACKWARD +#define android_widget_FrameLayout_FOCUS_BACKWARD 1L +#undef android_widget_FrameLayout_FOCUS_FORWARD +#define android_widget_FrameLayout_FOCUS_FORWARD 2L +#undef android_widget_FrameLayout_FOCUS_LEFT +#define android_widget_FrameLayout_FOCUS_LEFT 17L +#undef android_widget_FrameLayout_FOCUS_UP +#define android_widget_FrameLayout_FOCUS_UP 33L +#undef android_widget_FrameLayout_FOCUS_RIGHT +#define android_widget_FrameLayout_FOCUS_RIGHT 66L +#undef android_widget_FrameLayout_FOCUS_DOWN +#define android_widget_FrameLayout_FOCUS_DOWN 130L +#undef android_widget_FrameLayout_MEASURED_SIZE_MASK +#define android_widget_FrameLayout_MEASURED_SIZE_MASK 16777215L +#undef android_widget_FrameLayout_MEASURED_STATE_MASK +#define android_widget_FrameLayout_MEASURED_STATE_MASK -16777216L +#undef android_widget_FrameLayout_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_FrameLayout_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_FrameLayout_MEASURED_STATE_TOO_SMALL +#define android_widget_FrameLayout_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_FrameLayout_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_FrameLayout_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_FrameLayout_PFLAG2_DRAG_HOVERED +#define android_widget_FrameLayout_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_FrameLayout_LAYOUT_DIRECTION_LTR +#define android_widget_FrameLayout_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_FrameLayout_LAYOUT_DIRECTION_RTL +#define android_widget_FrameLayout_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_FrameLayout_LAYOUT_DIRECTION_INHERIT +#define android_widget_FrameLayout_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_FrameLayout_LAYOUT_DIRECTION_LOCALE +#define android_widget_FrameLayout_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_FrameLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_FrameLayout + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_FrameLayout + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_FrameLayout + * Method: addView + * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_addView + (JNIEnv *, jobject, jobject, jint, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_ImageView.h b/src/api-impl-jni/generated_headers/android_widget_ImageView.h new file mode 100644 index 00000000..74d230c9 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_ImageView.h @@ -0,0 +1,171 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_ImageView */ + +#ifndef _Included_android_widget_ImageView +#define _Included_android_widget_ImageView +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_ImageView_NO_ID +#define android_widget_ImageView_NO_ID -1L +#undef android_widget_ImageView_NOT_FOCUSABLE +#define android_widget_ImageView_NOT_FOCUSABLE 0L +#undef android_widget_ImageView_FOCUSABLE +#define android_widget_ImageView_FOCUSABLE 1L +#undef android_widget_ImageView_FOCUSABLE_MASK +#define android_widget_ImageView_FOCUSABLE_MASK 1L +#undef android_widget_ImageView_FITS_SYSTEM_WINDOWS +#define android_widget_ImageView_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_ImageView_VISIBLE +#define android_widget_ImageView_VISIBLE 0L +#undef android_widget_ImageView_INVISIBLE +#define android_widget_ImageView_INVISIBLE 4L +#undef android_widget_ImageView_GONE +#define android_widget_ImageView_GONE 8L +#undef android_widget_ImageView_VISIBILITY_MASK +#define android_widget_ImageView_VISIBILITY_MASK 12L +#undef android_widget_ImageView_ENABLED +#define android_widget_ImageView_ENABLED 0L +#undef android_widget_ImageView_DISABLED +#define android_widget_ImageView_DISABLED 32L +#undef android_widget_ImageView_ENABLED_MASK +#define android_widget_ImageView_ENABLED_MASK 32L +#undef android_widget_ImageView_WILL_NOT_DRAW +#define android_widget_ImageView_WILL_NOT_DRAW 128L +#undef android_widget_ImageView_DRAW_MASK +#define android_widget_ImageView_DRAW_MASK 128L +#undef android_widget_ImageView_SCROLLBARS_NONE +#define android_widget_ImageView_SCROLLBARS_NONE 0L +#undef android_widget_ImageView_SCROLLBARS_HORIZONTAL +#define android_widget_ImageView_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_ImageView_SCROLLBARS_VERTICAL +#define android_widget_ImageView_SCROLLBARS_VERTICAL 512L +#undef android_widget_ImageView_SCROLLBARS_MASK +#define android_widget_ImageView_SCROLLBARS_MASK 768L +#undef android_widget_ImageView_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_ImageView_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_ImageView_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_ImageView_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_ImageView_FADING_EDGE_NONE +#define android_widget_ImageView_FADING_EDGE_NONE 0L +#undef android_widget_ImageView_FADING_EDGE_HORIZONTAL +#define android_widget_ImageView_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_ImageView_FADING_EDGE_VERTICAL +#define android_widget_ImageView_FADING_EDGE_VERTICAL 8192L +#undef android_widget_ImageView_FADING_EDGE_MASK +#define android_widget_ImageView_FADING_EDGE_MASK 12288L +#undef android_widget_ImageView_CLICKABLE +#define android_widget_ImageView_CLICKABLE 16384L +#undef android_widget_ImageView_DRAWING_CACHE_ENABLED +#define android_widget_ImageView_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_ImageView_SAVE_DISABLED +#define android_widget_ImageView_SAVE_DISABLED 65536L +#undef android_widget_ImageView_SAVE_DISABLED_MASK +#define android_widget_ImageView_SAVE_DISABLED_MASK 65536L +#undef android_widget_ImageView_WILL_NOT_CACHE_DRAWING +#define android_widget_ImageView_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_ImageView_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_ImageView_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_ImageView_DRAWING_CACHE_QUALITY_LOW +#define android_widget_ImageView_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_ImageView_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_ImageView_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_ImageView_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_ImageView_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_ImageView_DRAWING_CACHE_QUALITY_MASK +#define android_widget_ImageView_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_ImageView_LONG_CLICKABLE +#define android_widget_ImageView_LONG_CLICKABLE 2097152L +#undef android_widget_ImageView_DUPLICATE_PARENT_STATE +#define android_widget_ImageView_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_ImageView_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_ImageView_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_ImageView_SCROLLBARS_INSIDE_INSET +#define android_widget_ImageView_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_ImageView_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_ImageView_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_ImageView_SCROLLBARS_OUTSIDE_INSET +#define android_widget_ImageView_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_ImageView_SCROLLBARS_INSET_MASK +#define android_widget_ImageView_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_ImageView_SCROLLBARS_OUTSIDE_MASK +#define android_widget_ImageView_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_ImageView_SCROLLBARS_STYLE_MASK +#define android_widget_ImageView_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_ImageView_KEEP_SCREEN_ON +#define android_widget_ImageView_KEEP_SCREEN_ON 67108864L +#undef android_widget_ImageView_SOUND_EFFECTS_ENABLED +#define android_widget_ImageView_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_ImageView_HAPTIC_FEEDBACK_ENABLED +#define android_widget_ImageView_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_ImageView_PARENT_SAVE_DISABLED +#define android_widget_ImageView_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_ImageView_PARENT_SAVE_DISABLED_MASK +#define android_widget_ImageView_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_ImageView_FOCUSABLES_ALL +#define android_widget_ImageView_FOCUSABLES_ALL 0L +#undef android_widget_ImageView_FOCUSABLES_TOUCH_MODE +#define android_widget_ImageView_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_ImageView_FOCUS_BACKWARD +#define android_widget_ImageView_FOCUS_BACKWARD 1L +#undef android_widget_ImageView_FOCUS_FORWARD +#define android_widget_ImageView_FOCUS_FORWARD 2L +#undef android_widget_ImageView_FOCUS_LEFT +#define android_widget_ImageView_FOCUS_LEFT 17L +#undef android_widget_ImageView_FOCUS_UP +#define android_widget_ImageView_FOCUS_UP 33L +#undef android_widget_ImageView_FOCUS_RIGHT +#define android_widget_ImageView_FOCUS_RIGHT 66L +#undef android_widget_ImageView_FOCUS_DOWN +#define android_widget_ImageView_FOCUS_DOWN 130L +#undef android_widget_ImageView_MEASURED_SIZE_MASK +#define android_widget_ImageView_MEASURED_SIZE_MASK 16777215L +#undef android_widget_ImageView_MEASURED_STATE_MASK +#define android_widget_ImageView_MEASURED_STATE_MASK -16777216L +#undef android_widget_ImageView_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_ImageView_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_ImageView_MEASURED_STATE_TOO_SMALL +#define android_widget_ImageView_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_ImageView_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_ImageView_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_ImageView_PFLAG2_DRAG_HOVERED +#define android_widget_ImageView_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_ImageView_LAYOUT_DIRECTION_LTR +#define android_widget_ImageView_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_ImageView_LAYOUT_DIRECTION_RTL +#define android_widget_ImageView_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_ImageView_LAYOUT_DIRECTION_INHERIT +#define android_widget_ImageView_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_ImageView_LAYOUT_DIRECTION_LOCALE +#define android_widget_ImageView_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_ImageView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_ImageView + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_ImageView + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h b/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h new file mode 100644 index 00000000..f6594b13 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h @@ -0,0 +1,203 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_LinearLayout */ + +#ifndef _Included_android_widget_LinearLayout +#define _Included_android_widget_LinearLayout +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_LinearLayout_NO_ID +#define android_widget_LinearLayout_NO_ID -1L +#undef android_widget_LinearLayout_NOT_FOCUSABLE +#define android_widget_LinearLayout_NOT_FOCUSABLE 0L +#undef android_widget_LinearLayout_FOCUSABLE +#define android_widget_LinearLayout_FOCUSABLE 1L +#undef android_widget_LinearLayout_FOCUSABLE_MASK +#define android_widget_LinearLayout_FOCUSABLE_MASK 1L +#undef android_widget_LinearLayout_FITS_SYSTEM_WINDOWS +#define android_widget_LinearLayout_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_LinearLayout_VISIBLE +#define android_widget_LinearLayout_VISIBLE 0L +#undef android_widget_LinearLayout_INVISIBLE +#define android_widget_LinearLayout_INVISIBLE 4L +#undef android_widget_LinearLayout_GONE +#define android_widget_LinearLayout_GONE 8L +#undef android_widget_LinearLayout_VISIBILITY_MASK +#define android_widget_LinearLayout_VISIBILITY_MASK 12L +#undef android_widget_LinearLayout_ENABLED +#define android_widget_LinearLayout_ENABLED 0L +#undef android_widget_LinearLayout_DISABLED +#define android_widget_LinearLayout_DISABLED 32L +#undef android_widget_LinearLayout_ENABLED_MASK +#define android_widget_LinearLayout_ENABLED_MASK 32L +#undef android_widget_LinearLayout_WILL_NOT_DRAW +#define android_widget_LinearLayout_WILL_NOT_DRAW 128L +#undef android_widget_LinearLayout_DRAW_MASK +#define android_widget_LinearLayout_DRAW_MASK 128L +#undef android_widget_LinearLayout_SCROLLBARS_NONE +#define android_widget_LinearLayout_SCROLLBARS_NONE 0L +#undef android_widget_LinearLayout_SCROLLBARS_HORIZONTAL +#define android_widget_LinearLayout_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_LinearLayout_SCROLLBARS_VERTICAL +#define android_widget_LinearLayout_SCROLLBARS_VERTICAL 512L +#undef android_widget_LinearLayout_SCROLLBARS_MASK +#define android_widget_LinearLayout_SCROLLBARS_MASK 768L +#undef android_widget_LinearLayout_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_LinearLayout_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_LinearLayout_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_LinearLayout_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_LinearLayout_FADING_EDGE_NONE +#define android_widget_LinearLayout_FADING_EDGE_NONE 0L +#undef android_widget_LinearLayout_FADING_EDGE_HORIZONTAL +#define android_widget_LinearLayout_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_LinearLayout_FADING_EDGE_VERTICAL +#define android_widget_LinearLayout_FADING_EDGE_VERTICAL 8192L +#undef android_widget_LinearLayout_FADING_EDGE_MASK +#define android_widget_LinearLayout_FADING_EDGE_MASK 12288L +#undef android_widget_LinearLayout_CLICKABLE +#define android_widget_LinearLayout_CLICKABLE 16384L +#undef android_widget_LinearLayout_DRAWING_CACHE_ENABLED +#define android_widget_LinearLayout_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_LinearLayout_SAVE_DISABLED +#define android_widget_LinearLayout_SAVE_DISABLED 65536L +#undef android_widget_LinearLayout_SAVE_DISABLED_MASK +#define android_widget_LinearLayout_SAVE_DISABLED_MASK 65536L +#undef android_widget_LinearLayout_WILL_NOT_CACHE_DRAWING +#define android_widget_LinearLayout_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_LinearLayout_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_LinearLayout_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_LinearLayout_DRAWING_CACHE_QUALITY_LOW +#define android_widget_LinearLayout_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_LinearLayout_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_LinearLayout_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_LinearLayout_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_LinearLayout_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_LinearLayout_DRAWING_CACHE_QUALITY_MASK +#define android_widget_LinearLayout_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_LinearLayout_LONG_CLICKABLE +#define android_widget_LinearLayout_LONG_CLICKABLE 2097152L +#undef android_widget_LinearLayout_DUPLICATE_PARENT_STATE +#define android_widget_LinearLayout_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_LinearLayout_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_LinearLayout_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_LinearLayout_SCROLLBARS_INSIDE_INSET +#define android_widget_LinearLayout_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_LinearLayout_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_LinearLayout_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_LinearLayout_SCROLLBARS_OUTSIDE_INSET +#define android_widget_LinearLayout_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_LinearLayout_SCROLLBARS_INSET_MASK +#define android_widget_LinearLayout_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_LinearLayout_SCROLLBARS_OUTSIDE_MASK +#define android_widget_LinearLayout_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_LinearLayout_SCROLLBARS_STYLE_MASK +#define android_widget_LinearLayout_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_LinearLayout_KEEP_SCREEN_ON +#define android_widget_LinearLayout_KEEP_SCREEN_ON 67108864L +#undef android_widget_LinearLayout_SOUND_EFFECTS_ENABLED +#define android_widget_LinearLayout_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_LinearLayout_HAPTIC_FEEDBACK_ENABLED +#define android_widget_LinearLayout_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_LinearLayout_PARENT_SAVE_DISABLED +#define android_widget_LinearLayout_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_LinearLayout_PARENT_SAVE_DISABLED_MASK +#define android_widget_LinearLayout_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_LinearLayout_FOCUSABLES_ALL +#define android_widget_LinearLayout_FOCUSABLES_ALL 0L +#undef android_widget_LinearLayout_FOCUSABLES_TOUCH_MODE +#define android_widget_LinearLayout_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_LinearLayout_FOCUS_BACKWARD +#define android_widget_LinearLayout_FOCUS_BACKWARD 1L +#undef android_widget_LinearLayout_FOCUS_FORWARD +#define android_widget_LinearLayout_FOCUS_FORWARD 2L +#undef android_widget_LinearLayout_FOCUS_LEFT +#define android_widget_LinearLayout_FOCUS_LEFT 17L +#undef android_widget_LinearLayout_FOCUS_UP +#define android_widget_LinearLayout_FOCUS_UP 33L +#undef android_widget_LinearLayout_FOCUS_RIGHT +#define android_widget_LinearLayout_FOCUS_RIGHT 66L +#undef android_widget_LinearLayout_FOCUS_DOWN +#define android_widget_LinearLayout_FOCUS_DOWN 130L +#undef android_widget_LinearLayout_MEASURED_SIZE_MASK +#define android_widget_LinearLayout_MEASURED_SIZE_MASK 16777215L +#undef android_widget_LinearLayout_MEASURED_STATE_MASK +#define android_widget_LinearLayout_MEASURED_STATE_MASK -16777216L +#undef android_widget_LinearLayout_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_LinearLayout_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_LinearLayout_MEASURED_STATE_TOO_SMALL +#define android_widget_LinearLayout_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_LinearLayout_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_LinearLayout_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_LinearLayout_PFLAG2_DRAG_HOVERED +#define android_widget_LinearLayout_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_LinearLayout_LAYOUT_DIRECTION_LTR +#define android_widget_LinearLayout_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_LinearLayout_LAYOUT_DIRECTION_RTL +#define android_widget_LinearLayout_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_LinearLayout_LAYOUT_DIRECTION_INHERIT +#define android_widget_LinearLayout_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_LinearLayout_LAYOUT_DIRECTION_LOCALE +#define android_widget_LinearLayout_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_LinearLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_LinearLayout + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_LinearLayout + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_LinearLayout + * Method: addView + * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_addView + (JNIEnv *, jobject, jobject, jint, jobject); + +/* + * Class: android_widget_LinearLayout + * Method: removeView + * Signature: (Landroid/view/View;)V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeView + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_LinearLayout + * Method: removeAllViews + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeAllViews + (JNIEnv *, jobject); + +/* + * Class: android_widget_LinearLayout + * Method: setOrientation + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_setOrientation + (JNIEnv *, jobject, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h b/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h new file mode 100644 index 00000000..ab4bc5bb --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h @@ -0,0 +1,171 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_ProgressBar */ + +#ifndef _Included_android_widget_ProgressBar +#define _Included_android_widget_ProgressBar +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_ProgressBar_NO_ID +#define android_widget_ProgressBar_NO_ID -1L +#undef android_widget_ProgressBar_NOT_FOCUSABLE +#define android_widget_ProgressBar_NOT_FOCUSABLE 0L +#undef android_widget_ProgressBar_FOCUSABLE +#define android_widget_ProgressBar_FOCUSABLE 1L +#undef android_widget_ProgressBar_FOCUSABLE_MASK +#define android_widget_ProgressBar_FOCUSABLE_MASK 1L +#undef android_widget_ProgressBar_FITS_SYSTEM_WINDOWS +#define android_widget_ProgressBar_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_ProgressBar_VISIBLE +#define android_widget_ProgressBar_VISIBLE 0L +#undef android_widget_ProgressBar_INVISIBLE +#define android_widget_ProgressBar_INVISIBLE 4L +#undef android_widget_ProgressBar_GONE +#define android_widget_ProgressBar_GONE 8L +#undef android_widget_ProgressBar_VISIBILITY_MASK +#define android_widget_ProgressBar_VISIBILITY_MASK 12L +#undef android_widget_ProgressBar_ENABLED +#define android_widget_ProgressBar_ENABLED 0L +#undef android_widget_ProgressBar_DISABLED +#define android_widget_ProgressBar_DISABLED 32L +#undef android_widget_ProgressBar_ENABLED_MASK +#define android_widget_ProgressBar_ENABLED_MASK 32L +#undef android_widget_ProgressBar_WILL_NOT_DRAW +#define android_widget_ProgressBar_WILL_NOT_DRAW 128L +#undef android_widget_ProgressBar_DRAW_MASK +#define android_widget_ProgressBar_DRAW_MASK 128L +#undef android_widget_ProgressBar_SCROLLBARS_NONE +#define android_widget_ProgressBar_SCROLLBARS_NONE 0L +#undef android_widget_ProgressBar_SCROLLBARS_HORIZONTAL +#define android_widget_ProgressBar_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_ProgressBar_SCROLLBARS_VERTICAL +#define android_widget_ProgressBar_SCROLLBARS_VERTICAL 512L +#undef android_widget_ProgressBar_SCROLLBARS_MASK +#define android_widget_ProgressBar_SCROLLBARS_MASK 768L +#undef android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_ProgressBar_FADING_EDGE_NONE +#define android_widget_ProgressBar_FADING_EDGE_NONE 0L +#undef android_widget_ProgressBar_FADING_EDGE_HORIZONTAL +#define android_widget_ProgressBar_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_ProgressBar_FADING_EDGE_VERTICAL +#define android_widget_ProgressBar_FADING_EDGE_VERTICAL 8192L +#undef android_widget_ProgressBar_FADING_EDGE_MASK +#define android_widget_ProgressBar_FADING_EDGE_MASK 12288L +#undef android_widget_ProgressBar_CLICKABLE +#define android_widget_ProgressBar_CLICKABLE 16384L +#undef android_widget_ProgressBar_DRAWING_CACHE_ENABLED +#define android_widget_ProgressBar_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_ProgressBar_SAVE_DISABLED +#define android_widget_ProgressBar_SAVE_DISABLED 65536L +#undef android_widget_ProgressBar_SAVE_DISABLED_MASK +#define android_widget_ProgressBar_SAVE_DISABLED_MASK 65536L +#undef android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING +#define android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK +#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_ProgressBar_LONG_CLICKABLE +#define android_widget_ProgressBar_LONG_CLICKABLE 2097152L +#undef android_widget_ProgressBar_DUPLICATE_PARENT_STATE +#define android_widget_ProgressBar_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET +#define android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_ProgressBar_SCROLLBARS_INSET_MASK +#define android_widget_ProgressBar_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK +#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_ProgressBar_SCROLLBARS_STYLE_MASK +#define android_widget_ProgressBar_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_ProgressBar_KEEP_SCREEN_ON +#define android_widget_ProgressBar_KEEP_SCREEN_ON 67108864L +#undef android_widget_ProgressBar_SOUND_EFFECTS_ENABLED +#define android_widget_ProgressBar_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED +#define android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED +#define android_widget_ProgressBar_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK +#define android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_ProgressBar_FOCUSABLES_ALL +#define android_widget_ProgressBar_FOCUSABLES_ALL 0L +#undef android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE +#define android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_ProgressBar_FOCUS_BACKWARD +#define android_widget_ProgressBar_FOCUS_BACKWARD 1L +#undef android_widget_ProgressBar_FOCUS_FORWARD +#define android_widget_ProgressBar_FOCUS_FORWARD 2L +#undef android_widget_ProgressBar_FOCUS_LEFT +#define android_widget_ProgressBar_FOCUS_LEFT 17L +#undef android_widget_ProgressBar_FOCUS_UP +#define android_widget_ProgressBar_FOCUS_UP 33L +#undef android_widget_ProgressBar_FOCUS_RIGHT +#define android_widget_ProgressBar_FOCUS_RIGHT 66L +#undef android_widget_ProgressBar_FOCUS_DOWN +#define android_widget_ProgressBar_FOCUS_DOWN 130L +#undef android_widget_ProgressBar_MEASURED_SIZE_MASK +#define android_widget_ProgressBar_MEASURED_SIZE_MASK 16777215L +#undef android_widget_ProgressBar_MEASURED_STATE_MASK +#define android_widget_ProgressBar_MEASURED_STATE_MASK -16777216L +#undef android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL +#define android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_ProgressBar_PFLAG2_DRAG_HOVERED +#define android_widget_ProgressBar_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LTR +#define android_widget_ProgressBar_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_RTL +#define android_widget_ProgressBar_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT +#define android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE +#define android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_ProgressBar + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_ProgressBar + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h b/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h new file mode 100644 index 00000000..0e0fb1c8 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h @@ -0,0 +1,179 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_RelativeLayout */ + +#ifndef _Included_android_widget_RelativeLayout +#define _Included_android_widget_RelativeLayout +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_RelativeLayout_NO_ID +#define android_widget_RelativeLayout_NO_ID -1L +#undef android_widget_RelativeLayout_NOT_FOCUSABLE +#define android_widget_RelativeLayout_NOT_FOCUSABLE 0L +#undef android_widget_RelativeLayout_FOCUSABLE +#define android_widget_RelativeLayout_FOCUSABLE 1L +#undef android_widget_RelativeLayout_FOCUSABLE_MASK +#define android_widget_RelativeLayout_FOCUSABLE_MASK 1L +#undef android_widget_RelativeLayout_FITS_SYSTEM_WINDOWS +#define android_widget_RelativeLayout_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_RelativeLayout_VISIBLE +#define android_widget_RelativeLayout_VISIBLE 0L +#undef android_widget_RelativeLayout_INVISIBLE +#define android_widget_RelativeLayout_INVISIBLE 4L +#undef android_widget_RelativeLayout_GONE +#define android_widget_RelativeLayout_GONE 8L +#undef android_widget_RelativeLayout_VISIBILITY_MASK +#define android_widget_RelativeLayout_VISIBILITY_MASK 12L +#undef android_widget_RelativeLayout_ENABLED +#define android_widget_RelativeLayout_ENABLED 0L +#undef android_widget_RelativeLayout_DISABLED +#define android_widget_RelativeLayout_DISABLED 32L +#undef android_widget_RelativeLayout_ENABLED_MASK +#define android_widget_RelativeLayout_ENABLED_MASK 32L +#undef android_widget_RelativeLayout_WILL_NOT_DRAW +#define android_widget_RelativeLayout_WILL_NOT_DRAW 128L +#undef android_widget_RelativeLayout_DRAW_MASK +#define android_widget_RelativeLayout_DRAW_MASK 128L +#undef android_widget_RelativeLayout_SCROLLBARS_NONE +#define android_widget_RelativeLayout_SCROLLBARS_NONE 0L +#undef android_widget_RelativeLayout_SCROLLBARS_HORIZONTAL +#define android_widget_RelativeLayout_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_RelativeLayout_SCROLLBARS_VERTICAL +#define android_widget_RelativeLayout_SCROLLBARS_VERTICAL 512L +#undef android_widget_RelativeLayout_SCROLLBARS_MASK +#define android_widget_RelativeLayout_SCROLLBARS_MASK 768L +#undef android_widget_RelativeLayout_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_RelativeLayout_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_RelativeLayout_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_RelativeLayout_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_RelativeLayout_FADING_EDGE_NONE +#define android_widget_RelativeLayout_FADING_EDGE_NONE 0L +#undef android_widget_RelativeLayout_FADING_EDGE_HORIZONTAL +#define android_widget_RelativeLayout_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_RelativeLayout_FADING_EDGE_VERTICAL +#define android_widget_RelativeLayout_FADING_EDGE_VERTICAL 8192L +#undef android_widget_RelativeLayout_FADING_EDGE_MASK +#define android_widget_RelativeLayout_FADING_EDGE_MASK 12288L +#undef android_widget_RelativeLayout_CLICKABLE +#define android_widget_RelativeLayout_CLICKABLE 16384L +#undef android_widget_RelativeLayout_DRAWING_CACHE_ENABLED +#define android_widget_RelativeLayout_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_RelativeLayout_SAVE_DISABLED +#define android_widget_RelativeLayout_SAVE_DISABLED 65536L +#undef android_widget_RelativeLayout_SAVE_DISABLED_MASK +#define android_widget_RelativeLayout_SAVE_DISABLED_MASK 65536L +#undef android_widget_RelativeLayout_WILL_NOT_CACHE_DRAWING +#define android_widget_RelativeLayout_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_RelativeLayout_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_RelativeLayout_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_LOW +#define android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_MASK +#define android_widget_RelativeLayout_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_RelativeLayout_LONG_CLICKABLE +#define android_widget_RelativeLayout_LONG_CLICKABLE 2097152L +#undef android_widget_RelativeLayout_DUPLICATE_PARENT_STATE +#define android_widget_RelativeLayout_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_RelativeLayout_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_RelativeLayout_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_RelativeLayout_SCROLLBARS_INSIDE_INSET +#define android_widget_RelativeLayout_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_INSET +#define android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_RelativeLayout_SCROLLBARS_INSET_MASK +#define android_widget_RelativeLayout_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_MASK +#define android_widget_RelativeLayout_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_RelativeLayout_SCROLLBARS_STYLE_MASK +#define android_widget_RelativeLayout_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_RelativeLayout_KEEP_SCREEN_ON +#define android_widget_RelativeLayout_KEEP_SCREEN_ON 67108864L +#undef android_widget_RelativeLayout_SOUND_EFFECTS_ENABLED +#define android_widget_RelativeLayout_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_RelativeLayout_HAPTIC_FEEDBACK_ENABLED +#define android_widget_RelativeLayout_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_RelativeLayout_PARENT_SAVE_DISABLED +#define android_widget_RelativeLayout_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_RelativeLayout_PARENT_SAVE_DISABLED_MASK +#define android_widget_RelativeLayout_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_RelativeLayout_FOCUSABLES_ALL +#define android_widget_RelativeLayout_FOCUSABLES_ALL 0L +#undef android_widget_RelativeLayout_FOCUSABLES_TOUCH_MODE +#define android_widget_RelativeLayout_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_RelativeLayout_FOCUS_BACKWARD +#define android_widget_RelativeLayout_FOCUS_BACKWARD 1L +#undef android_widget_RelativeLayout_FOCUS_FORWARD +#define android_widget_RelativeLayout_FOCUS_FORWARD 2L +#undef android_widget_RelativeLayout_FOCUS_LEFT +#define android_widget_RelativeLayout_FOCUS_LEFT 17L +#undef android_widget_RelativeLayout_FOCUS_UP +#define android_widget_RelativeLayout_FOCUS_UP 33L +#undef android_widget_RelativeLayout_FOCUS_RIGHT +#define android_widget_RelativeLayout_FOCUS_RIGHT 66L +#undef android_widget_RelativeLayout_FOCUS_DOWN +#define android_widget_RelativeLayout_FOCUS_DOWN 130L +#undef android_widget_RelativeLayout_MEASURED_SIZE_MASK +#define android_widget_RelativeLayout_MEASURED_SIZE_MASK 16777215L +#undef android_widget_RelativeLayout_MEASURED_STATE_MASK +#define android_widget_RelativeLayout_MEASURED_STATE_MASK -16777216L +#undef android_widget_RelativeLayout_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_RelativeLayout_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_RelativeLayout_MEASURED_STATE_TOO_SMALL +#define android_widget_RelativeLayout_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_RelativeLayout_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_RelativeLayout_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_RelativeLayout_PFLAG2_DRAG_HOVERED +#define android_widget_RelativeLayout_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_RelativeLayout_LAYOUT_DIRECTION_LTR +#define android_widget_RelativeLayout_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_RelativeLayout_LAYOUT_DIRECTION_RTL +#define android_widget_RelativeLayout_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_RelativeLayout_LAYOUT_DIRECTION_INHERIT +#define android_widget_RelativeLayout_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_RelativeLayout_LAYOUT_DIRECTION_LOCALE +#define android_widget_RelativeLayout_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_RelativeLayout + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_RelativeLayout + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_RelativeLayout + * Method: addView + * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_addView + (JNIEnv *, jobject, jobject, jint, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_ScrollView.h b/src/api-impl-jni/generated_headers/android_widget_ScrollView.h new file mode 100644 index 00000000..866b0329 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_ScrollView.h @@ -0,0 +1,195 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_ScrollView */ + +#ifndef _Included_android_widget_ScrollView +#define _Included_android_widget_ScrollView +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_ScrollView_NO_ID +#define android_widget_ScrollView_NO_ID -1L +#undef android_widget_ScrollView_NOT_FOCUSABLE +#define android_widget_ScrollView_NOT_FOCUSABLE 0L +#undef android_widget_ScrollView_FOCUSABLE +#define android_widget_ScrollView_FOCUSABLE 1L +#undef android_widget_ScrollView_FOCUSABLE_MASK +#define android_widget_ScrollView_FOCUSABLE_MASK 1L +#undef android_widget_ScrollView_FITS_SYSTEM_WINDOWS +#define android_widget_ScrollView_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_ScrollView_VISIBLE +#define android_widget_ScrollView_VISIBLE 0L +#undef android_widget_ScrollView_INVISIBLE +#define android_widget_ScrollView_INVISIBLE 4L +#undef android_widget_ScrollView_GONE +#define android_widget_ScrollView_GONE 8L +#undef android_widget_ScrollView_VISIBILITY_MASK +#define android_widget_ScrollView_VISIBILITY_MASK 12L +#undef android_widget_ScrollView_ENABLED +#define android_widget_ScrollView_ENABLED 0L +#undef android_widget_ScrollView_DISABLED +#define android_widget_ScrollView_DISABLED 32L +#undef android_widget_ScrollView_ENABLED_MASK +#define android_widget_ScrollView_ENABLED_MASK 32L +#undef android_widget_ScrollView_WILL_NOT_DRAW +#define android_widget_ScrollView_WILL_NOT_DRAW 128L +#undef android_widget_ScrollView_DRAW_MASK +#define android_widget_ScrollView_DRAW_MASK 128L +#undef android_widget_ScrollView_SCROLLBARS_NONE +#define android_widget_ScrollView_SCROLLBARS_NONE 0L +#undef android_widget_ScrollView_SCROLLBARS_HORIZONTAL +#define android_widget_ScrollView_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_ScrollView_SCROLLBARS_VERTICAL +#define android_widget_ScrollView_SCROLLBARS_VERTICAL 512L +#undef android_widget_ScrollView_SCROLLBARS_MASK +#define android_widget_ScrollView_SCROLLBARS_MASK 768L +#undef android_widget_ScrollView_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_ScrollView_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_ScrollView_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_ScrollView_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_ScrollView_FADING_EDGE_NONE +#define android_widget_ScrollView_FADING_EDGE_NONE 0L +#undef android_widget_ScrollView_FADING_EDGE_HORIZONTAL +#define android_widget_ScrollView_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_ScrollView_FADING_EDGE_VERTICAL +#define android_widget_ScrollView_FADING_EDGE_VERTICAL 8192L +#undef android_widget_ScrollView_FADING_EDGE_MASK +#define android_widget_ScrollView_FADING_EDGE_MASK 12288L +#undef android_widget_ScrollView_CLICKABLE +#define android_widget_ScrollView_CLICKABLE 16384L +#undef android_widget_ScrollView_DRAWING_CACHE_ENABLED +#define android_widget_ScrollView_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_ScrollView_SAVE_DISABLED +#define android_widget_ScrollView_SAVE_DISABLED 65536L +#undef android_widget_ScrollView_SAVE_DISABLED_MASK +#define android_widget_ScrollView_SAVE_DISABLED_MASK 65536L +#undef android_widget_ScrollView_WILL_NOT_CACHE_DRAWING +#define android_widget_ScrollView_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_ScrollView_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_ScrollView_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_ScrollView_DRAWING_CACHE_QUALITY_LOW +#define android_widget_ScrollView_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_ScrollView_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_ScrollView_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_ScrollView_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_ScrollView_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_ScrollView_DRAWING_CACHE_QUALITY_MASK +#define android_widget_ScrollView_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_ScrollView_LONG_CLICKABLE +#define android_widget_ScrollView_LONG_CLICKABLE 2097152L +#undef android_widget_ScrollView_DUPLICATE_PARENT_STATE +#define android_widget_ScrollView_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_ScrollView_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_ScrollView_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_ScrollView_SCROLLBARS_INSIDE_INSET +#define android_widget_ScrollView_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_ScrollView_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_ScrollView_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_ScrollView_SCROLLBARS_OUTSIDE_INSET +#define android_widget_ScrollView_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_ScrollView_SCROLLBARS_INSET_MASK +#define android_widget_ScrollView_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_ScrollView_SCROLLBARS_OUTSIDE_MASK +#define android_widget_ScrollView_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_ScrollView_SCROLLBARS_STYLE_MASK +#define android_widget_ScrollView_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_ScrollView_KEEP_SCREEN_ON +#define android_widget_ScrollView_KEEP_SCREEN_ON 67108864L +#undef android_widget_ScrollView_SOUND_EFFECTS_ENABLED +#define android_widget_ScrollView_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_ScrollView_HAPTIC_FEEDBACK_ENABLED +#define android_widget_ScrollView_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_ScrollView_PARENT_SAVE_DISABLED +#define android_widget_ScrollView_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_ScrollView_PARENT_SAVE_DISABLED_MASK +#define android_widget_ScrollView_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_ScrollView_FOCUSABLES_ALL +#define android_widget_ScrollView_FOCUSABLES_ALL 0L +#undef android_widget_ScrollView_FOCUSABLES_TOUCH_MODE +#define android_widget_ScrollView_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_ScrollView_FOCUS_BACKWARD +#define android_widget_ScrollView_FOCUS_BACKWARD 1L +#undef android_widget_ScrollView_FOCUS_FORWARD +#define android_widget_ScrollView_FOCUS_FORWARD 2L +#undef android_widget_ScrollView_FOCUS_LEFT +#define android_widget_ScrollView_FOCUS_LEFT 17L +#undef android_widget_ScrollView_FOCUS_UP +#define android_widget_ScrollView_FOCUS_UP 33L +#undef android_widget_ScrollView_FOCUS_RIGHT +#define android_widget_ScrollView_FOCUS_RIGHT 66L +#undef android_widget_ScrollView_FOCUS_DOWN +#define android_widget_ScrollView_FOCUS_DOWN 130L +#undef android_widget_ScrollView_MEASURED_SIZE_MASK +#define android_widget_ScrollView_MEASURED_SIZE_MASK 16777215L +#undef android_widget_ScrollView_MEASURED_STATE_MASK +#define android_widget_ScrollView_MEASURED_STATE_MASK -16777216L +#undef android_widget_ScrollView_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_ScrollView_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_ScrollView_MEASURED_STATE_TOO_SMALL +#define android_widget_ScrollView_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_ScrollView_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_ScrollView_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_ScrollView_PFLAG2_DRAG_HOVERED +#define android_widget_ScrollView_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_ScrollView_LAYOUT_DIRECTION_LTR +#define android_widget_ScrollView_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_ScrollView_LAYOUT_DIRECTION_RTL +#define android_widget_ScrollView_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_ScrollView_LAYOUT_DIRECTION_INHERIT +#define android_widget_ScrollView_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_ScrollView_LAYOUT_DIRECTION_LOCALE +#define android_widget_ScrollView_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_ScrollView + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_ScrollView + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_ScrollView + * Method: addView + * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_addView + (JNIEnv *, jobject, jobject, jint, jobject); + +/* + * Class: android_widget_ScrollView + * Method: removeView + * Signature: (Landroid/view/View;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeView + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_ScrollView + * Method: removeAllViews + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeAllViews + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_TextView.h b/src/api-impl-jni/generated_headers/android_widget_TextView.h new file mode 100644 index 00000000..7503d1f6 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_TextView.h @@ -0,0 +1,195 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_TextView */ + +#ifndef _Included_android_widget_TextView +#define _Included_android_widget_TextView +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_TextView_NO_ID +#define android_widget_TextView_NO_ID -1L +#undef android_widget_TextView_NOT_FOCUSABLE +#define android_widget_TextView_NOT_FOCUSABLE 0L +#undef android_widget_TextView_FOCUSABLE +#define android_widget_TextView_FOCUSABLE 1L +#undef android_widget_TextView_FOCUSABLE_MASK +#define android_widget_TextView_FOCUSABLE_MASK 1L +#undef android_widget_TextView_FITS_SYSTEM_WINDOWS +#define android_widget_TextView_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_TextView_VISIBLE +#define android_widget_TextView_VISIBLE 0L +#undef android_widget_TextView_INVISIBLE +#define android_widget_TextView_INVISIBLE 4L +#undef android_widget_TextView_GONE +#define android_widget_TextView_GONE 8L +#undef android_widget_TextView_VISIBILITY_MASK +#define android_widget_TextView_VISIBILITY_MASK 12L +#undef android_widget_TextView_ENABLED +#define android_widget_TextView_ENABLED 0L +#undef android_widget_TextView_DISABLED +#define android_widget_TextView_DISABLED 32L +#undef android_widget_TextView_ENABLED_MASK +#define android_widget_TextView_ENABLED_MASK 32L +#undef android_widget_TextView_WILL_NOT_DRAW +#define android_widget_TextView_WILL_NOT_DRAW 128L +#undef android_widget_TextView_DRAW_MASK +#define android_widget_TextView_DRAW_MASK 128L +#undef android_widget_TextView_SCROLLBARS_NONE +#define android_widget_TextView_SCROLLBARS_NONE 0L +#undef android_widget_TextView_SCROLLBARS_HORIZONTAL +#define android_widget_TextView_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_TextView_SCROLLBARS_VERTICAL +#define android_widget_TextView_SCROLLBARS_VERTICAL 512L +#undef android_widget_TextView_SCROLLBARS_MASK +#define android_widget_TextView_SCROLLBARS_MASK 768L +#undef android_widget_TextView_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_TextView_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_TextView_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_TextView_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_TextView_FADING_EDGE_NONE +#define android_widget_TextView_FADING_EDGE_NONE 0L +#undef android_widget_TextView_FADING_EDGE_HORIZONTAL +#define android_widget_TextView_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_TextView_FADING_EDGE_VERTICAL +#define android_widget_TextView_FADING_EDGE_VERTICAL 8192L +#undef android_widget_TextView_FADING_EDGE_MASK +#define android_widget_TextView_FADING_EDGE_MASK 12288L +#undef android_widget_TextView_CLICKABLE +#define android_widget_TextView_CLICKABLE 16384L +#undef android_widget_TextView_DRAWING_CACHE_ENABLED +#define android_widget_TextView_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_TextView_SAVE_DISABLED +#define android_widget_TextView_SAVE_DISABLED 65536L +#undef android_widget_TextView_SAVE_DISABLED_MASK +#define android_widget_TextView_SAVE_DISABLED_MASK 65536L +#undef android_widget_TextView_WILL_NOT_CACHE_DRAWING +#define android_widget_TextView_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_TextView_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_TextView_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_TextView_DRAWING_CACHE_QUALITY_LOW +#define android_widget_TextView_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_TextView_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_TextView_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_TextView_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_TextView_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_TextView_DRAWING_CACHE_QUALITY_MASK +#define android_widget_TextView_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_TextView_LONG_CLICKABLE +#define android_widget_TextView_LONG_CLICKABLE 2097152L +#undef android_widget_TextView_DUPLICATE_PARENT_STATE +#define android_widget_TextView_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_TextView_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_TextView_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_TextView_SCROLLBARS_INSIDE_INSET +#define android_widget_TextView_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_TextView_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_TextView_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_TextView_SCROLLBARS_OUTSIDE_INSET +#define android_widget_TextView_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_TextView_SCROLLBARS_INSET_MASK +#define android_widget_TextView_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_TextView_SCROLLBARS_OUTSIDE_MASK +#define android_widget_TextView_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_TextView_SCROLLBARS_STYLE_MASK +#define android_widget_TextView_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_TextView_KEEP_SCREEN_ON +#define android_widget_TextView_KEEP_SCREEN_ON 67108864L +#undef android_widget_TextView_SOUND_EFFECTS_ENABLED +#define android_widget_TextView_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_TextView_HAPTIC_FEEDBACK_ENABLED +#define android_widget_TextView_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_TextView_PARENT_SAVE_DISABLED +#define android_widget_TextView_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_TextView_PARENT_SAVE_DISABLED_MASK +#define android_widget_TextView_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_TextView_FOCUSABLES_ALL +#define android_widget_TextView_FOCUSABLES_ALL 0L +#undef android_widget_TextView_FOCUSABLES_TOUCH_MODE +#define android_widget_TextView_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_TextView_FOCUS_BACKWARD +#define android_widget_TextView_FOCUS_BACKWARD 1L +#undef android_widget_TextView_FOCUS_FORWARD +#define android_widget_TextView_FOCUS_FORWARD 2L +#undef android_widget_TextView_FOCUS_LEFT +#define android_widget_TextView_FOCUS_LEFT 17L +#undef android_widget_TextView_FOCUS_UP +#define android_widget_TextView_FOCUS_UP 33L +#undef android_widget_TextView_FOCUS_RIGHT +#define android_widget_TextView_FOCUS_RIGHT 66L +#undef android_widget_TextView_FOCUS_DOWN +#define android_widget_TextView_FOCUS_DOWN 130L +#undef android_widget_TextView_MEASURED_SIZE_MASK +#define android_widget_TextView_MEASURED_SIZE_MASK 16777215L +#undef android_widget_TextView_MEASURED_STATE_MASK +#define android_widget_TextView_MEASURED_STATE_MASK -16777216L +#undef android_widget_TextView_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_TextView_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_TextView_MEASURED_STATE_TOO_SMALL +#define android_widget_TextView_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_TextView_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_TextView_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_TextView_PFLAG2_DRAG_HOVERED +#define android_widget_TextView_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_TextView_LAYOUT_DIRECTION_LTR +#define android_widget_TextView_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_TextView_LAYOUT_DIRECTION_RTL +#define android_widget_TextView_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_TextView_LAYOUT_DIRECTION_INHERIT +#define android_widget_TextView_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_TextView_LAYOUT_DIRECTION_LOCALE +#define android_widget_TextView_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_TextView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +/* + * Class: android_widget_TextView + * Method: native_constructor + * Signature: (Landroid/util/AttributeSet;)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_util_AttributeSet_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_TextView + * Method: native_constructor + * Signature: (Landroid/content/Context;)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_content_Context_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_TextView + * Method: native_set_markup + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1set_1markup + (JNIEnv *, jobject, jint); + +/* + * Class: android_widget_TextView + * Method: native_setText + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setText + (JNIEnv *, jobject, jstring); + +/* + * Class: android_widget_TextView + * Method: setTextSize + * Signature: (F)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_setTextSize + (JNIEnv *, jobject, jfloat); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/com_google_android_gles_jni_EGLImpl.h b/src/api-impl-jni/generated_headers/com_google_android_gles_jni_EGLImpl.h new file mode 100644 index 00000000..e02630f0 --- /dev/null +++ b/src/api-impl-jni/generated_headers/com_google_android_gles_jni_EGLImpl.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class com_google_android_gles_jni_EGLImpl */ + +#ifndef _Included_com_google_android_gles_jni_EGLImpl +#define _Included_com_google_android_gles_jni_EGLImpl +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: com_google_android_gles_jni_EGLImpl + * Method: native_eglCreateContext + * Signature: (JJLjavax/microedition/khronos/egl/EGLContext;[I)J + */ +JNIEXPORT jlong JNICALL Java_com_google_android_gles_1jni_EGLImpl_native_1eglCreateContext + (JNIEnv *, jobject, jlong, jlong, jobject, jintArray); + +/* + * Class: com_google_android_gles_jni_EGLImpl + * Method: native_eglChooseConfig + * Signature: (J[I[JI[I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_EGLImpl_native_1eglChooseConfig + (JNIEnv *, jobject, jlong, jintArray, jlongArray, jint, jintArray); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/generated_headers/com_google_android_gles_jni_GLImpl.h b/src/api-impl-jni/generated_headers/com_google_android_gles_jni_GLImpl.h new file mode 100644 index 00000000..00c18322 --- /dev/null +++ b/src/api-impl-jni/generated_headers/com_google_android_gles_jni_GLImpl.h @@ -0,0 +1,2005 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class com_google_android_gles_jni_GLImpl */ + +#ifndef _Included_com_google_android_gles_jni_GLImpl +#define _Included_com_google_android_gles_jni_GLImpl +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glActiveTexture + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glActiveTexture + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glAlphaFunc + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glAlphaFunc + (JNIEnv *, jobject, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glAlphaFuncx + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glAlphaFuncx + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBindTexture + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBindTexture + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBlendFunc + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBlendFunc + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClear + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClear + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClearColor + * Signature: (FFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClearColor + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClearColorx + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClearColorx + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClearDepthf + * Signature: (F)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClearDepthf + (JNIEnv *, jobject, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClearDepthx + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClearDepthx + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClearStencil + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClearStencil + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClientActiveTexture + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClientActiveTexture + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColor4f + * Signature: (FFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColor4f + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColor4x + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColor4x + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColorMask + * Signature: (ZZZZ)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColorMask + (JNIEnv *, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColorPointerBounds + * Signature: (IIILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColorPointerBounds + (JNIEnv *, jobject, jint, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCompressedTexImage2D + * Signature: (IIIIIIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCompressedTexImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCompressedTexSubImage2D + * Signature: (IIIIIIIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCompressedTexSubImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCopyTexImage2D + * Signature: (IIIIIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCopyTexImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCopyTexSubImage2D + * Signature: (IIIIIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCopyTexSubImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCullFace + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCullFace + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteTextures + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteTextures__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteTextures + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteTextures__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDepthFunc + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDepthFunc + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDepthMask + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDepthMask + (JNIEnv *, jobject, jboolean); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDepthRangef + * Signature: (FF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDepthRangef + (JNIEnv *, jobject, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDepthRangex + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDepthRangex + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDisable + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDisable + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDisableClientState + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDisableClientState + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawArrays + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawArrays + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawElements + * Signature: (IIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawElements__IIILjava_nio_Buffer_2 + (JNIEnv *, jobject, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glEnable + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glEnable + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glEnableClientState + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glEnableClientState + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFinish + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFinish + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFlush + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFlush + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogf + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogf + (JNIEnv *, jobject, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogfv + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogfv__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogfv + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogfv__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogx + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogx + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogxv + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogxv__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFogxv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFogxv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFrontFace + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFrontFace + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFrustumf + * Signature: (FFFFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFrustumf + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFrustumx + * Signature: (IIIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFrustumx + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenTextures + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenTextures__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenTextures + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenTextures__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetError + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetError + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetIntegerv + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetIntegerv__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetIntegerv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetIntegerv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: _glGetString + * Signature: (I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_com_google_android_gles_1jni_GLImpl__1glGetString + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glHint + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glHint + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelf + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelf + (JNIEnv *, jobject, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelfv + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelfv__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelfv + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelfv__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelx + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelx + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelxv + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelxv__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightModelxv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightModelxv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightf + * Signature: (IIF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightf + (JNIEnv *, jobject, jint, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightx + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightx + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLightxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLightxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLineWidth + * Signature: (F)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLineWidth + (JNIEnv *, jobject, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLineWidthx + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLineWidthx + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadIdentity + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadIdentity + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadMatrixf + * Signature: ([FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadMatrixf___3FI + (JNIEnv *, jobject, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadMatrixf + * Signature: (Ljava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadMatrixf__Ljava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadMatrixx + * Signature: ([II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadMatrixx___3II + (JNIEnv *, jobject, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadMatrixx + * Signature: (Ljava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadMatrixx__Ljava_nio_IntBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLogicOp + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLogicOp + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialf + * Signature: (IIF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialf + (JNIEnv *, jobject, jint, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialx + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialx + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMaterialxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMaterialxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMatrixMode + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMatrixMode + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultMatrixf + * Signature: ([FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultMatrixf___3FI + (JNIEnv *, jobject, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultMatrixf + * Signature: (Ljava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultMatrixf__Ljava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultMatrixx + * Signature: ([II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultMatrixx___3II + (JNIEnv *, jobject, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultMatrixx + * Signature: (Ljava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultMatrixx__Ljava_nio_IntBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultiTexCoord4f + * Signature: (IFFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultiTexCoord4f + (JNIEnv *, jobject, jint, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMultiTexCoord4x + * Signature: (IIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMultiTexCoord4x + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glNormal3f + * Signature: (FFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glNormal3f + (JNIEnv *, jobject, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glNormal3x + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glNormal3x + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glNormalPointerBounds + * Signature: (IILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glNormalPointerBounds + (JNIEnv *, jobject, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glOrthof + * Signature: (FFFFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glOrthof + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glOrthox + * Signature: (IIIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glOrthox + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPixelStorei + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPixelStorei + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointSize + * Signature: (F)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointSize + (JNIEnv *, jobject, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointSizex + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointSizex + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPolygonOffset + * Signature: (FF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPolygonOffset + (JNIEnv *, jobject, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPolygonOffsetx + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPolygonOffsetx + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPopMatrix + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPopMatrix + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPushMatrix + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPushMatrix + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glReadPixels + * Signature: (IIIIIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glReadPixels + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glRotatef + * Signature: (FFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glRotatef + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glRotatex + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glRotatex + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glSampleCoverage + * Signature: (FZ)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glSampleCoverage + (JNIEnv *, jobject, jfloat, jboolean); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glSampleCoveragex + * Signature: (IZ)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glSampleCoveragex + (JNIEnv *, jobject, jint, jboolean); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glScalef + * Signature: (FFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glScalef + (JNIEnv *, jobject, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glScalex + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glScalex + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glScissor + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glScissor + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glShadeModel + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glShadeModel + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glStencilFunc + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glStencilFunc + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glStencilMask + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glStencilMask + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glStencilOp + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glStencilOp + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexCoordPointerBounds + * Signature: (IIILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexCoordPointerBounds + (JNIEnv *, jobject, jint, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvf + * Signature: (IIF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvf + (JNIEnv *, jobject, jint, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvx + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvx + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexImage2D + * Signature: (IIIIIIIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterf + * Signature: (IIF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterf + (JNIEnv *, jobject, jint, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterx + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterx + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexSubImage2D + * Signature: (IIIIIIIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexSubImage2D + (JNIEnv *, jobject, jint, jint, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTranslatef + * Signature: (FFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTranslatef + (JNIEnv *, jobject, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTranslatex + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTranslatex + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glVertexPointerBounds + * Signature: (IIILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glVertexPointerBounds + (JNIEnv *, jobject, jint, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glViewport + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glViewport + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glQueryMatrixxOES + * Signature: ([II[II)I + */ +JNIEXPORT jint JNICALL Java_com_google_android_gles_1jni_GLImpl_glQueryMatrixxOES___3II_3II + (JNIEnv *, jobject, jintArray, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glQueryMatrixxOES + * Signature: (Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I + */ +JNIEXPORT jint JNICALL Java_com_google_android_gles_1jni_GLImpl_glQueryMatrixxOES__Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 + (JNIEnv *, jobject, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBindBuffer + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBindBuffer + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBufferData + * Signature: (IILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBufferData + (JNIEnv *, jobject, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBufferSubData + * Signature: (IIILjava/nio/Buffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBufferSubData + (JNIEnv *, jobject, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClipPlanef + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClipPlanef__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClipPlanef + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClipPlanef__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClipPlanex + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClipPlanex__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glClipPlanex + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glClipPlanex__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColor4ub + * Signature: (BBBB)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColor4ub + (JNIEnv *, jobject, jbyte, jbyte, jbyte, jbyte); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glColorPointer + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glColorPointer + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteBuffers + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteBuffers__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteBuffers + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteBuffers__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawElements + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawElements__IIII + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenBuffers + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenBuffers__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenBuffers + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenBuffers__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetBooleanv + * Signature: (I[ZI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetBooleanv__I_3ZI + (JNIEnv *, jobject, jint, jbooleanArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetBooleanv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetBooleanv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetBufferParameteriv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetBufferParameteriv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetBufferParameteriv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetClipPlanef + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetClipPlanef__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetClipPlanef + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetClipPlanef__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetClipPlanex + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetClipPlanex__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetClipPlanex + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetClipPlanex__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFixedv + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFixedv__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFixedv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFixedv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFloatv + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFloatv__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFloatv + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFloatv__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetLightfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetLightfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetLightfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetLightfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetLightxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetLightxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetLightxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetLightxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetMaterialfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetMaterialfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetMaterialfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetMaterialfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetMaterialxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetMaterialxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetMaterialxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetMaterialxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexEnviv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexEnviv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexEnviv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexEnviv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexEnvxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexEnvxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexEnvxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexEnvxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameterfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameterfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameterfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameteriv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameteriv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameteriv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameteriv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameterxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameterxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexParameterxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexParameterxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glIsBuffer + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_GLImpl_glIsBuffer + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glIsEnabled + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_GLImpl_glIsEnabled + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glIsTexture + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_GLImpl_glIsTexture + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glNormalPointer + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glNormalPointer + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterf + * Signature: (IF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterf + (JNIEnv *, jobject, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterfv + * Signature: (I[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterfv__I_3FI + (JNIEnv *, jobject, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterfv + * Signature: (ILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterfv__ILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterx + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterx + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterxv + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterxv__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointParameterxv + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointParameterxv__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glPointSizePointerOESBounds + * Signature: (IILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glPointSizePointerOESBounds + (JNIEnv *, jobject, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexCoordPointer + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexCoordPointer + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnvi + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnvi + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnviv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnviv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexEnviv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexEnviv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameteri + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameteri + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameteriv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameteriv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameteriv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameteriv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexParameterxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexParameterxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glVertexPointer + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glVertexPointer + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCurrentPaletteMatrixOES + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glCurrentPaletteMatrixOES + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexfOES + * Signature: (FFFFF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexfOES + (JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexfvOES + * Signature: ([FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexfvOES___3FI + (JNIEnv *, jobject, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexfvOES + * Signature: (Ljava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexfvOES__Ljava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexiOES + * Signature: (IIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexiOES + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexivOES + * Signature: ([II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexivOES___3II + (JNIEnv *, jobject, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexivOES + * Signature: (Ljava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexivOES__Ljava_nio_IntBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexsOES + * Signature: (SSSSS)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexsOES + (JNIEnv *, jobject, jshort, jshort, jshort, jshort, jshort); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexsvOES + * Signature: ([SI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexsvOES___3SI + (JNIEnv *, jobject, jshortArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexsvOES + * Signature: (Ljava/nio/ShortBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexsvOES__Ljava_nio_ShortBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexxOES + * Signature: (IIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexxOES + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexxvOES + * Signature: ([II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexxvOES___3II + (JNIEnv *, jobject, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDrawTexxvOES + * Signature: (Ljava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDrawTexxvOES__Ljava_nio_IntBuffer_2 + (JNIEnv *, jobject, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glLoadPaletteFromModelViewMatrixOES + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glLoadPaletteFromModelViewMatrixOES + (JNIEnv *, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMatrixIndexPointerOESBounds + * Signature: (IIILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMatrixIndexPointerOESBounds + (JNIEnv *, jobject, jint, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glMatrixIndexPointerOES + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glMatrixIndexPointerOES + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glWeightPointerOESBounds + * Signature: (IIILjava/nio/Buffer;I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glWeightPointerOESBounds + (JNIEnv *, jobject, jint, jint, jint, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glWeightPointerOES + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glWeightPointerOES + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBindFramebufferOES + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBindFramebufferOES + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBindRenderbufferOES + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBindRenderbufferOES + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBlendEquation + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBlendEquation + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBlendEquationSeparate + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBlendEquationSeparate + (JNIEnv *, jobject, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glBlendFuncSeparate + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glBlendFuncSeparate + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glCheckFramebufferStatusOES + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_com_google_android_gles_1jni_GLImpl_glCheckFramebufferStatusOES + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteFramebuffersOES + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteFramebuffersOES__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteFramebuffersOES + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteRenderbuffersOES + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteRenderbuffersOES__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glDeleteRenderbuffersOES + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFramebufferRenderbufferOES + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFramebufferRenderbufferOES + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glFramebufferTexture2DOES + * Signature: (IIIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glFramebufferTexture2DOES + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenerateMipmapOES + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenerateMipmapOES + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenFramebuffersOES + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenFramebuffersOES__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenFramebuffersOES + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenFramebuffersOES__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenRenderbuffersOES + * Signature: (I[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenRenderbuffersOES__I_3II + (JNIEnv *, jobject, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGenRenderbuffersOES + * Signature: (ILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFramebufferAttachmentParameterivOES + * Signature: (III[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFramebufferAttachmentParameterivOES__III_3II + (JNIEnv *, jobject, jint, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetFramebufferAttachmentParameterivOES + * Signature: (IIILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetRenderbufferParameterivOES + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetRenderbufferParameterivOES__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetRenderbufferParameterivOES + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGenfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGenfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGenfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGenfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGeniv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGeniv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGeniv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGeniv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGenxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGenxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glGetTexGenxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glGetTexGenxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glIsFramebufferOES + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_GLImpl_glIsFramebufferOES + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glIsRenderbufferOES + * Signature: (I)Z + */ +JNIEXPORT jboolean JNICALL Java_com_google_android_gles_1jni_GLImpl_glIsRenderbufferOES + (JNIEnv *, jobject, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glRenderbufferStorageOES + * Signature: (IIII)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glRenderbufferStorageOES + (JNIEnv *, jobject, jint, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenf + * Signature: (IIF)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenf + (JNIEnv *, jobject, jint, jint, jfloat); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenfv + * Signature: (II[FI)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenfv__II_3FI + (JNIEnv *, jobject, jint, jint, jfloatArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenfv + * Signature: (IILjava/nio/FloatBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenfv__IILjava_nio_FloatBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGeni + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGeni + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGeniv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGeniv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGeniv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGeniv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenx + * Signature: (III)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenx + (JNIEnv *, jobject, jint, jint, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenxv + * Signature: (II[II)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenxv__II_3II + (JNIEnv *, jobject, jint, jint, jintArray, jint); + +/* + * Class: com_google_android_gles_jni_GLImpl + * Method: glTexGenxv + * Signature: (IILjava/nio/IntBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_google_android_gles_1jni_GLImpl_glTexGenxv__IILjava_nio_IntBuffer_2 + (JNIEnv *, jobject, jint, jint, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/util.c b/src/api-impl-jni/util.c new file mode 100644 index 00000000..6af19d25 --- /dev/null +++ b/src/api-impl-jni/util.c @@ -0,0 +1,75 @@ +#include "util.h" + +struct handle_cache handle_cache = {0}; + +const char * attribute_set_get_string(JNIEnv *env, jobject attrs, char *attribute, char *schema) +{ + if(!schema) + schema = "http://schemas.android.com/apk/res/android"; + + return _CSTRING( (jstring)(*env)->CallObjectMethod(env, attrs, handle_cache.attribute_set.getAttributeValue_string, _JSTRING(schema), _JSTRING(attribute)) ); +} + +int attribute_set_get_int(JNIEnv *env, jobject attrs, char *attribute, char *schema, int default_value) +{ + if(!schema) + schema = "http://schemas.android.com/apk/res/android"; + + return (*env)->CallIntMethod(env, attrs, handle_cache.attribute_set.getAttributeValue_int, _JSTRING(schema), _JSTRING(attribute), default_value); +} + +void set_up_handle_cache(JNIEnv *env, char *apk_main_activity_class) +{ + handle_cache.apk_main_activity.class = _REF((*env)->FindClass(env, apk_main_activity_class)); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + handle_cache.apk_main_activity.object = _REF((*env)->NewObject(env, handle_cache.apk_main_activity.class, _METHOD(handle_cache.apk_main_activity.class, "", "()V"))); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + handle_cache.apk_main_activity.onCreate = _METHOD(handle_cache.apk_main_activity.class, "onCreate", "(Landroid/os/Bundle;)V"); +// handle_cache.apk_main_activity.onWindowFocusChanged = _METHOD(handle_cache.apk_main_activity.class, "onWindowFocusChanged", "(B)V"); + handle_cache.apk_main_activity.onDestroy = _METHOD(handle_cache.apk_main_activity.class, "onDestroy", "()V"); + handle_cache.apk_main_activity.set_window = _METHOD((*env)->FindClass(env, "android/app/Activity"), "set_window", "(J)V"); + + handle_cache.attribute_set.class = _REF((*env)->FindClass(env, "android/util/AttributeSet")); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + handle_cache.attribute_set.getAttributeValue_string = _METHOD(handle_cache.attribute_set.class, "getAttributeValue", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + handle_cache.attribute_set.getAttributeValue_int = _METHOD(handle_cache.attribute_set.class, "getAttributeIntValue", "(Ljava/lang/String;Ljava/lang/String;I)I"); + + handle_cache.array_list.class = _REF((*env)->FindClass(env, "java/util/ArrayList")); + handle_cache.array_list.add = _METHOD(handle_cache.array_list.class, "add", "(Ljava/lang/Object;)Z"); + handle_cache.array_list.remove = _METHOD(handle_cache.array_list.class, "remove", "(Ljava/lang/Object;)Z"); + handle_cache.array_list.get = _METHOD(handle_cache.array_list.class, "get", "(I)Ljava/lang/Object;"); + handle_cache.array_list.size = _METHOD(handle_cache.array_list.class, "size", "()I"); + handle_cache.array_list.clear = _METHOD(handle_cache.array_list.class, "clear", "()V"); + + handle_cache.paint.class = _REF((*env)->FindClass(env, "android/graphics/Paint")); + handle_cache.paint.getColor = _METHOD(handle_cache.paint.class, "getColor", "()I"); + + handle_cache.motion_event.class = _REF((*env)->FindClass(env, "android/view/MotionEvent")); + handle_cache.motion_event.constructor = _METHOD(handle_cache.motion_event.class, "", "(IFF)V"); + + handle_cache.canvas.class = _REF((*env)->FindClass(env, "android/graphics/Canvas")); + handle_cache.canvas.constructor = _METHOD(handle_cache.canvas.class, "", "(JJ)V"); + + handle_cache.renderer.class = _REF((*env)->FindClass(env, "android/opengl/GLSurfaceView$Renderer")); + handle_cache.renderer.onSurfaceCreated = _METHOD(handle_cache.renderer.class, "onSurfaceCreated", "(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V"); + handle_cache.renderer.onSurfaceChanged = _METHOD(handle_cache.renderer.class, "onSurfaceChanged", "(Ljavax/microedition/khronos/opengles/GL10;II)V"); + handle_cache.renderer.onDrawFrame = _METHOD(handle_cache.renderer.class, "onDrawFrame", "(Ljavax/microedition/khronos/opengles/GL10;)V"); + + handle_cache.gl_surface_view.class = _REF((*env)->FindClass(env, "android/opengl/GLSurfaceView")); + handle_cache.gl_surface_view.onTouchEvent = _METHOD(handle_cache.gl_surface_view.class, "onTouchEvent", "(Landroid/view/MotionEvent;)Z"); + handle_cache.gl_surface_view.wrap_EGLContextFactory_createContext = _METHOD(handle_cache.gl_surface_view.class, "wrap_EGLContextFactory_createContext", "(JJ)J"); + handle_cache.gl_surface_view.wrap_EGLConfigChooser_chooseConfig = _METHOD(handle_cache.gl_surface_view.class, "wrap_EGLConfigChooser_chooseConfig", "(J)J"); + + handle_cache.audio_track_periodic_listener.class = _REF((*env)->FindClass(env, "android/media/AudioTrack$OnPlaybackPositionUpdateListener")); + handle_cache.audio_track_periodic_listener.onPeriodicNotification = _METHOD(handle_cache.audio_track_periodic_listener.class, "onPeriodicNotification", "(Landroid/media/AudioTrack;)V"); + + handle_cache.view.class = _REF((*env)->FindClass(env, "android/view/View")); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + handle_cache.view.setLayoutParams = _METHOD(handle_cache.view.class, "setLayoutParams", "(Landroid/view/ViewGroup$LayoutParams;)V"); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); +} diff --git a/src/api-impl-jni/util.h b/src/api-impl-jni/util.h new file mode 100644 index 00000000..9214f1ac --- /dev/null +++ b/src/api-impl-jni/util.h @@ -0,0 +1,70 @@ +#ifndef _UTILS_H_ +#define _UTILS_H_ + +#include + +#include "defines.h" + +struct handle_cache { + struct { + jclass class; + jobject object; + jmethodID onCreate; + jmethodID onWindowFocusChanged; + jmethodID onDestroy; + jmethodID set_window; + } apk_main_activity; + struct { + jclass class; + jmethodID getAttributeValue_string; + jmethodID getAttributeValue_int; + } attribute_set; + struct { + jclass class; + jmethodID add; + jmethodID remove; + jmethodID get; + jmethodID size; + jmethodID clear; + } array_list; + struct { + jclass class; + jmethodID getColor; + } paint; + struct { + jclass class; + jmethodID constructor; + } motion_event; + struct { + jclass class; + jmethodID constructor; + } canvas; + struct { + jclass class; + jmethodID onSurfaceCreated; + jmethodID onSurfaceChanged; + jmethodID onDrawFrame; + } renderer; + struct { + jclass class; + jmethodID onTouchEvent; + jmethodID wrap_EGLContextFactory_createContext; + jmethodID wrap_EGLConfigChooser_chooseConfig; + } gl_surface_view; + struct { + jclass class; + jmethodID onPeriodicNotification; + } audio_track_periodic_listener; + struct { + jclass class; + jmethodID setLayoutParams; + } view; +}; + +extern struct handle_cache handle_cache; + +const char * attribute_set_get_string(JNIEnv *env, jobject attrs, char *attribute, char *schema); +int attribute_set_get_int(JNIEnv *env, jobject attrs, char *attribute, char *schema, int default_value); +void set_up_handle_cache(JNIEnv *env, char *apk_main_activity_class); + +#endif diff --git a/src/api-impl-jni/views/android_view_View.c b/src/api-impl-jni/views/android_view_View.c new file mode 100644 index 00000000..17ae58b5 --- /dev/null +++ b/src/api-impl-jni/views/android_view_View.c @@ -0,0 +1,233 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "../widgets/WrapperWidget.h" + +#include "../generated_headers/android_view_View.h" + +struct touch_callback_data { JavaVM *jvm; jobject this; jobject on_touch_listener; jclass on_touch_listener_class; }; + +static void call_ontouch_callback(int action, float x, float y, struct touch_callback_data *d) +{ + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + jobject motion_event = (*env)->NewObject(env, handle_cache.motion_event.class, handle_cache.motion_event.constructor, action, x, y); + + (*env)->CallBooleanMethod(env, d->on_touch_listener, _METHOD(d->on_touch_listener_class, "onTouch", "(Landroid/view/View;Landroid/view/MotionEvent;)Z"), d->this, motion_event); + + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + (*env)->DeleteLocalRef(env, motion_event); +} + +static void on_press(GtkGestureClick *gesture, int n_press, double x, double y, struct touch_callback_data *d) +{ + call_ontouch_callback(MOTION_EVENT_ACTION_DOWN, (float)x, (float)y, d); +} + +static void on_release(GtkGestureClick *gesture, int n_press, double x, double y, struct touch_callback_data *d) +{ + call_ontouch_callback(MOTION_EVENT_ACTION_UP, (float)x, (float)y, d); +} + +static void on_click(GtkGestureClick *gesture, int n_press, double x, double y, struct touch_callback_data *d) +{ + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + (*env)->CallBooleanMethod(env, d->on_touch_listener, _METHOD(d->on_touch_listener_class, "onClick", "(Landroid/view/View;)V"), d->this); + + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); +} + +JNIEXPORT void JNICALL Java_android_view_View_setOnTouchListener(JNIEnv *env, jobject this, jobject on_touch_listener) +{ + GtkWidget *widget = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + + JavaVM *jvm; + (*env)->GetJavaVM(env, &jvm); + + struct touch_callback_data *callback_data = malloc(sizeof(struct touch_callback_data)); + callback_data->jvm = jvm; + callback_data->this = _REF(this); + callback_data->on_touch_listener = _REF(on_touch_listener); + callback_data->on_touch_listener_class = _REF(_CLASS(callback_data->on_touch_listener)); + + GtkEventController *controller = GTK_EVENT_CONTROLLER(gtk_gesture_click_new()); + + g_signal_connect(controller, "pressed", G_CALLBACK(on_press), callback_data); + g_signal_connect(controller, "released", G_CALLBACK(on_release), callback_data); + gtk_widget_add_controller(widget, controller); +} + +JNIEXPORT void JNICALL Java_android_view_View_setOnClickListener(JNIEnv *env, jobject this, jobject on_click_listener) +{ + GtkWidget *widget = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + + JavaVM *jvm; + (*env)->GetJavaVM(env, &jvm); + + struct touch_callback_data *callback_data = malloc(sizeof(struct touch_callback_data)); + callback_data->jvm = jvm; + callback_data->this = _REF(this); + callback_data->on_touch_listener = _REF(on_click_listener); + callback_data->on_touch_listener_class = _REF(_CLASS(callback_data->on_touch_listener)); + + GtkEventController *controller = GTK_EVENT_CONTROLLER(gtk_gesture_click_new()); + + g_signal_connect(controller, "released", G_CALLBACK(on_click), callback_data); // the release completes the click, I guess? + gtk_widget_add_controller(widget, controller); +} + +JNIEXPORT jint JNICALL Java_android_view_View_getWidth(JNIEnv *env, jobject this) +{ + GtkWidget *widget = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + +/* FIXME: is this needed in Gtk4? + GtkAllocation alloc; + gtk_widget_get_allocation(widget, &alloc); + printf("widget size is currently %dx%d\n", alloc.width, alloc.height); +*/ + return gtk_widget_get_width(widget); +} + +JNIEXPORT jint JNICALL Java_android_view_View_getHeight(JNIEnv *env, jobject this) +{ + GtkWidget *widget = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + + return gtk_widget_get_height(widget); +} + +#define GRAVITY_TOP (1<<5)//0x30 +#define GRAVITY_BOTTOM (1<<6)//0x50 +#define GRAVITY_LEFT (1<<1)//0x3 +#define GRAVITY_RIGHT (1<<2)//0x5 + +#define GRAVITY_CENTER_VERTICAL 0x10 +#define GRAVITY_CENTER_HORIZONTAL 0x01 + +#define GRAVITY_CENTER (GRAVITY_CENTER_VERTICAL | GRAVITY_CENTER_HORIZONTAL) + +JNIEXPORT void JNICALL Java_android_view_View_setGravity(JNIEnv *env, jobject this, jint gravity) +{ + GtkWidget *widget = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget")))); + + printf(":::-: setting gravity: %d\n", gravity); + + if(gravity & GRAVITY_BOTTOM) + gtk_widget_set_valign(widget, GTK_ALIGN_END); + else if(gravity & GRAVITY_TOP) + gtk_widget_set_valign(widget, GTK_ALIGN_START); + else + gtk_widget_set_valign(widget, GTK_ALIGN_FILL); + + if(gravity & GRAVITY_RIGHT) + gtk_widget_set_halign(widget, GTK_ALIGN_END); + else if(gravity & GRAVITY_LEFT) + gtk_widget_set_halign(widget, GTK_ALIGN_START); + else + gtk_widget_set_halign(widget, GTK_ALIGN_FILL); + + if(gravity == GRAVITY_CENTER) { + gtk_widget_set_valign(widget, GTK_ALIGN_FILL); // GTK_ALIGN_CENTER doesn't seem to be the right one? + gtk_widget_set_halign(widget, GTK_ALIGN_FILL); // ditto (GTK_ALIGN_CENTER) + gtk_widget_set_hexpand(widget, true); // haxx or not? + gtk_widget_set_vexpand(widget, true); // seems to be the deciding factor for whether to expand, guess I should try on android + } +} + +JNIEXPORT void JNICALL Java_android_view_View_native_1set_1size_1request(JNIEnv *env, jobject this, jint width, jint height) +{ + GtkWidget *widget = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget")))); + + if(width > 0) + g_object_set(G_OBJECT(widget), "width-request", width, NULL); + if(height > 0) + g_object_set(G_OBJECT(widget), "height-request", height, NULL); +} + +JNIEXPORT void JNICALL Java_android_view_View_setVisibility(JNIEnv *env, jobject this, jint visibility) { + GtkWidget *widget = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget")))); + + switch (visibility) { + case android_view_View_VISIBLE: + gtk_widget_set_visible(widget, true); + break; + case android_view_View_INVISIBLE: + printf("!!! View.INVISIBLE not implemented, now is a good time to check what it's supposed to do ;)\n"); + break; + case android_view_View_GONE: + gtk_widget_set_visible(widget, false); + break; + } +} + +// --- the stuff below only applies to widgets that override the OnDraw() method; other widgets are created by class-specific constructors. +// FIXME: how do we handle someone subclassing something other then View and then overriding the onDraw/onMeasure method(s)? + +struct jni_callback_data { JavaVM *jvm; jobject this; jclass this_class; cairo_t *cached_cr; jobject canvas;}; + +static void draw_function(GtkDrawingArea *area, cairo_t *cr, int width, int height, struct jni_callback_data *d) +{ + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + if(d->cached_cr != cr) { + if(d->canvas == NULL) { + d->canvas = _REF((*env)->NewObject(env, handle_cache.canvas.class, handle_cache.canvas.constructor, _INTPTR(cr), _INTPTR(area))); + } else { + _SET_LONG_FIELD(d->canvas, "cairo_context", _INTPTR(cr)); + } + d->cached_cr = cr; + } + + (*env)->CallVoidMethod(env, d->this, _METHOD(d->this_class, "onDraw", "(Landroid/graphics/Canvas;)V"), d->canvas); + + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); +} + +void on_mapped(GtkWidget* self, struct jni_callback_data *d) +{ + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + (*env)->CallVoidMethod(env, d->this, _METHOD(d->this_class, "onMeasure", "(II)V"), gtk_widget_get_width(self), gtk_widget_get_height(self)); +} + +gboolean tick_callback(GtkWidget* widget, GdkFrameClock* frame_clock, gpointer user_data) +{ + gtk_widget_queue_draw(widget); + return G_SOURCE_CONTINUE; +} + +JNIEXPORT void JNICALL Java_android_view_View_native_1constructor(JNIEnv *env, jobject this, jobject Context) +{ + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *area = gtk_drawing_area_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), area); + + JavaVM *jvm; + (*env)->GetJavaVM(env, &jvm); + + struct jni_callback_data *callback_data = malloc(sizeof(struct jni_callback_data)); + callback_data->jvm = jvm; + callback_data->this = _REF(this); + callback_data->this_class = _REF(_CLASS(this)); + callback_data->cached_cr = NULL; + callback_data->canvas = NULL; + + gtk_drawing_area_set_draw_func(GTK_DRAWING_AREA(area), ( void(*)(GtkDrawingArea*,cairo_t*,int,int,gpointer) )draw_function, callback_data, NULL); + + gtk_widget_add_tick_callback(area, tick_callback, NULL, NULL); + + // add a callback for when the widget is mapped, which will call onMeasure to figure out what size the widget wants to be + g_signal_connect(area, "map", G_CALLBACK(on_mapped), callback_data); + + _SET_LONG_FIELD(this, "widget", (long)area); +} diff --git a/src/api-impl-jni/views/android_view_ViewGroup.c b/src/api-impl-jni/views/android_view_ViewGroup.c new file mode 100644 index 00000000..2d088303 --- /dev/null +++ b/src/api-impl-jni/views/android_view_ViewGroup.c @@ -0,0 +1,66 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "../generated_headers/android_view_ViewGroup.h" +#include "../generated_headers/android_view_View.h" + +JNIEXPORT void JNICALL Java_android_view_ViewGroup_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +{ + GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))); + jint child_width = -1; + jint child_height = -1; + + if(layout_params) { + (*env)->CallVoidMethod(env, child, handle_cache.view.setLayoutParams, layout_params); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + /* + jint child_width = _GET_INT_FIELD(layout_params, "width"); + jint child_height = _GET_INT_FIELD(layout_params, "height"); + + jint child_gravity = _GET_INT_FIELD(layout_params, "gravity"); + + if(child_width > 0) + g_object_set(G_OBJECT(_child), "width-request", child_width, NULL); + if(child_height > 0) + g_object_set(G_OBJECT(_child), "height-request", child_height, NULL); + + if(child_gravity != -1) { + printf(":::-: setting child gravity: %d", child_gravity); + Java_android_view_View_setGravity(env, child, child_gravity); + }*/ + } + + _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", this); + + jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); + + (*env)->CallVoidMethod(env, children, handle_cache.array_list.add, child); +} + + +JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeView(JNIEnv *env, jobject this, jobject child) +{ + _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", NULL); + + jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); + + (*env)->CallVoidMethod(env, children, handle_cache.array_list.remove, child); +} + + +JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeAllViews(JNIEnv *env, jobject this) +{ + jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); + jint size = (*env)->CallIntMethod(env, children, handle_cache.array_list.size); + + for(int i = 0; i < size; i++) { + jobject child = (*env)->CallObjectMethod(env, children, handle_cache.array_list.get, i); + _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", NULL); + } + + (*env)->CallVoidMethod(env, children, handle_cache.array_list.clear); +} diff --git a/src/api-impl-jni/widgets/WrapperWidget.c b/src/api-impl-jni/widgets/WrapperWidget.c new file mode 100644 index 00000000..13ff5871 --- /dev/null +++ b/src/api-impl-jni/widgets/WrapperWidget.c @@ -0,0 +1,104 @@ +#include + +#include "../drawables/ninepatch.h" + +#include "WrapperWidget.h" + +/** + * gdk_texture_new_for_surface: + * @surface: a cairo image surface + * + * Creates a new texture object representing the surface. + * + * @surface must be an image surface with format CAIRO_FORMAT_ARGB32. + * + * Returns: a new `GdkTexture` + */ +GdkTexture * gdk_texture_new_for_surface (cairo_surface_t *surface) +{ + GdkTexture *texture; + GBytes *bytes; + + g_return_val_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE, NULL); + g_return_val_if_fail (cairo_image_surface_get_width (surface) > 0, NULL); + g_return_val_if_fail (cairo_image_surface_get_height (surface) > 0, NULL); + + bytes = g_bytes_new_with_free_func (cairo_image_surface_get_data (surface), + cairo_image_surface_get_height (surface) + * cairo_image_surface_get_stride (surface), + (GDestroyNotify) cairo_surface_destroy, + cairo_surface_reference (surface)); + + texture = gdk_memory_texture_new (cairo_image_surface_get_width (surface), + cairo_image_surface_get_height (surface), + GDK_MEMORY_DEFAULT, + bytes, + cairo_image_surface_get_stride (surface)); + + g_bytes_unref (bytes); + + return texture; +} + +// --- + +G_DEFINE_TYPE(WrapperWidget, wrapper_widget, GTK_TYPE_WIDGET) + +static void wrapper_widget_init (WrapperWidget *frame_layout) +{ + +} + +static void wrapper_widget_dispose(GObject *wrapper_widget) +{ + gtk_widget_unparent(gtk_widget_get_first_child(GTK_WIDGET(wrapper_widget))); + G_OBJECT_CLASS (wrapper_widget_parent_class)->dispose (wrapper_widget); +} + +void wrapper_snapshot(GtkWidget* widget, GtkSnapshot* snapshot) +{ + struct ninepatch_t *ninepatch = g_object_get_data(G_OBJECT(widget), "background_ninepatch"); + + if(ninepatch && 0) { + GtkAllocation alloc; + gtk_widget_get_allocation(widget, &alloc); + + ninepatch_stretch(ninepatch, alloc.width, alloc.height); + + cairo_surface_t *surface = ninepatch_to_surface(ninepatch); + +// GdkPixbuf *pixbuf = gdk_pixbuf_get_from_surface(surface, 0, 0, ninepatch->__w, ninepatch->__h); +// GdkTexture *texture = gdk_texture_new_for_pixbuf(pixbuf); + GdkTexture *texture = gdk_texture_new_for_surface(surface); + + gtk_snapshot_append_texture(snapshot, texture, &GRAPHENE_RECT_INIT(0, 0, ninepatch->__w, ninepatch->__h)); + + cairo_surface_destroy(surface); +// g_object_unref(pixbuf); + g_object_unref(texture); + } + gtk_widget_snapshot_child(widget, gtk_widget_get_first_child(widget), snapshot); +} + + +static void wrapper_widget_class_init(WrapperWidgetClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + + object_class->dispose = wrapper_widget_dispose; + + widget_class->snapshot = wrapper_snapshot; + + gtk_widget_class_set_layout_manager_type(widget_class, GTK_TYPE_BIN_LAYOUT); +} + +GtkWidget * wrapper_widget_new(void) +{ + return g_object_new (wrapper_widget_get_type(), NULL); +} + +void wrapper_widget_set_child(WrapperWidget *parent, GtkWidget *child) // TODO: make sure there can only be one child +{ + gtk_widget_insert_before(child, GTK_WIDGET(parent), NULL); +} diff --git a/src/api-impl-jni/widgets/WrapperWidget.h b/src/api-impl-jni/widgets/WrapperWidget.h new file mode 100644 index 00000000..901b8e64 --- /dev/null +++ b/src/api-impl-jni/widgets/WrapperWidget.h @@ -0,0 +1,19 @@ +#ifndef WRAPPER_WIDGET_H +#define WRAPPER_WIDGET_H + +G_DECLARE_FINAL_TYPE (WrapperWidget, wrapper_widget, WRAPPER, WIDGET, GtkWidget) + +struct _WrapperWidget +{ + GtkWidget parent_instance; +}; + +struct _WrapperWidgetClass +{ + GtkWidgetClass parent_class; +}; + +GtkWidget * wrapper_widget_new(void); +void wrapper_widget_set_child(WrapperWidget *parent, GtkWidget *child); + +#endif diff --git a/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c b/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c new file mode 100644 index 00000000..c5fab98f --- /dev/null +++ b/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c @@ -0,0 +1,496 @@ +#define GL_GLEXT_PROTOTYPES + +#include +#include + +#include +#include +#include + +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_opengl_GLSurfaceView.h" + +//#define FIXME__WIDTH 540 +//#define FIXME__HEIGHT 960 + +// FIXME: what do we do here? we should probably take these from the size of the GLArea, but how do we change the sizes of all the textures and buffers etc when the GLArea changes size? +// for now, borrow the initial app window width/height +extern int FIXME__WIDTH; +extern int FIXME__HEIGHT; + +// mainly frame markers (very obtrusive, not recommended for most builds) +#ifdef DEBUG_GLAREA +#define d_printf(...) printf(VA_ARGS) +#else +#define d_printf(...) +#endif + +#define ___GL_TRACE___(message) glDebugMessageInsert(GL_DEBUG_SOURCE_THIRD_PARTY, GL_DEBUG_TYPE_MARKER, 0xdeadbeef, GL_DEBUG_SEVERITY_NOTIFICATION, strlen(message), message) + +JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) +{ + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *gl_area = gtk_gl_area_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), gl_area); + _SET_LONG_FIELD(this, "widget", _INTPTR(gl_area)); +} + +//two triangles put together to make a square +const float positions[] = { + -1, -1, 0, + -1, 1, 0, + 1, -1, 0, + 1, -1, 0, + -1, 1, 0, + 1, 1, 0 +}; + +const char *vertexStr = "#version 320 es\n" + "in vec3 pos;\n" + "out vec2 texCoords;\n" + "void main(){\n" + " texCoords = vec2(pos.x, pos.y);\n" + " gl_Position = vec4((pos.x * 2.0) - 1.0, (pos.y * 2.0) - 1.0, pos.z, 1.0);\n" + "}\n"; + +const char *fragmentStr = "#version 320 es\n" + "out highp vec4 outputColor;\n" + "in highp vec2 texCoords;\n" + "uniform sampler2D texSampler;\n" + "void main(){\n" + " outputColor = texture(texSampler, texCoords);\n" + "}\n"; + +struct render_priv { + GLuint program; + GLuint vao; + int texUnit; + GLuint texBufferdObject; + GLuint sampler; + +/* --- */ + EGLSurface eglSurface; + EGLContext eglContext; + + GLuint FramebufferName; + GLuint renderedTexture; + GLuint texture_id; + + EGLImage egl_image; +}; + +static void check_shader_compile_error(GLuint shader) +{ + GLint compileResult; + glGetShaderiv(shader, GL_COMPILE_STATUS, &compileResult); + + if(compileResult != GL_TRUE) { + GLint log_size = 0; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_size); + + GLchar *info_log = malloc(log_size); + glGetShaderInfoLog(shader, log_size, &log_size, info_log); + fprintf(stderr, "\nError compiling one of the shaders used by GLSurfaceView:\n%s\n---\nsince this error shouldn't ever happen, we fail hard\n", info_log); + free(info_log); + + exit(1); + } +} + +static void check_program_link_error(GLuint program) +{ + GLint link_status = 0; + glGetProgramiv(program, GL_LINK_STATUS, &link_status); + + if(link_status != GL_TRUE) { + GLint log_size = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_size); + + GLchar *info_log = malloc(log_size); + glGetProgramInfoLog(program, log_size, &log_size, info_log); + fprintf(stderr, "\nError linking the program used by GLSurfaceView:\n%s\n---\nsince this error shouldn't ever happen, we fail hard\n", info_log); + free(info_log); + + exit(1); + } +} + +#define check_egl_error() \ + do { \ + EGLint error_ = eglGetError(); \ + if(error_ != EGL_SUCCESS) \ + fprintf(stderr, "\nError in %s (%s:%d): \n" \ + "eglGetError reported 0x%x\n" \ + "this might be because we need to implement more stuff, so we will continue from here\n", \ + __func__, __FILE__, __LINE__, error_); \ + } while(0) + +// TODO: use this where appropriate +#define check_gl_error() \ + do { \ + GLenum error_ = glGetError(); \ + if(error_ != GL_NO_ERROR) \ + fprintf(stderr, "\nError in %s (%s:%d): \n" \ + "glGetError reported 0x%x\n" \ + "this might be because we need to implement more stuff, so we will continue from here\n", \ + __func__, __FILE__, __LINE__, error_); \ + } while(0) + + +struct jni_gl_callback_data { JavaVM *jvm; jobject this; jobject renderer; bool first_time;}; +static void on_realize(GtkGLArea *gl_area, struct jni_gl_callback_data *d) +{ + gtk_gl_area_make_current(gl_area); + + struct render_priv *render_priv = g_object_get_data(G_OBJECT(gl_area), "render_priv"); + + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + EGLDisplay eglDisplay = eglGetDisplay((EGLNativeDisplayType)0); + EGLDisplay old_eglDisplay = eglGetCurrentDisplay(); + + d_printf("GTK version: >%d__%d__%d<\n", gtk_get_major_version(), gtk_get_minor_version(), gtk_get_micro_version()); + d_printf("OpenGL version: >%s<\n", glGetString(GL_VERSION)); + + glGenTextures(1, &render_priv->texture_id); + + // vertex shader + + GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertexShader, 1, &vertexStr, NULL); + glCompileShader(vertexShader); + + check_shader_compile_error(vertexShader); + + // fragment shader + + GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragmentShader, 1, &fragmentStr, NULL); + glCompileShader(fragmentShader); + + check_shader_compile_error(fragmentShader); + + // program + + render_priv->program = glCreateProgram(); + + glAttachShader(render_priv->program, vertexShader); + glAttachShader(render_priv->program, fragmentShader); + glLinkProgram(render_priv->program); + + check_program_link_error(render_priv->program); + + glUseProgram(render_priv->program); + + // the triangles + + glGenVertexArrays(1, &render_priv->vao); + glBindVertexArray(render_priv->vao); + + GLuint positionBufferObject; + glGenBuffers(1, &positionBufferObject); + glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*6*3,positions, GL_STREAM_DRAW); + + GLuint posIndex = glGetAttribLocation(render_priv->program, "pos"); + glEnableVertexAttribArray(posIndex); + glVertexAttribPointer(posIndex, 3, GL_FLOAT, GL_FALSE, 0, 0); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + glUseProgram(0); + + glUseProgram(render_priv->program); + + // the texture we will be rendering to + + glGenTextures(1, &render_priv->texBufferdObject); + glBindTexture(GL_TEXTURE_2D, render_priv->texBufferdObject); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); + glBindTexture(GL_TEXTURE_2D, 0); + + // texture sampler for our triangles + + glGenSamplers(1, &render_priv->sampler); + glSamplerParameteri(render_priv->sampler, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glSamplerParameteri(render_priv->sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glSamplerParameteri(render_priv->sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + GLuint samplerUniform = glGetUniformLocation(render_priv->program, "texSampler"); + glUniform1i(samplerUniform, render_priv->texUnit); + glUseProgram(0); + + // EGL setup + + eglInitialize(eglDisplay, 0, 0); + eglBindAPI(EGL_OPENGL_ES_API); + + EGLConfig eglConfig; + + // a roundabout way to let the app define the parameter list, and then choose the best fit out of all the returned configs + eglConfig = (EGLConfig)_PTR((*env)->CallLongMethod(env, d->this, handle_cache.gl_surface_view.wrap_EGLConfigChooser_chooseConfig, _INTPTR(eglDisplay))); + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + check_egl_error(); + + // set up the pbuffer (TODO: is there any way to dynamically change the width/height?) + + EGLint pbufferAttribs[5]; + pbufferAttribs[0] = EGL_WIDTH; + pbufferAttribs[1] = FIXME__WIDTH; + pbufferAttribs[2] = EGL_HEIGHT; + pbufferAttribs[3] = FIXME__HEIGHT; + pbufferAttribs[4] = EGL_NONE; + + render_priv->eglSurface = eglCreatePbufferSurface(eglDisplay, eglConfig, pbufferAttribs); + check_egl_error(); + + // a roundabout way to run eglCreateContext with the atrribute list that the app chose + render_priv->eglContext = (EGLContext)_PTR((*env)->CallLongMethod(env, d->this, handle_cache.gl_surface_view.wrap_EGLContextFactory_createContext, _INTPTR(eglDisplay), _INTPTR(eglConfig))); + check_egl_error(); + + // save the EGL state before we change it, so we can switch back later + EGLContext old_eglContext = eglGetCurrentContext(); + EGLSurface old_read_surface = eglGetCurrentSurface(EGL_READ); + EGLSurface old_draw_surface = eglGetCurrentSurface(EGL_DRAW); + + bool result = eglMakeCurrent(eglDisplay, render_priv->eglSurface, render_priv->eglSurface, render_priv->eglContext); + check_egl_error(); + + // set up the framebuffer + glGenFramebuffers(1, &render_priv->FramebufferName); + glBindFramebuffer(GL_FRAMEBUFFER, render_priv->FramebufferName); + check_gl_error(); + + glGenTextures(1, &render_priv->renderedTexture); + glBindTexture(GL_TEXTURE_2D, render_priv->renderedTexture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, FIXME__WIDTH, FIXME__HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); + check_gl_error(); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + check_gl_error(); + + GLuint depthrenderbuffer; + glGenRenderbuffers(1, &depthrenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, depthrenderbuffer); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, FIXME__WIDTH, FIXME__HEIGHT); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthrenderbuffer); + check_gl_error(); + + // Set "renderedTexture" as our colour attachement #0 + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, render_priv->renderedTexture, 0); + check_gl_error(); + + // Set the list of draw buffers. + GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0}; + glDrawBuffers(1, DrawBuffers); // "1" is the size of DrawBuffers + check_gl_error(); + + if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + fprintf(stderr, "Error: glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE\n"); + + // create the EGL Image which we will use to access the rendered-to texture from Gtk's EGL context + render_priv->egl_image = eglCreateImage(eglDisplay, render_priv->eglContext, EGL_GL_TEXTURE_2D, (EGLClientBuffer)(intptr_t)render_priv->renderedTexture, NULL); + check_egl_error(); + + // Here we call the app's onSurfaceCreated callback. This is the android API's equivalent of the `realize` callback that we are currently in. + ___GL_TRACE___("---- calling onSurfaceCreated"); + (*env)->CallVoidMethod(env, d->renderer, handle_cache.renderer.onSurfaceCreated, _GET_OBJ_FIELD(d->this, "java_gl_wrapper", "Ljavax/microedition/khronos/opengles/GL10;"), NULL); // FIXME passing NULL only works if the app doesn't use these parameters + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + ___GL_TRACE___("---- returned from calling onSurfaceCreated"); + + // This should be called from Gtk's `resize` callback. However, until we figure out how to resize the pbuffer, the framebuffer, and the texture, we can't afford to pass the actual widget's dimensions here + ___GL_TRACE___("---- calling onSurfaceChanged"); + (*env)->CallVoidMethod(env, d->renderer, handle_cache.renderer.onSurfaceChanged, NULL, FIXME__WIDTH, FIXME__HEIGHT); // FIXME put this in the right callback (and pass the actual dimensions) + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + ___GL_TRACE___("---- returned from calling onSurfaceChanged"); + + // restore the EGL context so that Gtk doesn't get confused + + result = eglMakeCurrent(old_eglDisplay, old_read_surface, old_draw_surface, old_eglContext); + check_egl_error(); +} + +static gboolean render(GtkGLArea *gl_area, GdkGLContext *context, struct jni_gl_callback_data *d) +{ + struct render_priv *render_priv = g_object_get_data(G_OBJECT(gl_area), "render_priv"); + + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + EGLDisplay eglDisplay = eglGetDisplay((EGLNativeDisplayType)0); + EGLDisplay old_eglDisplay = eglGetCurrentDisplay(); + + // save the EGL state before we change it, so we can switch back later + EGLContext old_eglContext = eglGetCurrentContext(); + EGLSurface old_read_surface = eglGetCurrentSurface(EGL_READ); + EGLSurface old_draw_surface = eglGetCurrentSurface(EGL_DRAW); + + bool result = eglMakeCurrent(eglDisplay, render_priv->eglSurface, render_priv->eglSurface, render_priv->eglContext); + check_egl_error(); + + // bind the framebuffer that we are rendering into + check_gl_error(); + glBindFramebuffer(GL_FRAMEBUFFER, render_priv->FramebufferName); + check_gl_error(); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, render_priv->renderedTexture, 0); + check_gl_error(); + + if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + fprintf(stderr, "Error: glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE\n"); + + d_printf("OpenGL version before calling onDrawFrame: >%s<\n", glGetString(GL_VERSION)); + d_printf("\n\n\n---- calling onDrawFrame\n\n"); + // this marks the part where the app is doing the rendering (as opposed to Gtk) for easier orientation in a trace (e.g apitrace) + // TODO: make a program that extracts just these fragments from a trace + // TODO: add a unique identifier of this GLArea (worst case the pointer to this widget) +check_gl_error(); + ___GL_TRACE___("---- calling onDrawFrame"); + + // Here we call the app's onDrawFrame callback. This is the android API's equivalent of the `render` callback that we are currently in. + (*env)->CallVoidMethod(env, d->renderer, handle_cache.renderer.onDrawFrame, NULL); // FIXME passing NULL only works if the app doesn't use this parameter + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + ___GL_TRACE___("---- returned from calling onDrawFrame"); +check_gl_error(); + d_printf("\n---- returned from calling onDrawFrame\n\n\n\n"); + + eglSwapBuffers(eglDisplay, render_priv->eglSurface); + + // switch the EGL context back to Gtk's one + result = eglMakeCurrent(old_eglDisplay, old_read_surface, old_draw_surface, old_eglContext); + check_egl_error(); + + gtk_gl_area_make_current(gl_area); + + d_printf("OpenGL version after restore: >%s<\n", glGetString(GL_VERSION)); + d_printf("\n\n\n---- drawing the texture containing our frame\n\n"); + ___GL_TRACE___("---- drawing the texture containing our frame"); + + // draw on a black background (TODO: isn't this pointless?) + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClearDepth(1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // draw two triangles (a rectangle) painted with the texture that we were rendering into + glUseProgram(render_priv->program); + glBindVertexArray(render_priv->vao); + + glActiveTexture(GL_TEXTURE0 + render_priv->texUnit); + glBindTexture(GL_TEXTURE_2D, render_priv->texBufferdObject); + + glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, render_priv->egl_image); + glBindSampler(render_priv->texUnit, render_priv->sampler); + + glDrawArrays(GL_TRIANGLES, 0, 6); + + glBindVertexArray(0); + glBindTexture(GL_TEXTURE_2D, 0); + glUseProgram(0); + + ___GL_TRACE___("---- end of drawing the texture containing our frame"); + d_printf("\n---- end of drawing the texture containing our frame\n\n\n\n"); + + return TRUE; +} + +struct jni_callback_data { JavaVM *jvm; jobject this; jclass this_class; }; + +static void call_ontouch_callback(int action, float x, float y, struct jni_callback_data *d) +{ + JNIEnv *env; + (*d->jvm)->GetEnv(d->jvm, (void**)&env, JNI_VERSION_1_6); + + jobject motion_event = (*env)->NewObject(env, handle_cache.motion_event.class, handle_cache.motion_event.constructor, action, x, y); + + (*env)->CallBooleanMethod(env, d->this, handle_cache.gl_surface_view.onTouchEvent, motion_event); + + if((*env)->ExceptionCheck(env)) + (*env)->ExceptionDescribe(env); + + (*env)->DeleteLocalRef(env, motion_event); +} + +static gboolean on_event(GtkEventControllerLegacy* self, GdkEvent* event, struct jni_callback_data *d) +{ + double x; + double y; + + // TODO: this doesn't work for multitouch + switch(gdk_event_get_event_type(event)) { + case GDK_BUTTON_PRESS: + gdk_event_get_position(event, &x, &y); + call_ontouch_callback(MOTION_EVENT_ACTION_DOWN, (float)x, (float)y, d); + break; + case GDK_BUTTON_RELEASE: + gdk_event_get_position(event, &x, &y); + call_ontouch_callback(MOTION_EVENT_ACTION_UP, (float)x, (float)y, d); + break; + case GDK_MOTION_NOTIFY: + gdk_event_get_position(event, &x, &y); + call_ontouch_callback(MOTION_EVENT_ACTION_MOVE, (float)x, (float)y, d); + break; + } +} + +extern gboolean tick_callback(GtkWidget* widget, GdkFrameClock* frame_clock, gpointer user_data); + +JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1set_1renderer(JNIEnv *env, jobject this, jobject renderer, jboolean implements_onTouchEvent) +{ + GtkWidget *gl_area = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + + gtk_gl_area_set_has_stencil_buffer(GTK_GL_AREA(gl_area), true); // FIXME don't assume what the app wants + gtk_gl_area_set_has_depth_buffer(GTK_GL_AREA(gl_area), true); + + gtk_gl_area_set_use_es(GTK_GL_AREA(gl_area), true); // FIXME + + struct render_priv *render_priv = malloc(sizeof(struct render_priv)); + render_priv->texUnit = 0; + render_priv->sampler = 0; + render_priv->FramebufferName = 0; + + g_object_set_data(G_OBJECT(gl_area), "render_priv", render_priv); + + JavaVM *jvm; + (*env)->GetJavaVM(env, &jvm); + + struct jni_gl_callback_data *gl_callback_data = malloc(sizeof(struct jni_gl_callback_data)); + gl_callback_data->jvm = jvm; + gl_callback_data->this = _REF(this); + gl_callback_data->renderer = _REF(renderer); + gl_callback_data->first_time = 1; + + g_signal_connect(gl_area, "render", G_CALLBACK(render), gl_callback_data); + g_signal_connect(gl_area, "realize", G_CALLBACK(on_realize), gl_callback_data); + + if(implements_onTouchEvent) { + struct jni_callback_data *callback_data = malloc(sizeof(struct jni_callback_data)); + callback_data->jvm = jvm; + callback_data->this = _REF(this); + callback_data->this_class = _REF(_CLASS(this)); + + printf("callback_data->jvm: %p\n", callback_data->jvm); + + GtkEventController *controller = gtk_event_controller_legacy_new(); + gtk_widget_add_controller(gl_area, controller); + g_signal_connect(controller, "event", G_CALLBACK(on_event), callback_data); + + printf("GREP FOR MEEEE -- //FIXME\n"); + } + + gtk_widget_add_tick_callback(gl_area, tick_callback, NULL, NULL); + + //FIXME + gtk_widget_set_hexpand(gtk_widget_get_parent(GTK_WIDGET(gl_area)), true); +} diff --git a/src/api-impl-jni/widgets/android_widget_FrameLayout.c b/src/api-impl-jni/widgets/android_widget_FrameLayout.c new file mode 100644 index 00000000..56ca1928 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_FrameLayout.c @@ -0,0 +1,103 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_LinearLayout.h" +#include "../generated_headers/android_view_ViewGroup.h" + +G_DECLARE_FINAL_TYPE (FrameLayoutWidget, frame_layout_widget, FRAME_LAYOUT, WIDGET, GtkWidget) + +struct _FrameLayoutWidget +{ + GtkWidget parent_instance; +}; + +struct _FrameLayoutWidgetClass +{ + GtkWidgetClass parent_class; +}; + +G_DEFINE_TYPE(FrameLayoutWidget, frame_layout_widget, GTK_TYPE_WIDGET) + +static void frame_layout_widget_init (FrameLayoutWidget *frame_layout) +{ + +} + +static void frame_layout_widget_dispose(GObject *frame_layout) +{ + GtkWidget *child; + while((child = gtk_widget_get_first_child(GTK_WIDGET(frame_layout))) != NULL) { + gtk_widget_unparent(child); + } + + G_OBJECT_CLASS (frame_layout_widget_parent_class)->dispose (frame_layout); +} + +static void frame_layout_widget_class_init(FrameLayoutWidgetClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + + object_class->dispose = frame_layout_widget_dispose; + + gtk_widget_class_set_layout_manager_type(widget_class, GTK_TYPE_BIN_LAYOUT); +} + +GtkWidget * frame_layout_widget_new (void) +{ + return g_object_new (frame_layout_widget_get_type(), NULL); +} + +void frame_layout_widget_insert_child(FrameLayoutWidget *parent, GtkWidget *child) +{ + printf("::::::::::: FrameLayoutWidget: inserting something at the end of the widget list\n"); + gtk_widget_insert_before(child, GTK_WIDGET(parent), NULL); +} + +void frame_layout_widget_insert_child_at_index(FrameLayoutWidget *parent, GtkWidget *child, int index) +{ + printf("::::::::::: FrameLayoutWidget: inserting something at index %d\n", index); + GtkWidget *iter = gtk_widget_get_first_child(GTK_WIDGET(parent)); + GtkWidget *next = NULL; + for(int i = 0; i < index; i++) { + next = gtk_widget_get_next_sibling(iter); + if(next == NULL) + break; + iter = next; + } + + gtk_widget_insert_before(child, GTK_WIDGET(parent), iter); +} + +// --- + +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *frame_layout = frame_layout_widget_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), frame_layout); + gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout"); + _SET_LONG_FIELD(this, "widget", _INTPTR(frame_layout)); +} + +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *frame_layout = frame_layout_widget_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), frame_layout); + gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout"); + _SET_LONG_FIELD(this, "widget", _INTPTR(frame_layout)); +} + +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +{ + Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); + + if(index >= 0) + frame_layout_widget_insert_child_at_index(FRAME_LAYOUT_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))), index); + else + frame_layout_widget_insert_child(FRAME_LAYOUT_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); +} diff --git a/src/api-impl-jni/widgets/android_widget_ImageView.c b/src/api-impl-jni/widgets/android_widget_ImageView.c new file mode 100644 index 00000000..e3b3d797 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_ImageView.c @@ -0,0 +1,24 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_ImageView.h" + +JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *image = gtk_image_new_from_icon_name("FIXME"); // will not actually use gtk_image_new_from_icon_name when implementing this, but we want that nice "broken image" icon + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), image); + _SET_LONG_FIELD(this, "widget", _INTPTR(image));} + +JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) +{ + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *image = gtk_image_new_from_icon_name("FIXME"); // will not actually use gtk_image_new_from_icon_name when implementing this, but we want that nice "broken image" icon + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), image); + _SET_LONG_FIELD(this, "widget", _INTPTR(image)); +} + diff --git a/src/api-impl-jni/widgets/android_widget_LinearLayout.c b/src/api-impl-jni/widgets/android_widget_LinearLayout.c new file mode 100644 index 00000000..9d654f0a --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_LinearLayout.c @@ -0,0 +1,67 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../drawables/ninepatch.h" + +#include "../generated_headers/android_widget_LinearLayout.h" +#include "../generated_headers/android_view_ViewGroup.h" + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 0); + + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "LinearLayout"); + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); +} + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { + GtkWidget *wrapper = wrapper_widget_new(); + + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); // spacing of 0 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "LinearLayout"); + gtk_widget_set_hexpand_set(box, true); // FIXME: to counteract expand on drawing areas + gtk_widget_set_vexpand_set(box, true); // XXX + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); + +// struct ninepatch_t *ninepatch = ninepatch_new("/home/Mis012/Github_and_other_sources/org.happysanta.gd_29_src.tar.gz/res/drawable-mdpi/btn_br_down.9.png"); +// g_object_set_data(G_OBJECT(wrapper), "background_ninepatch", ninepatch); +} + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +{ + Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); + + gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); // FIXME - ignores index argument +} + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeView(JNIEnv *env, jobject this, jobject child) +{ + Java_android_view_ViewGroup_removeView(env, this, child); + + gtk_box_remove(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); +} + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeAllViews(JNIEnv *env, jobject this) +{ + Java_android_view_ViewGroup_removeAllViews(env, this); + + GtkBox *box = GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))); + + GtkWidget *child; + while((child = gtk_widget_get_first_child(GTK_WIDGET(box))) != NULL) { + gtk_box_remove(box, child); + } +} + +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_setOrientation(JNIEnv *env, jobject this, jint orientation) +{ + gtk_orientable_set_orientation(GTK_ORIENTABLE(_PTR(_GET_LONG_FIELD(this, "widget"))), orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); +} diff --git a/src/api-impl-jni/widgets/android_widget_RelativeLayout.c b/src/api-impl-jni/widgets/android_widget_RelativeLayout.c new file mode 100644 index 00000000..21bbba19 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_RelativeLayout.c @@ -0,0 +1,37 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_RelativeLayout.h" +#include "../generated_headers/android_view_ViewGroup.h" + +// FIXME not a relative layout + +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 0); + + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "RelativeLayout"); + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); +} + +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "RelativeLayout"); + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); +} + +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +{ + Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); + + gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); +} diff --git a/src/api-impl-jni/widgets/android_widget_ScrollView.c b/src/api-impl-jni/widgets/android_widget_ScrollView.c new file mode 100644 index 00000000..e92821f6 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_ScrollView.c @@ -0,0 +1,60 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_ScrollView.h" +#include "../generated_headers/android_view_ViewGroup.h" + +// FIXME not a scrollview + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 0); + + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "ScrollView"); + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "ScrollView"); + _SET_LONG_FIELD(this, "widget", _INTPTR(box)); +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeView(JNIEnv *env, jobject this, jobject child) +{ + Java_android_view_ViewGroup_removeView(env, this, child); + + GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))); + + gtk_box_remove(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), g_object_ref(_child)); + g_object_force_floating(G_OBJECT(_child)); +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeAllViews(JNIEnv *env, jobject this) +{ + Java_android_view_ViewGroup_removeAllViews(env, this); + + GtkBox *box = GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))); + + GtkWidget *child; + while((child = gtk_widget_get_first_child(GTK_WIDGET(box))) != NULL) { + gtk_box_remove(box, g_object_ref(child)); + g_object_force_floating(G_OBJECT(child)); + } +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +{ + Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); + + gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); +} diff --git a/src/api-impl-jni/widgets/android_widget_TextView.c b/src/api-impl-jni/widgets/android_widget_TextView.c new file mode 100644 index 00000000..e490869e --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_TextView.c @@ -0,0 +1,65 @@ +#include + +#include "../defines.h" +#include "../util.h" + +#include "WrapperWidget.h" + +#include "../generated_headers/android_widget_TextView.h" + +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +{ + const char *text = attribute_set_get_string(env, attrs, "text", NULL); + +// _SET_OBJ_FIELD(this, "text", "Ljava/lang/String;", _JSTRING(text)); //TODO: sadly this might be needed, but it's not atm + + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *label = gtk_label_new(text); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), label); + _SET_LONG_FIELD(this, "widget", _INTPTR(label)); +} + +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject attrs) +{ +// _SET_OBJ_FIELD(this, "text", "Ljava/lang/String;", _JSTRING(text)); //TODO: sadly this might be needed, but it's not atm + + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *label = gtk_label_new("FIXME"); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), label); + _SET_LONG_FIELD(this, "widget", _INTPTR(label)); +} + +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setText(JNIEnv *env, jobject this, jobject charseq) +{ +// _SET_OBJ_FIELD(this, "text", "Ljava/lang/String;", charseq); //TODO: sadly this might be needed, but it's not atm + + gtk_label_set_text(GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))), _CSTRING(charseq)); +} + +JNIEXPORT void JNICALL Java_android_widget_TextView_setTextSize(JNIEnv *env, jobject this, jfloat size) +{ + GtkLabel *label = GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))); + PangoAttrList *attrs; + + PangoAttrList *old_attrs = gtk_label_get_attributes(label); + if(old_attrs) + attrs = pango_attr_list_copy(old_attrs); + else + attrs = pango_attr_list_new(); + + PangoAttribute *size_attr = pango_attr_size_new(size * PANGO_SCALE); + pango_attr_list_change(attrs, size_attr); + gtk_label_set_attributes(label, attrs); + + pango_attr_list_unref(attrs); +} + +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1set_1markup(JNIEnv *env, jobject this, jint value) +{ + GtkLabel *label = GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))); + + printf("weeeheee!\n"); + + gtk_label_set_use_markup(label, value); + printf("gtk_label_get_use_markup: %d, >%s<\n", gtk_label_get_use_markup(label), gtk_label_get_text(label)); +} diff --git a/src/api-impl/android/Manifest.java b/src/api-impl/android/Manifest.java new file mode 100644 index 00000000..4941f489 --- /dev/null +++ b/src/api-impl/android/Manifest.java @@ -0,0 +1,1183 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package android; + +public final class Manifest { + public static final class permission { + /** Allows an application to access all multi-user external storage @hide + */ + public static final String ACCESS_ALL_EXTERNAL_STORAGE="android.permission.ACCESS_ALL_EXTERNAL_STORAGE"; + /** Allow an application to read and write the cache partition. + @hide + */ + public static final String ACCESS_CACHE_FILESYSTEM="android.permission.ACCESS_CACHE_FILESYSTEM"; + /** Allows read/write access to the "properties" table in the checkin + database, to change values that get uploaded. +

Not for use by third-party applications. + */ + public static final String ACCESS_CHECKIN_PROPERTIES="android.permission.ACCESS_CHECKIN_PROPERTIES"; + /** Allows an app to access approximate location derived from network location + sources such as cell towers and Wi-Fi. + */ + public static final String ACCESS_COARSE_LOCATION="android.permission.ACCESS_COARSE_LOCATION"; + /** Allows the holder to access content providers from outside an ApplicationThread. + This permission is enforced by the ActivityManagerService on the corresponding APIs, + in particular ActivityManagerService#getContentProviderExternal(String) and + ActivityManagerService#removeContentProviderExternal(String). + @hide + + */ + public static final String ACCESS_CONTENT_PROVIDERS_EXTERNALLY="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"; + /** Allows an app to access precise location from location sources such + as GPS, cell towers, and Wi-Fi. + */ + public static final String ACCESS_FINE_LOCATION="android.permission.ACCESS_FINE_LOCATION"; + /** Allows access to keyguard secure storage. Only allowed for system processes. + @hide + */ + public static final String ACCESS_KEYGUARD_SECURE_STORAGE="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"; + /** Allows an application to access extra location provider commands + */ + public static final String ACCESS_LOCATION_EXTRA_COMMANDS="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"; + /** Allows an application to create mock location providers for testing + */ + public static final String ACCESS_MOCK_LOCATION="android.permission.ACCESS_MOCK_LOCATION"; + /** Allows an application to access the MTP USB kernel driver. + For use only by the device side MTP implementation. + @hide + */ + public static final String ACCESS_MTP="android.permission.ACCESS_MTP"; + /** Allows an application to listen for network condition observations. + @hide This is not a third-party API (intended for system apps). + */ + public static final String ACCESS_NETWORK_CONDITIONS="android.permission.ACCESS_NETWORK_CONDITIONS"; + /** Allows applications to access information about networks + */ + public static final String ACCESS_NETWORK_STATE="android.permission.ACCESS_NETWORK_STATE"; + /** Allows an application to read the current set of notifications, including + any metadata and intents attached. + @hide + */ + public static final String ACCESS_NOTIFICATIONS="android.permission.ACCESS_NOTIFICATIONS"; + /** Allows an application to use SurfaceFlinger's low level features. +

Not for use by third-party applications. + */ + public static final String ACCESS_SURFACE_FLINGER="android.permission.ACCESS_SURFACE_FLINGER"; + /** Allows applications to access information about Wi-Fi networks + */ + public static final String ACCESS_WIFI_STATE="android.permission.ACCESS_WIFI_STATE"; + /** @hide + */ + public static final String ACCESS_WIMAX_STATE="android.permission.ACCESS_WIMAX_STATE"; + /** Allows applications to call into AccountAuthenticators. +

Not for use by third-party applications. + */ + public static final String ACCOUNT_MANAGER="android.permission.ACCOUNT_MANAGER"; + /** Allows an application to add voicemails into the system. + */ + public static final String ADD_VOICEMAIL="com.android.voicemail.permission.ADD_VOICEMAIL"; + /** Allows an application to use any media decoder when decoding for playback + @hide + */ + public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"; + /** Allows access to ASEC non-destructive API calls + @hide + */ + public static final String ASEC_ACCESS="android.permission.ASEC_ACCESS"; + /** Allows creation of ASEC volumes + @hide + */ + public static final String ASEC_CREATE="android.permission.ASEC_CREATE"; + /** Allows destruction of ASEC volumes + @hide + */ + public static final String ASEC_DESTROY="android.permission.ASEC_DESTROY"; + /** Allows mount / unmount of ASEC volumes + @hide + */ + public static final String ASEC_MOUNT_UNMOUNT="android.permission.ASEC_MOUNT_UNMOUNT"; + /** Allows rename of ASEC volumes + @hide + */ + public static final String ASEC_RENAME="android.permission.ASEC_RENAME"; + /** Allows an application to act as an AccountAuthenticator for + the AccountManager + */ + public static final String AUTHENTICATE_ACCOUNTS="android.permission.AUTHENTICATE_ACCOUNTS"; + /** Allows an application to control the backup and restore process. +

Not for use by third-party applications. + @hide pending API council + */ + public static final String BACKUP="android.permission.BACKUP"; + /** Allows an application to collect battery statistics + */ + public static final String BATTERY_STATS="android.permission.BATTERY_STATS"; + /** Must be required by an {@link android.accessibilityservice.AccessibilityService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_ACCESSIBILITY_SERVICE="android.permission.BIND_ACCESSIBILITY_SERVICE"; + /** Allows an application to tell the AppWidget service which application + can access AppWidget's data. The normal user flow is that a user + picks an AppWidget to go into a particular host, thereby giving that + host application access to the private data from the AppWidget app. + An application that has this permission should honor that contract. +

Not for use by third-party applications. + */ + public static final String BIND_APPWIDGET="android.permission.BIND_APPWIDGET"; + /** Allows an application to request CallHandlerService implementations. + @hide + */ + public static final String BIND_CALL_SERVICE="android.permission.BIND_CALL_SERVICE"; + /** Must be required by device administration receiver, to ensure that only the + system can interact with it. + */ + public static final String BIND_DEVICE_ADMIN="android.permission.BIND_DEVICE_ADMIN"; + /** Allows an application to execute contacts directory search. + This should only be used by ContactsProvider. +

Not for use by third-party applications. + @hide + */ + public static final String BIND_DIRECTORY_SEARCH="android.permission.BIND_DIRECTORY_SEARCH"; + /** Must be required by an {@link android.inputmethodservice.InputMethodService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_INPUT_METHOD="android.permission.BIND_INPUT_METHOD"; + /** Private permission, to restrict who can bring up a dialog to add a new + keyguard widget + @hide + */ + public static final String BIND_KEYGUARD_APPWIDGET="android.permission.BIND_KEYGUARD_APPWIDGET"; + /** Must be required by a {@link android.nfc.cardemulation.HostApduService} + or {@link android.nfc.cardemulation.OffHostApduService} to ensure that only + the system can bind to it. + */ + public static final String BIND_NFC_SERVICE="android.permission.BIND_NFC_SERVICE"; + /** Must be required by an {@link + android.service.notification.NotificationListenerService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_NOTIFICATION_LISTENER_SERVICE="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"; + /** Must be required by package verifier receiver, to ensure that only the + system can interact with it. + @hide + + */ + public static final String BIND_PACKAGE_VERIFIER="android.permission.BIND_PACKAGE_VERIFIER"; + /** Must be required by a {@link android.printservice.PrintService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_PRINT_SERVICE="android.permission.BIND_PRINT_SERVICE"; + /** Must be required by the PrintSpooler to ensure that only the system can bind to it. + @hide + */ + public static final String BIND_PRINT_SPOOLER_SERVICE="android.permission.BIND_PRINT_SPOOLER_SERVICE"; + /** Must be required by a {@link android.widget.RemoteViewsService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_REMOTEVIEWS="android.permission.BIND_REMOTEVIEWS"; + /** Must be required by a {@link com.android.media.remotedisplay.RemoteDisplayProvider}, + to ensure that only the system can bind to it. + @hide + */ + public static final String BIND_REMOTE_DISPLAY="android.permission.BIND_REMOTE_DISPLAY"; + /** Must be required by a TextService (e.g. SpellCheckerService) + to ensure that only the system can bind to it. + */ + public static final String BIND_TEXT_SERVICE="android.permission.BIND_TEXT_SERVICE"; + /** Must be required by a {@link android.net.VpnService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_VPN_SERVICE="android.permission.BIND_VPN_SERVICE"; + /** Must be required by a {@link android.service.wallpaper.WallpaperService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_WALLPAPER="android.permission.BIND_WALLPAPER"; + /** Allows applications to connect to paired bluetooth devices + */ + public static final String BLUETOOTH="android.permission.BLUETOOTH"; + /** Allows applications to discover and pair bluetooth devices + */ + public static final String BLUETOOTH_ADMIN="android.permission.BLUETOOTH_ADMIN"; + /** Allows applications to pair bluetooth devices without user interaction. + This is not available to third party applications. + */ + public static final String BLUETOOTH_PRIVILEGED="android.permission.BLUETOOTH_PRIVILEGED"; + /** Allows bluetooth stack to access files + @hide This should only be used by Bluetooth apk. + + */ + public static final String BLUETOOTH_STACK="android.permission.BLUETOOTH_STACK"; + /** Required to be able to disable the device (very dangerous!). +

Not for use by third-party applications.. + */ + public static final String BRICK="android.permission.BRICK"; + /** Allows an application to broadcast a notification that an application + package has been removed. +

Not for use by third-party applications. + */ + public static final String BROADCAST_PACKAGE_REMOVED="android.permission.BROADCAST_PACKAGE_REMOVED"; + /** Allows an application to broadcast an SMS receipt notification. +

Not for use by third-party applications. + */ + public static final String BROADCAST_SMS="android.permission.BROADCAST_SMS"; + /** Allows an application to broadcast sticky intents. These are + broadcasts whose data is held by the system after being finished, + so that clients can quickly retrieve that data without having + to wait for the next broadcast. + */ + public static final String BROADCAST_STICKY="android.permission.BROADCAST_STICKY"; + /** Allows an application to broadcast a WAP PUSH receipt notification. +

Not for use by third-party applications. + */ + public static final String BROADCAST_WAP_PUSH="android.permission.BROADCAST_WAP_PUSH"; + /** C2DM permission. + @hide Used internally. + + */ + public static final String C2D_MESSAGE="android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE"; + /** Allows an application to initiate a phone call without going through + the Dialer user interface for the user to confirm the call + being placed. + */ + public static final String CALL_PHONE="android.permission.CALL_PHONE"; + /** Allows an application to call any phone number, including emergency + numbers, without going through the Dialer user interface for the user + to confirm the call being placed. +

Not for use by third-party applications. + */ + public static final String CALL_PRIVILEGED="android.permission.CALL_PRIVILEGED"; + /** Required to be able to access the camera device. +

This will automatically enforce the {@code + <uses-feature>} manifest element for all camera features. + If you do not require all camera features or can properly operate if a camera + is not available, then you must modify your manifest as appropriate in order to + install on devices that don't support all camera features.

+ */ + public static final String CAMERA="android.permission.CAMERA"; + /** Allows disabling the transmit-indicator LED that is normally on when + a camera is in use by an application. + @hide + */ + public static final String CAMERA_DISABLE_TRANSMIT_LED="android.permission.CAMERA_DISABLE_TRANSMIT_LED"; + /** Allows an application to capture audio for hotword detection. +

Not for use by third-party applications.

+ @hide + */ + public static final String CAPTURE_AUDIO_HOTWORD="android.permission.CAPTURE_AUDIO_HOTWORD"; + /** Allows an application to capture audio output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_AUDIO_OUTPUT="android.permission.CAPTURE_AUDIO_OUTPUT"; + /** Allows an application to capture secure video output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_SECURE_VIDEO_OUTPUT="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT"; + /** Allows an application to capture video output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_VIDEO_OUTPUT="android.permission.CAPTURE_VIDEO_OUTPUT"; + /** Allows applications to change the background data setting. +

Not for use by third-party applications. + @hide pending API council + */ + public static final String CHANGE_BACKGROUND_DATA_SETTING="android.permission.CHANGE_BACKGROUND_DATA_SETTING"; + /** Allows an application to change whether an application component (other than its own) is + enabled or not. +

Not for use by third-party applications. + */ + public static final String CHANGE_COMPONENT_ENABLED_STATE="android.permission.CHANGE_COMPONENT_ENABLED_STATE"; + /** Allows an application to modify the current configuration, such + as locale. + */ + public static final String CHANGE_CONFIGURATION="android.permission.CHANGE_CONFIGURATION"; + /** Allows applications to change network connectivity state + */ + public static final String CHANGE_NETWORK_STATE="android.permission.CHANGE_NETWORK_STATE"; + /** Allows applications to enter Wi-Fi Multicast mode + */ + public static final String CHANGE_WIFI_MULTICAST_STATE="android.permission.CHANGE_WIFI_MULTICAST_STATE"; + /** Allows applications to change Wi-Fi connectivity state + */ + public static final String CHANGE_WIFI_STATE="android.permission.CHANGE_WIFI_STATE"; + /** @hide + */ + public static final String CHANGE_WIMAX_STATE="android.permission.CHANGE_WIMAX_STATE"; + /** Allows an application to clear the caches of all installed + applications on the device. + */ + public static final String CLEAR_APP_CACHE="android.permission.CLEAR_APP_CACHE"; + /** Allows an application to clear user data. +

Not for use by third-party applications. + */ + public static final String CLEAR_APP_USER_DATA="android.permission.CLEAR_APP_USER_DATA"; + /** Allows an application to configure and connect to Wifi displays + @hide + */ + public static final String CONFIGURE_WIFI_DISPLAY="android.permission.CONFIGURE_WIFI_DISPLAY"; + /** Allows a package to launch the secure full-backup confirmation UI. + ONLY the system process may hold this permission. + @hide + */ + public static final String CONFIRM_FULL_BACKUP="android.permission.CONFIRM_FULL_BACKUP"; + /** Allows an internal user to use privileged ConnectivityManager APIs. + @hide + */ + public static final String CONNECTIVITY_INTERNAL="android.permission.CONNECTIVITY_INTERNAL"; + /** Allows an application to control keyguard. Only allowed for system processes. + @hide + */ + public static final String CONTROL_KEYGUARD="android.permission.CONTROL_KEYGUARD"; + /** Allows enabling/disabling location update notifications from + the radio. +

Not for use by third-party applications. + */ + public static final String CONTROL_LOCATION_UPDATES="android.permission.CONTROL_LOCATION_UPDATES"; + /** Allows an application to control low-level features of Wifi displays + such as opening an RTSP socket. This permission should only be used + by the display manager. + @hide + */ + public static final String CONTROL_WIFI_DISPLAY="android.permission.CONTROL_WIFI_DISPLAY"; + /** Must be required by default container service so that only + the system can bind to it and use it to copy + protected data to secure containers or files + accessible to the system. + @hide + */ + public static final String COPY_PROTECTED_DATA="android.permission.COPY_PROTECTED_DATA"; + /** Internal permission protecting access to the encryption methods + @hide + + */ + public static final String CRYPT_KEEPER="android.permission.CRYPT_KEEPER"; + /** Allows an application to delete cache files. +

Not for use by third-party applications. + */ + public static final String DELETE_CACHE_FILES="android.permission.DELETE_CACHE_FILES"; + /** Allows an application to delete packages. +

Not for use by third-party applications. + */ + public static final String DELETE_PACKAGES="android.permission.DELETE_PACKAGES"; + /** Allows low-level access to power management. +

Not for use by third-party applications. + */ + public static final String DEVICE_POWER="android.permission.DEVICE_POWER"; + /** Allows applications to RW to diagnostic resources. +

Not for use by third-party applications. + */ + public static final String DIAGNOSTIC="android.permission.DIAGNOSTIC"; + /** Allows applications to disable the keyguard + */ + public static final String DISABLE_KEYGUARD="android.permission.DISABLE_KEYGUARD"; + /** Allows an application to retrieve state dump information from system services. +

Not for use by third-party applications. + */ + public static final String DUMP="android.permission.DUMP"; + /** Allows an application to expand or collapse the status bar. + */ + public static final String EXPAND_STATUS_BAR="android.permission.EXPAND_STATUS_BAR"; + /** Run as a manufacturer test application, running as the root user. + Only available when the device is running in manufacturer test mode. +

Not for use by third-party applications. + */ + public static final String FACTORY_TEST="android.permission.FACTORY_TEST"; + /** @hide Allows an application to register an input filter which filters the stream + of user events (keys, touch, trackball) before they are dispatched to any window. + */ + public static final String FILTER_EVENTS="android.permission.FILTER_EVENTS"; + /** Allows access to the flashlight + */ + public static final String FLASHLIGHT="android.permission.FLASHLIGHT"; + /** Allows an application to force a BACK operation on whatever is the + top activity. +

Not for use by third-party applications. + */ + public static final String FORCE_BACK="android.permission.FORCE_BACK"; + /** Allows an application to call + {@link android.app.ActivityManager#forceStopPackage}. + @hide + */ + public static final String FORCE_STOP_PACKAGES="android.permission.FORCE_STOP_PACKAGES"; + /** @hide Allows the application to temporarily freeze the screen for a + full-screen transition. + */ + public static final String FREEZE_SCREEN="android.permission.FREEZE_SCREEN"; + /** Allows access to the list of accounts in the Accounts Service + */ + public static final String GET_ACCOUNTS="android.permission.GET_ACCOUNTS"; + /** @hide Allows an application to collect battery statistics + */ + public static final String GET_APP_OPS_STATS="android.permission.GET_APP_OPS_STATS"; + /** Allows an application to get full detailed information about + recently running tasks, with full fidelity to the real state. + @hide + */ + public static final String GET_DETAILED_TASKS="android.permission.GET_DETAILED_TASKS"; + /** Allows an application to find out the space used by any package. + */ + public static final String GET_PACKAGE_SIZE="android.permission.GET_PACKAGE_SIZE"; + /** Allows an application to get information about the currently + or recently running tasks. + */ + public static final String GET_TASKS="android.permission.GET_TASKS"; + /** Allows an application to retrieve private information about + the current top activity, such as any assist context it can provide. +

Not for use by third-party applications. + */ + public static final String GET_TOP_ACTIVITY_INFO="android.permission.GET_TOP_ACTIVITY_INFO"; + /** This permission can be used on content providers to allow the global + search system to access their data. Typically it used when the + provider has some permissions protecting it (which global search + would not be expected to hold), and added as a read-only permission + to the path in the provider where global search queries are + performed. This permission can not be held by regular applications; + it is used by applications to protect themselves from everyone else + besides global search. + */ + public static final String GLOBAL_SEARCH="android.permission.GLOBAL_SEARCH"; + /** Internal permission protecting access to the global search + system: ensures that only the system can access the provider + to perform queries (since this otherwise provides unrestricted + access to a variety of content providers), and to write the + search statistics (to keep applications from gaming the source + ranking). + @hide + */ + public static final String GLOBAL_SEARCH_CONTROL="android.permission.GLOBAL_SEARCH_CONTROL"; + /** @hide Allows an application to grant or revoke specific permissions. + */ + public static final String GRANT_REVOKE_PERMISSIONS="android.permission.GRANT_REVOKE_PERMISSIONS"; + /** Allows access to hardware peripherals. Intended only for hardware testing. +

Not for use by third-party applications. + */ + public static final String HARDWARE_TEST="android.permission.HARDWARE_TEST"; + /** Allows an application to inject user events (keys, touch, trackball) + into the event stream and deliver them to ANY window. Without this + permission, you can only deliver events to windows in your own process. +

Not for use by third-party applications. + */ + public static final String INJECT_EVENTS="android.permission.INJECT_EVENTS"; + /** Allows an application to install a location provider into the Location Manager. +

Not for use by third-party applications. + */ + public static final String INSTALL_LOCATION_PROVIDER="android.permission.INSTALL_LOCATION_PROVIDER"; + /** Allows an application to install packages. +

Not for use by third-party applications. + */ + public static final String INSTALL_PACKAGES="android.permission.INSTALL_PACKAGES"; + /** Allows an application to install a shortcut in Launcher + */ + public static final String INSTALL_SHORTCUT="com.android.launcher.permission.INSTALL_SHORTCUT"; + /** @hide Allows an application to call APIs that allow it to do interactions + across the users on the device, using singleton services and + user-targeted broadcasts. This permission is not available to + third party applications. + */ + public static final String INTERACT_ACROSS_USERS="android.permission.INTERACT_ACROSS_USERS"; + /** @hide Fuller form of {@link android.Manifest.permission#INTERACT_ACROSS_USERS} + that removes restrictions on where broadcasts can be sent and allows other + types of interactions. + */ + public static final String INTERACT_ACROSS_USERS_FULL="android.permission.INTERACT_ACROSS_USERS_FULL"; + /** Allows an application to open windows that are for use by parts + of the system user interface. +

Not for use by third-party applications. + */ + public static final String INTERNAL_SYSTEM_WINDOW="android.permission.INTERNAL_SYSTEM_WINDOW"; + /** Allows applications to open network sockets. + */ + public static final String INTERNET="android.permission.INTERNET"; + /** Allows an application to call into a carrier setup flow. It is up to the + carrier setup application to enforce that this permission is required + @hide This is not a third-party API (intended for OEMs and system apps). + */ + public static final String INVOKE_CARRIER_SETUP="android.permission.INVOKE_CARRIER_SETUP"; + /** Allows an application to call + {@link android.app.ActivityManager#killBackgroundProcesses}. + */ + public static final String KILL_BACKGROUND_PROCESSES="android.permission.KILL_BACKGROUND_PROCESSES"; + /** Allows an application to use location features in hardware, + such as the geofencing api. +

Not for use by third-party applications. + */ + public static final String LOCATION_HARDWARE="android.permission.LOCATION_HARDWARE"; + /** Allows access to the loop radio (Android@Home mesh network) device. + @hide + */ + public static final String LOOP_RADIO="android.permission.LOOP_RADIO"; + /** @hide Allows an application to magnify the content of a display. + */ + public static final String MAGNIFY_DISPLAY="android.permission.MAGNIFY_DISPLAY"; + /** Allows an application to manage the list of accounts in the AccountManager + */ + public static final String MANAGE_ACCOUNTS="android.permission.MANAGE_ACCOUNTS"; + /** @hide Allows an application to create/manage/remove stacks + */ + public static final String MANAGE_ACTIVITY_STACKS="android.permission.MANAGE_ACTIVITY_STACKS"; + /** Allows an application to manage (create, destroy, + Z-order) application tokens in the window manager. +

Not for use by third-party applications. + */ + public static final String MANAGE_APP_TOKENS="android.permission.MANAGE_APP_TOKENS"; + /** Allows an application to install and/or uninstall CA certificates on + behalf of the user. + @hide + */ + public static final String MANAGE_CA_CERTIFICATES="android.permission.MANAGE_CA_CERTIFICATES"; + /** Required to add or remove another application as a device admin. +

Not for use by third-party applications. + @hide + */ + public static final String MANAGE_DEVICE_ADMINS="android.permission.MANAGE_DEVICE_ADMINS"; + /** Allows an application to manage access to documents, usually as part + of a document picker. + */ + public static final String MANAGE_DOCUMENTS="android.permission.MANAGE_DOCUMENTS"; + /** Allows an application to manage network policies (such as warning and disable + limits) and to define application-specific rules. @hide + */ + public static final String MANAGE_NETWORK_POLICY="android.permission.MANAGE_NETWORK_POLICY"; + /** Allows an application to manage preferences and permissions for USB devices + @hide + */ + public static final String MANAGE_USB="android.permission.MANAGE_USB"; + /** @hide Allows an application to call APIs that allow it to query and manage + users on the device. This permission is not available to + third party applications. + */ + public static final String MANAGE_USERS="android.permission.MANAGE_USERS"; + /** Allows an application to mark traffic as from another user for per user routing. + Used by system wide services like media server that execute delegated network connections + for users. + @hide + + */ + public static final String MARK_NETWORK_SOCKET="android.permission.MARK_NETWORK_SOCKET"; + /** Not for use by third-party applications. + */ + public static final String MASTER_CLEAR="android.permission.MASTER_CLEAR"; + /** Allows an application to know what content is playing and control its playback. +

Not for use by third-party applications due to privacy of media consumption

+ */ + public static final String MEDIA_CONTENT_CONTROL="android.permission.MEDIA_CONTENT_CONTROL"; + /** Internal permission allowing an application to query/set which + applications can bind AppWidgets. + @hide + */ + public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"; + /** Allows an application to modify global audio settings + */ + public static final String MODIFY_AUDIO_SETTINGS="android.permission.MODIFY_AUDIO_SETTINGS"; + /** Allows an application to account its network traffic against other UIDs. Used + by system services like download manager and media server. Not for use by + third party apps. @hide + */ + public static final String MODIFY_NETWORK_ACCOUNTING="android.permission.MODIFY_NETWORK_ACCOUNTING"; + /** Allows modification of the telephony state - power on, mmi, etc. + Does not include placing calls. +

Not for use by third-party applications. + */ + public static final String MODIFY_PHONE_STATE="android.permission.MODIFY_PHONE_STATE"; + /** Allows formatting file systems for removable storage. +

Not for use by third-party applications. + */ + public static final String MOUNT_FORMAT_FILESYSTEMS="android.permission.MOUNT_FORMAT_FILESYSTEMS"; + /** Allows mounting and unmounting file systems for removable storage. +

Not for use by third-party applications. + */ + public static final String MOUNT_UNMOUNT_FILESYSTEMS="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"; + /** Allows an application to move location of installed package. + @hide + */ + public static final String MOVE_PACKAGE="android.permission.MOVE_PACKAGE"; + /** Allows access to configure network interfaces, configure/use IPSec, etc. + @hide + */ + public static final String NET_ADMIN="android.permission.NET_ADMIN"; + /** @hide Allows low-level access to tun tap driver + */ + public static final String NET_TUNNELING="android.permission.NET_TUNNELING"; + /** Allows applications to perform I/O operations over NFC + */ + public static final String NFC="android.permission.NFC"; + /** Allows an application to collect component usage + statistics @hide + */ + public static final String PACKAGE_USAGE_STATS="android.permission.PACKAGE_USAGE_STATS"; + /** @hide Package verifier needs to have this permission before the PackageManager will + trust it to verify packages. + + */ + public static final String PACKAGE_VERIFICATION_AGENT="android.permission.PACKAGE_VERIFICATION_AGENT"; + /** Allows an application to perform CDMA OTA provisioning @hide + */ + public static final String PERFORM_CDMA_PROVISIONING="android.permission.PERFORM_CDMA_PROVISIONING"; + /** @deprecated This functionality will be removed in the future; please do + not use. Allow an application to make its activities persistent. + */ + @Deprecated + public static final String PERSISTENT_ACTIVITY="android.permission.PERSISTENT_ACTIVITY"; + /** Allows an application to see the number being dialed during an outgoing + call with the option to redirect the call to a different number or + abort the call altogether. + */ + public static final String PROCESS_OUTGOING_CALLS="android.permission.PROCESS_OUTGOING_CALLS"; + /** Allows an application to read the user's calendar data. + */ + public static final String READ_CALENDAR="android.permission.READ_CALENDAR"; + /** Allows an application to read the user's call log. +

Note: If your app uses the + {@link #READ_CONTACTS} permission and both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 15 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 16 or higher.

+ */ + public static final String READ_CALL_LOG="android.permission.READ_CALL_LOG"; + /** Allows an application to read previously received cell broadcast + messages and to register a content observer to get notifications when + a cell broadcast has been received and added to the database. For + emergency alerts, the database is updated immediately after the + alert dialog and notification sound/vibration/speech are presented. + The "read" column is then updated after the user dismisses the alert. + This enables supplementary emergency assistance apps to start loading + additional emergency information (if Internet access is available) + when the alert is first received, and to delay presenting the info + to the user until after the initial alert dialog is dismissed. + @hide Pending API council approval + */ + public static final String READ_CELL_BROADCASTS="android.permission.READ_CELL_BROADCASTS"; + /** Allows an application to read the user's contacts data. + */ + public static final String READ_CONTACTS="android.permission.READ_CONTACTS"; + /** Allows applications to read dream settings and dream state. + @hide + */ + public static final String READ_DREAM_STATE="android.permission.READ_DREAM_STATE"; + /** Allows an application to read from external storage. +

Any app that declares the {@link #WRITE_EXTERNAL_STORAGE} permission is implicitly + granted this permission.

+

This permission is enforced starting in API level 19. Before API level 19, this + permission is not enforced and all apps still have access to read from external storage. + You can test your app with the permission enforced by enabling Protect USB + storage under Developer options in the Settings app on a device running Android 4.1 or + higher.

+

Also starting in API level 19, this permission is not required to + read/write files in your application-specific directories returned by + {@link android.content.Context#getExternalFilesDir} and + {@link android.content.Context#getExternalCacheDir}. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. + */ + public static final String READ_EXTERNAL_STORAGE="android.permission.READ_EXTERNAL_STORAGE"; + /** Allows an application to take screen shots and more generally + get access to the frame buffer data. +

Not for use by third-party applications. + */ + public static final String READ_FRAME_BUFFER="android.permission.READ_FRAME_BUFFER"; + /** Allows an application to read (but not write) the user's + browsing history and bookmarks. + */ + public static final String READ_HISTORY_BOOKMARKS="com.android.browser.permission.READ_HISTORY_BOOKMARKS"; + /** Allows an application to retrieve the current state of keys and + switches. +

Not for use by third-party applications. + @deprecated The API that used this permission has been removed. + */ + @Deprecated + public static final String READ_INPUT_STATE="android.permission.READ_INPUT_STATE"; + /** Allows an application to read the low-level system log files. +

Not for use by third-party applications, because + Log entries can contain the user's private information. + */ + public static final String READ_LOGS="android.permission.READ_LOGS"; + /** Allows an application to read historical network usage for + specific networks and applications. @hide + */ + public static final String READ_NETWORK_USAGE_HISTORY="android.permission.READ_NETWORK_USAGE_HISTORY"; + /** Allows read only access to phone state. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. + */ + public static final String READ_PHONE_STATE="android.permission.READ_PHONE_STATE"; + /** Allows read access to privileged phone state. + @hide Used internally. + */ + public static final String READ_PRIVILEGED_PHONE_STATE="android.permission.READ_PRIVILEGED_PHONE_STATE"; + /** Allows an application to read the user's personal profile data. + */ + public static final String READ_PROFILE="android.permission.READ_PROFILE"; + /** Allows an application to read SMS messages. + */ + public static final String READ_SMS="android.permission.READ_SMS"; + /** Allows an application to read from the user's social stream. + */ + public static final String READ_SOCIAL_STREAM="android.permission.READ_SOCIAL_STREAM"; + /** Allows applications to read the sync settings + */ + public static final String READ_SYNC_SETTINGS="android.permission.READ_SYNC_SETTINGS"; + /** Allows applications to read the sync stats + */ + public static final String READ_SYNC_STATS="android.permission.READ_SYNC_STATS"; + /** Allows an application to read the user dictionary. This should + really only be required by an IME, or a dictionary editor like + the Settings app. + */ + public static final String READ_USER_DICTIONARY="android.permission.READ_USER_DICTIONARY"; + /** Required to be able to reboot the device. +

Not for use by third-party applications. + */ + public static final String REBOOT="android.permission.REBOOT"; + /** Allows an application to receive the + {@link android.content.Intent#ACTION_BOOT_COMPLETED} that is + broadcast after the system finishes booting. If you don't + request this permission, you will not receive the broadcast at + that time. Though holding this permission does not have any + security implications, it can have a negative impact on the + user experience by increasing the amount of time it takes the + system to start and allowing applications to have themselves + running without the user being aware of them. As such, you must + explicitly declare your use of this facility to make that visible + to the user. + */ + public static final String RECEIVE_BOOT_COMPLETED="android.permission.RECEIVE_BOOT_COMPLETED"; + /** @hide + */ + public static final String RECEIVE_DATA_ACTIVITY_CHANGE="android.permission.RECEIVE_DATA_ACTIVITY_CHANGE"; + /** Allows an application to receive emergency cell broadcast messages, + to record or display them to the user. +

Not for use by third-party applications. + @hide Pending API council approval + */ + public static final String RECEIVE_EMERGENCY_BROADCAST="android.permission.RECEIVE_EMERGENCY_BROADCAST"; + /** Allows an application to monitor incoming MMS messages, to record + or perform processing on them. + */ + public static final String RECEIVE_MMS="android.permission.RECEIVE_MMS"; + /** Allows an application to monitor incoming SMS messages, to record + or perform processing on them. + */ + public static final String RECEIVE_SMS="android.permission.RECEIVE_SMS"; + /** Allows an application to monitor incoming WAP push messages. + */ + public static final String RECEIVE_WAP_PUSH="android.permission.RECEIVE_WAP_PUSH"; + /** Allows an application to record audio + */ + public static final String RECORD_AUDIO="android.permission.RECORD_AUDIO"; + /** Allows registration for remote audio playback. @hide + */ + public static final String REMOTE_AUDIO_PLAYBACK="android.permission.REMOTE_AUDIO_PLAYBACK"; + /** @hide Allows an application to change to remove/kill tasks + */ + public static final String REMOVE_TASKS="android.permission.REMOVE_TASKS"; + /** Allows an application to change the Z-order of tasks + */ + public static final String REORDER_TASKS="android.permission.REORDER_TASKS"; + /** @deprecated The {@link android.app.ActivityManager#restartPackage} + API is no longer supported. + */ + @Deprecated + public static final String RESTART_PACKAGES="android.permission.RESTART_PACKAGES"; + /** @hide Allows an application to retrieve the content of the active window + An active window is the window that has fired an accessibility event. + */ + public static final String RETRIEVE_WINDOW_CONTENT="android.permission.RETRIEVE_WINDOW_CONTENT"; + /** @hide Allows an application to retrieve info for a window from the window manager. + */ + public static final String RETRIEVE_WINDOW_INFO="android.permission.RETRIEVE_WINDOW_INFO"; + /** Allows an application (Phone) to send a request to other applications + to handle the respond-via-message action during incoming calls. +

Not for use by third-party applications. + */ + public static final String SEND_RESPOND_VIA_MESSAGE="android.permission.SEND_RESPOND_VIA_MESSAGE"; + /** Allows an application to send SMS messages. + */ + public static final String SEND_SMS="android.permission.SEND_SMS"; + /** Allows applications to access serial ports via the SerialManager. + @hide + */ + public static final String SERIAL_PORT="android.permission.SERIAL_PORT"; + /** Allows an application to watch and control how activities are + started globally in the system. Only for is in debugging + (usually the monkey command). +

Not for use by third-party applications. + */ + public static final String SET_ACTIVITY_WATCHER="android.permission.SET_ACTIVITY_WATCHER"; + /** Allows an application to broadcast an Intent to set an alarm for the + user. + */ + public static final String SET_ALARM="com.android.alarm.permission.SET_ALARM"; + /** Allows an application to control whether activities are immediately + finished when put in the background. +

Not for use by third-party applications. + */ + public static final String SET_ALWAYS_FINISH="android.permission.SET_ALWAYS_FINISH"; + /** Modify the global animation scaling factor. +

Not for use by third-party applications. + */ + public static final String SET_ANIMATION_SCALE="android.permission.SET_ANIMATION_SCALE"; + /** Configure an application for debugging. +

Not for use by third-party applications. + */ + public static final String SET_DEBUG_APP="android.permission.SET_DEBUG_APP"; + /** Allows low-level access to setting the keyboard layout. +

Not for use by third-party applications. + @hide + */ + public static final String SET_KEYBOARD_LAYOUT="android.permission.SET_KEYBOARD_LAYOUT"; + /** Allows low-level access to setting the orientation (actually + rotation) of the screen. +

Not for use by third-party applications. + */ + public static final String SET_ORIENTATION="android.permission.SET_ORIENTATION"; + /** Allows low-level access to setting the pointer speed. +

Not for use by third-party applications. + */ + public static final String SET_POINTER_SPEED="android.permission.SET_POINTER_SPEED"; + /** @deprecated No longer useful, see + {@link android.content.pm.PackageManager#addPackageToPreferred} + for details. + */ + @Deprecated + public static final String SET_PREFERRED_APPLICATIONS="android.permission.SET_PREFERRED_APPLICATIONS"; + /** Allows an application to set the maximum number of (not needed) + application processes that can be running. +

Not for use by third-party applications. + */ + public static final String SET_PROCESS_LIMIT="android.permission.SET_PROCESS_LIMIT"; + /** @hide Change the screen compatibility mode of applications + */ + public static final String SET_SCREEN_COMPATIBILITY="android.permission.SET_SCREEN_COMPATIBILITY"; + /** Allows applications to set the system time. +

Not for use by third-party applications. + */ + public static final String SET_TIME="android.permission.SET_TIME"; + /** Allows applications to set the system time zone + */ + public static final String SET_TIME_ZONE="android.permission.SET_TIME_ZONE"; + /** Allows applications to set the wallpaper + */ + public static final String SET_WALLPAPER="android.permission.SET_WALLPAPER"; + /** Allows applications to set a live wallpaper. + @hide XXX Change to signature once the picker is moved to its + own apk as Ghod Intended. + */ + public static final String SET_WALLPAPER_COMPONENT="android.permission.SET_WALLPAPER_COMPONENT"; + /** Allows applications to set the wallpaper hints + */ + public static final String SET_WALLPAPER_HINTS="android.permission.SET_WALLPAPER_HINTS"; + /** Allows an application to call the activity manager shutdown() API + to put the higher-level system there into a shutdown state. + @hide + */ + public static final String SHUTDOWN="android.permission.SHUTDOWN"; + /** Allow an application to request that a signal be sent to all persistent processes. +

Not for use by third-party applications. + */ + public static final String SIGNAL_PERSISTENT_PROCESSES="android.permission.SIGNAL_PERSISTENT_PROCESSES"; + /** Allows an application to start any activity, regardless of permission + protection or exported state. @hide + */ + public static final String START_ANY_ACTIVITY="android.permission.START_ANY_ACTIVITY"; + /** Allows an application to open, close, or disable the status bar + and its icons. +

Not for use by third-party applications. + */ + public static final String STATUS_BAR="android.permission.STATUS_BAR"; + /** Allows an application to be the status bar. Currently used only by SystemUI.apk + @hide + */ + public static final String STATUS_BAR_SERVICE="android.permission.STATUS_BAR_SERVICE"; + /** Allows an application to tell the activity manager to temporarily + stop application switches, putting it into a special mode that + prevents applications from immediately switching away from some + critical UI such as the home screen. + @hide + */ + public static final String STOP_APP_SWITCHES="android.permission.STOP_APP_SWITCHES"; + /** Allows an application to allow access the subscribed feeds + ContentProvider. + */ + public static final String SUBSCRIBED_FEEDS_READ="android.permission.SUBSCRIBED_FEEDS_READ"; + public static final String SUBSCRIBED_FEEDS_WRITE="android.permission.SUBSCRIBED_FEEDS_WRITE"; + /** Allows an application to open windows using the type + {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT}, + shown on top of all other applications. Very few applications + should use this permission; these windows are intended for + system-level interaction with the user. + */ + public static final String SYSTEM_ALERT_WINDOW="android.permission.SYSTEM_ALERT_WINDOW"; + /** @hide Allows an application to temporary enable accessibility on the device. + */ + public static final String TEMPORARY_ENABLE_ACCESSIBILITY="android.permission.TEMPORARY_ENABLE_ACCESSIBILITY"; + /** Allows using the device's IR transmitter, if available + */ + public static final String TRANSMIT_IR="android.permission.TRANSMIT_IR"; + /** Allows an application to uninstall a shortcut in Launcher + */ + public static final String UNINSTALL_SHORTCUT="com.android.launcher.permission.UNINSTALL_SHORTCUT"; + /** Allows an application to update application operation statistics. Not for + use by third party apps. @hide + */ + public static final String UPDATE_APP_OPS_STATS="android.permission.UPDATE_APP_OPS_STATS"; + /** Allows an application to update device statistics. +

Not for use by third-party applications. + */ + public static final String UPDATE_DEVICE_STATS="android.permission.UPDATE_DEVICE_STATS"; + /** Allows an application to hold an UpdateLock, recommending that a headless + OTA reboot *not* occur while the lock is held. + @hide + */ + public static final String UPDATE_LOCK="android.permission.UPDATE_LOCK"; + /** Allows an application to request authtokens from the AccountManager + */ + public static final String USE_CREDENTIALS="android.permission.USE_CREDENTIALS"; + /** Allows an application to use SIP service + */ + public static final String USE_SIP="android.permission.USE_SIP"; + /** Allows access to the vibrator + */ + public static final String VIBRATE="android.permission.VIBRATE"; + /** Allows using PowerManager WakeLocks to keep processor from sleeping or screen + from dimming + */ + public static final String WAKE_LOCK="android.permission.WAKE_LOCK"; + /** Allows applications to write the apn settings. +

Not for use by third-party applications. + */ + public static final String WRITE_APN_SETTINGS="android.permission.WRITE_APN_SETTINGS"; + /** Allows an application to write (but not read) the user's + calendar data. + */ + public static final String WRITE_CALENDAR="android.permission.WRITE_CALENDAR"; + /** Allows an application to write (but not read) the user's + contacts data. +

Note: If your app uses the + {@link #WRITE_CONTACTS} permission and both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 15 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 16 or higher.

+ */ + public static final String WRITE_CALL_LOG="android.permission.WRITE_CALL_LOG"; + /** Allows an application to write (but not read) the user's + contacts data. + */ + public static final String WRITE_CONTACTS="android.permission.WRITE_CONTACTS"; + /** Allows applications to write dream settings, and start or stop dreaming. + @hide + */ + public static final String WRITE_DREAM_STATE="android.permission.WRITE_DREAM_STATE"; + /** Allows an application to write to external storage. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. +

Starting in API level 19, this permission is not required to + read/write files in your application-specific directories returned by + {@link android.content.Context#getExternalFilesDir} and + {@link android.content.Context#getExternalCacheDir}. + */ + public static final String WRITE_EXTERNAL_STORAGE="android.permission.WRITE_EXTERNAL_STORAGE"; + /** Allows an application to modify the Google service map. +

Not for use by third-party applications. + */ + public static final String WRITE_GSERVICES="android.permission.WRITE_GSERVICES"; + /** Allows an application to write (but not read) the user's + browsing history and bookmarks. + */ + public static final String WRITE_HISTORY_BOOKMARKS="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"; + /** Allows an application to write to internal media storage + @hide + */ + public static final String WRITE_MEDIA_STORAGE="android.permission.WRITE_MEDIA_STORAGE"; + /** Allows an application to write (but not read) the user's + personal profile data. + */ + public static final String WRITE_PROFILE="android.permission.WRITE_PROFILE"; + /** Allows an application to read or write the secure system settings. +

Not for use by third-party applications. + */ + public static final String WRITE_SECURE_SETTINGS="android.permission.WRITE_SECURE_SETTINGS"; + /** Allows an application to read or write the system settings. + */ + public static final String WRITE_SETTINGS="android.permission.WRITE_SETTINGS"; + /** Allows an application to write SMS messages. + */ + public static final String WRITE_SMS="android.permission.WRITE_SMS"; + /** Allows an application to write (but not read) the user's + social stream data. + */ + public static final String WRITE_SOCIAL_STREAM="android.permission.WRITE_SOCIAL_STREAM"; + /** Allows applications to write the sync settings + */ + public static final String WRITE_SYNC_SETTINGS="android.permission.WRITE_SYNC_SETTINGS"; + /** Allows an application to write to the user dictionary. + */ + public static final String WRITE_USER_DICTIONARY="android.permission.WRITE_USER_DICTIONARY"; + } + public static final class permission_group { + /** Used for permissions that allow requesting certain accessibility features. + */ + public static final String ACCESSIBILITY_FEATURES="android.permission-group.ACCESSIBILITY_FEATURES"; + /** Permissions for direct access to the accounts managed + by the Account Manager. + */ + public static final String ACCOUNTS="android.permission-group.ACCOUNTS"; + /** Used for permissions that provide direct access to the hardware on + the device that has an effect on battery life. This includes vibrator, + flashlight, etc. + */ + public static final String AFFECTS_BATTERY="android.permission-group.AFFECTS_BATTERY"; + /** Group of permissions that are related to the other applications + installed on the system. Examples include such as listing + running apps, or killing background processes. + */ + public static final String APP_INFO="android.permission-group.APP_INFO"; + /** Used for permissions that provide direct access to speaker settings + the device. + */ + public static final String AUDIO_SETTINGS="android.permission-group.AUDIO_SETTINGS"; + /** Used for permissions that provide access to other devices through Bluetooth. + */ + public static final String BLUETOOTH_NETWORK="android.permission-group.BLUETOOTH_NETWORK"; + /** Used for permissions that provide access to the user + bookmarks and browser history. + */ + public static final String BOOKMARKS="android.permission-group.BOOKMARKS"; + /** Used for permissions that provide access to the device + calendar to create / view events. + */ + public static final String CALENDAR="android.permission-group.CALENDAR"; + /** Used for permissions that are associated with accessing + camera or capturing images/video from the device. + */ + public static final String CAMERA="android.permission-group.CAMERA"; + /** Used for permissions that can be used to make the user spend money + without their direct involvement. + */ + public static final String COST_MONEY="android.permission-group.COST_MONEY"; + /** Group of permissions that are related to development features. These + are not permissions that should appear in third-party applications; they + protect APIs that are intended only to be used for development + purposes. + */ + public static final String DEVELOPMENT_TOOLS="android.permission-group.DEVELOPMENT_TOOLS"; + /** Used for permissions that provide access to the user voicemail box. + */ + public static final String DEVICE_ALARMS="android.permission-group.DEVICE_ALARMS"; + /** Group of permissions that allow manipulation of how + another application displays UI to the user. + */ + public static final String DISPLAY="android.permission-group.DISPLAY"; + /** Used for permissions that provide direct access to the hardware on + the device. This includes audio, the camera, vibrator, etc. + */ + public static final String HARDWARE_CONTROLS="android.permission-group.HARDWARE_CONTROLS"; + /** Used for permissions that allow access to the user's current + location. + */ + public static final String LOCATION="android.permission-group.LOCATION"; + /** Used for permissions that allow an application to send messages + on behalf of the user or intercept messages being received by the + user. This is primarily intended for SMS/MMS messaging, such as + receiving or reading an MMS. + */ + public static final String MESSAGES="android.permission-group.MESSAGES"; + /** Used for permissions that are associated with accessing + microphone audio from the device. Note that phone calls also capture audio + but are in a separate (more visible) permission group. + */ + public static final String MICROPHONE="android.permission-group.MICROPHONE"; + /** Used for permissions that provide access to networking services. The + main permission here is internet access, but this is also an + appropriate group for accessing or modifying any network configuration + or other related network operations. + */ + public static final String NETWORK="android.permission-group.NETWORK"; + /** Used for permissions that provide access to information about the device + user such as profile information. This includes both reading and + writing of this data (which should generally be expressed as two + distinct permissions). + */ + public static final String PERSONAL_INFO="android.permission-group.PERSONAL_INFO"; + /** Used for permissions that are associated with accessing and modifyign + telephony state: placing calls, intercepting outgoing calls, reading + and modifying the phone state. + */ + public static final String PHONE_CALLS="android.permission-group.PHONE_CALLS"; + /** Group of permissions that are related to the screenlock. + */ + public static final String SCREENLOCK="android.permission-group.SCREENLOCK"; + /** Used for permissions that provide access to the user's social connections, + such as contacts, call logs, social stream, etc. This includes + both reading and writing of this data (which should generally be + expressed as two distinct permissions). + */ + public static final String SOCIAL_INFO="android.permission-group.SOCIAL_INFO"; + /** Used for permissions that change the status bar + */ + public static final String STATUS_BAR="android.permission-group.STATUS_BAR"; + /** Group of permissions that are related to SD card access. + */ + public static final String STORAGE="android.permission-group.STORAGE"; + /** Used for permissions that access the sync settings or sync + related information. + */ + public static final String SYNC_SETTINGS="android.permission-group.SYNC_SETTINGS"; + /** Group of permissions that are related to system clock. + */ + public static final String SYSTEM_CLOCK="android.permission-group.SYSTEM_CLOCK"; + /** Group of permissions that are related to system APIs. Many + of these are not permissions the user will be expected to understand, + and such permissions should generally be marked as "normal" protection + level so they don't get displayed. This can also, however, be used + for miscellaneous features that provide access to the operating system, + such as writing the global system settings. + */ + public static final String SYSTEM_TOOLS="android.permission-group.SYSTEM_TOOLS"; + /** Used for permissions that provide access to the user + calendar to create / view events. + */ + public static final String USER_DICTIONARY="android.permission-group.USER_DICTIONARY"; + /** Used for permissions that provide access to the user voicemail box. + */ + public static final String VOICEMAIL="android.permission-group.VOICEMAIL"; + /** Group of permissions that allow manipulation of how + another application displays UI to the user. + */ + public static final String WALLPAPER="android.permission-group.WALLPAPER"; + /** Used for permissions that provide access to the user + calendar to create / view events. + */ + public static final String WRITE_USER_DICTIONARY="android.permission-group.WRITE_USER_DICTIONARY"; + } +} diff --git a/src/api-impl/android/R.java b/src/api-impl/android/R.java new file mode 100644 index 00000000..4c9debb7 --- /dev/null +++ b/src/api-impl/android/R.java @@ -0,0 +1,45677 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package android; + +public final class R { + public static final class anim { + public static final int accelerate_decelerate_interpolator=0x010a0004; + /** Acceleration curve matching Flash's quadratic ease out function. + */ + public static final int accelerate_interpolator=0x010a0005; + public static final int anticipate_interpolator=0x010a0007; + public static final int anticipate_overshoot_interpolator=0x010a0009; + public static final int bounce_interpolator=0x010a000a; + public static final int cycle_interpolator=0x010a000c; + /** Acceleration curve matching Flash's quadratic ease in function. + */ + public static final int decelerate_interpolator=0x010a0006; + public static final int fade_in=0x010a0000; + public static final int fade_out=0x010a0001; + public static final int linear_interpolator=0x010a000b; + public static final int overshoot_interpolator=0x010a0008; + public static final int slide_in_left=0x010a0002; + public static final int slide_out_right=0x010a0003; + } + public static final class animator { + /** A simple fade-in animation. + */ + public static final int fade_in=0x010b0000; + /** A simple fade-out animation. + */ + public static final int fade_out=0x010b0001; + } + public static final class array { + /** Email address types from android.provider.Contacts. This could be used when adding a new e-mail address for a contact, for example. + */ + public static final int emailAddressTypes=0x01070000; + /** Instant Message protocols/providers from android.provider.Contacts + */ + public static final int imProtocols=0x01070001; + /** Organization types from android.provider.Contacts. This could be used when adding a new organization for a contact, for example. + */ + public static final int organizationTypes=0x01070002; + /** Phone number types from android.provider.Contacts. This could be used when adding a new phone number for a contact, for example. + */ + public static final int phoneTypes=0x01070003; + /** Postal address types from android.provider.Contacts. This could be used when adding a new address for a contact, for example. + */ + public static final int postalAddressTypes=0x01070004; + } + public static final class attr { + /** Default AbsListView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int absListViewStyle=0x0101006a; + /** The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + +
ConstantValueDescription
typeViewClicked0x00000001 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CLICKED} events.
typeViewLongClicked0x00000002 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_LONG_CLICKED} events.
typeViewSelected0x00000004 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SELECTED} events.
typeViewFocused0x00000008 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_FOCUSED} events.
typeViewTextChanged0x00000010 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED} events.
typeWindowStateChanged0x00000020 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} events.
typeNotificationStateChanged0x00000040 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED} events.
typeViewHoverEnter0x00000080 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} events.
typeViewHoverExit0x00000100 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} events.
typeTouchExplorationGestureStart0x00000200 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} events.
typeTouchExplorationGestureEnd0x00000400 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} events.
typeWindowContentChanged0x00000800 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} events.
typeViewScrolled0x000001000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SCROLLED} events.
typeViewTextSelectionChanged0x000002000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} events.
typeAllMask0xffffffff Receives {@link android.view.accessibility.AccessibilityEvent#TYPES_ALL_MASK} i.e. all events.
+ */ + public static final int accessibilityEventTypes=0x01010380; + /** The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
feedbackSpoken0x00000001 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_SPOKEN} feedback.
feedbackHaptic0x00000002 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_HAPTIC} feedback.
feedbackAudible0x00000004 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_AUDIBLE} feedback.
feedbackVisual0x00000008 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_VISUAL} feedback.
feedbackGeneric0x00000010 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_GENERIC} feedback.
feedbackAllMask0xffffffff Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_ALL_MASK} feedback.
+ */ + public static final int accessibilityFeedbackType=0x01010382; + /** Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. + This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
flagDefault0x00000001 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT}
flagIncludeNotImportantViews0x00000002 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}
flagRequestTouchExplorationMode0x00000004 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}
flagRequestEnhancedWebAccessibility0x00000008 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY}
flagReportViewIds0x00000010 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
flagRequestFilterKeyEvents0x00000020 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS}
+ */ + public static final int accessibilityFlags=0x01010384; + /** Indicates to accessibility services whether the user should be notified when + this view changes. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Accessibility services should not announce changes to this view.
polite1 Accessibility services should announce changes to this view.
assertive2 Accessibility services should interrupt ongoing speech to immediately + announce changes to this view.
+ */ + public static final int accessibilityLiveRegion=0x010103ee; + /** A preferences.xml file for authenticator-specific settings. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int accountPreferences=0x0101029f; + /** The account type this authenticator handles. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int accountType=0x0101028f; + /** The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int action=0x0101002d; + /** Custom divider drawable to use for elements in the action bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarDivider=0x0101039b; + /** Custom item state list drawable background for action bar items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarItemBackground=0x0101039c; + /** Size of the Action Bar, including the contextual + bar used to present Action Modes. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
wrap_content0
+ */ + public static final int actionBarSize=0x010102eb; + /** Reference to a style for the split Action Bar. This style + controls the split component that holds the menu/action + buttons. actionBarStyle is still used for the primary + bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarSplitStyle=0x01010388; + /** Reference to a style for the Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarStyle=0x010102ce; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabBarStyle=0x010102f4; + /** Default style for tabs within an action bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabStyle=0x010102f3; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabTextStyle=0x010102f5; + /** Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar. Most of the time + this will be a reference to the current theme, but when + the action bar has a significantly different contrast + profile than the rest of the activity the difference + can become important. If this is set to @null the current + theme will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarWidgetTheme=0x01010397; + /** Default action button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionButtonStyle=0x010102d8; + /** Default ActionBar dropdown style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionDropDownStyle=0x010102d7; + /** An optional layout to be used as an action view. + See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionLayout=0x010102fb; + /** TextAppearance style that will be applied to text that + appears within action menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionMenuTextAppearance=0x01010360; + /** Color for text that appears within action menu items. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int actionMenuTextColor=0x01010361; + /** Background drawable to use for action mode UI +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeBackground=0x010102db; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCloseButtonStyle=0x010102f7; + /** Drawable to use for the close action mode button +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCloseDrawable=0x010102dc; + /** Drawable to use for the Copy action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCopyDrawable=0x01010312; + /** Drawable to use for the Cut action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCutDrawable=0x01010311; + /** Drawable to use for the Paste action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModePasteDrawable=0x01010313; + /** Drawable to use for the Select all action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeSelectAllDrawable=0x0101037e; + /** Background drawable to use for action mode UI in the lower split bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeSplitBackground=0x0101039d; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeStyle=0x01010394; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionOverflowButtonStyle=0x010102f6; + /** The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item. + See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)} + for more info. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int actionProviderClass=0x01010389; + /** The name of an optional View class to instantiate and use as an + action view. See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int actionViewClass=0x010102fc; + /** Drawable used as a background for activated items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activatedBackgroundIndicator=0x010102fd; + /** When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityCloseEnterAnimation=0x010100ba; + /** When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityCloseExitAnimation=0x010100bb; + /** When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityOpenEnterAnimation=0x010100b8; + /** When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityOpenExitAnimation=0x010100b9; + /** Fully qualified class name of an activity that allows the user to manually + add printers to this print service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int addPrintersActivity=0x010103e6; + /** Sets whether this ViewGroup's drawable states also include + its children's drawable states. This is used, for example, to + make a group appear to be focused when its child EditText or button + is focused. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int addStatesFromChildren=0x010100f0; + /** Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int adjustViewBounds=0x0101011e; + /** Fully qualified class name of an activity with advanced print options + specific to this print service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int advancedPrintOptionsActivity=0x010103f1; + /** Icon drawable to use for alerts +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogIcon=0x01010355; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogStyle=0x0101005d; + /** Theme to use for alert dialogs spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogTheme=0x01010309; + /** Alignment constants. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
alignBounds0 Align the bounds of the children. + See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
alignMargins1 Align the margins of the children. + See {@link android.widget.GridLayout#ALIGN_MARGINS}.
+ */ + public static final int alignmentMode=0x0101037a; + /** Resource representing the term "All Contacts" (e.g. "All Friends" or + "All connections"). Optional (Default is "All Contacts"). +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allContactsName=0x010102cc; + /** Whether to allow the application to participate in the backup + and restore infrastructure. If this attribute is set to false, + no backup or restore of the application will ever be performed, even by a + full-system backup that would otherwise cause all application data to be saved + via adb. The default value of this attribute is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowBackup=0x01010280; + /** Option to let applications specify that user data can/cannot be + cleared. This flag is turned on by default. + This attribute is usable only by applications + included in the system image. Third-party apps cannot use it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowClearUserData=0x01010005; + /** Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority. + Otherwise the SyncManager will be sure not to issue a start sync request + to this SyncAdapter if the SyncAdapter is already syncing another account. + Defaults to false. + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowParallelSyncs=0x01010332; + /** Indicates whether the drawer can be opened/closed by a single tap + on the handle. (If false, the user must drag or fling, or click + using the trackball, to open/close the drawer.) Default is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowSingleTap=0x01010259; + /** Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowTaskReparenting=0x01010204; + /** alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque). +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alpha=0x0101031f; + /** The alphabetic shortcut key. This is the shortcut when using a keyboard + with alphabetic keys. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alphabeticShortcut=0x010101e3; + /** Defines whether the ViewGroup should always draw its children using their + drawing cache or not. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alwaysDrawnWithCache=0x010100ef; + /** Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations. + +

Normally the system will reset a task (remove all activities from + the stack and reset the root activity) in certain situations when + the user re-selects that task from the home screen. Typically this + will be done if the user hasn't visited that task for a certain + amount of time, such as 30 minutes. + +

By setting this attribute, the user will always return to your + task in its last state, regardless of how they get there. This is + useful, for example, in an application like the web browser where there + is a lot of state (such as multiple open tabs) that the application + would not like to lose. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alwaysRetainTaskState=0x01010203; + /** Angle of the gradient. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int angle=0x010101a0; + /** Defines whether to animate the current View when the ViewAnimation + is first displayed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateFirstView=0x010102d5; + /** Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run. When this flag is set to true, a default + LayoutTransition object will be set on the ViewGroup container and default + animations will run when these layout changes occur. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateLayoutChanges=0x010102f2; + /** Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle. Default is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateOnClick=0x0101025c; + /** Animation to use on each child. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int animation=0x010101cd; + /** Defines whether layout animations should create a drawing cache for their + children. Enabling the animation cache consumes more memory and requires + a longer initialization but provides better performance. The animation + cache is enabled by default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animationCache=0x010100ed; + /** Sets how long a transition animation should run (in milliseconds) + when layout has changed. Only relevant if animation is turned on. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animationDuration=0x01010112; + /** The order in which the animations will be started. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Animations are started in the natural order.
reverse1 Animations are started in the reverse order.
random2 Animations are started randomly.
+ */ + public static final int animationOrder=0x010101ce; + /** @deprecated Not used by the framework. + Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.} +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int animationResolution=0x0101031a; + /** Enables or disables antialiasing. Antialiasing can be used to smooth the + edges of a bitmap when rotated. Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int antialias=0x0101011a; + /** Indicates whether the application can accommodate any screen + density. Older applications are assumed to not be able to, + new ones able to. You can explicitly supply your abilities + here. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int anyDensity=0x0101026c; + /** A drawable that can be rendered in Android's system UI for representing + the service. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int apduServiceBanner=0x010103ed; + /** Value is a string that specifies the Maps API Key to use. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int apiKey=0x01010211; + /** Name of the author of this component, e.g. Google. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int author=0x010102b4; + /** Specify the authorities under which this content provider can be + found. Multiple authorities may be supplied by separating them + with a semicolon. Authority names should use a Java-style naming + convention (such as com.google.provider.MyProvider) + in order to avoid conflicts. Typically this name is the same + as the class implementation describing the provider's data structure. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int authorities=0x01010018; + /** The view id of the AppWidget subview which should be auto-advanced. + by the widget's host. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int autoAdvanceViewId=0x0101030f; + /** Default AutoCompleteTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int autoCompleteTextViewStyle=0x0101006b; + /** Controls whether links such as urls and email addresses are + automatically found and converted to clickable links. The default + value is "none", disabling this feature. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
none0x00 Match no patterns (default).
web0x01 Match Web URLs.
email0x02 Match email addresses.
phone0x04 Match phone numbers.
map0x08 Match map addresses.
all0x0f Match all patterns (equivalent to web|email|phone|map).
+ */ + public static final int autoLink=0x010100b0; + /** Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). See + {@link android.graphics.drawable.Drawable#setAutoMirrored}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoMirrored=0x010103ea; + /** When true, automatically start animating +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoStart=0x010102b5; + /** If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors. + The default is "false". + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int autoText=0x0101016a; + /** If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity). If set to false any URLs entered are treated as + normal query text. + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoUrlDetect=0x0101028c; + /** A drawable to use as the background. This can be either a reference + to a full drawable resource (such as a PNG image, 9-patch, + XML state list description, etc), or a solid color such as "#ff000000" + (black). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int background=0x010100d4; + /** Default background dim amount when a menu, dialog, or something similar pops up. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backgroundDimAmount=0x01010032; + /** Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backgroundDimEnabled=0x0101021f; + /** Specifies a background drawable for the bottom component of a split action bar. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int backgroundSplit=0x0101038b; + /** Specifies a background drawable for a second stacked row of the action bar. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int backgroundStacked=0x0101038a; + /** The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backupAgent=0x0101027f; + /** The offset of the baseline within this view. See {see android.view.View#getBaseline} + for details +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baseline=0x0101031c; + /** If true, the image view will be baseline aligned with based on its + bottom edge. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAlignBottom=0x01010122; + /** When set to false, prevents the layout from aligning its children's + baselines. This attribute is particularly useful when the children + use different values for gravity. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAligned=0x01010126; + /** When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView). +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAlignedChildIndex=0x01010127; + /** Style for buttons without an explicit border, often used in groups. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int borderlessButtonStyle=0x0101032b; + /** Amount of bottom padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottom=0x010101b0; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomBright=0x010100cd; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomDark=0x010100c9; + /** Radius of the bottom left corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomLeftRadius=0x010101ab; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomMedium=0x010100ce; + /** Extra offset for the handle at the bottom of the SlidingDrawer. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomOffset=0x01010257; + /** Radius of the bottom right corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomRightRadius=0x010101ac; + /** The short title for the bread crumb of this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int breadCrumbShortTitle=0x01010304; + /** The title for the bread crumb of this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int breadCrumbTitle=0x01010303; + /** Determines the minimum type that getText() will return. + The default is "normal". + Note that EditText and LogTextBox always return Editable, + even if you specify something less powerful here. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Can return any CharSequence, possibly a + Spanned one if the source text was Spanned.
spannable1 Can only return Spannable.
editable2 Can only return Spannable and Editable.
+ */ + public static final int bufferType=0x0101014e; + /** Drawable used for the button graphic (e.g. checkbox, radio button, etc). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int button=0x01010107; + /** Style for buttons within button bars +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonBarButtonStyle=0x0101032f; + /** Style for button bars +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonBarStyle=0x0101032e; + /** Normal Button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyle=0x01010048; + /** Button style to inset into an EditText. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleInset=0x0101004a; + /** Small Button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleSmall=0x01010049; + /** ToggleButton style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleToggle=0x0101004b; + /** Indicates that this list will always be drawn on top of solid, single-color + opaque background. This allows the list to optimize drawing. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cacheColorHint=0x01010101; + /** Whether the calendar view is shown. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int calendarViewShown=0x0101034c; + /** The CalendarView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int calendarViewStyle=0x0101035d; + /** Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements. For example, installing scripts to make app + content more accessible. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestEnhancedWebAccessibility=0x010103d8; + /** Attribute whether the accessibility service wants to be able to request to + filter key events. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestFilterKeyEvents=0x010103d9; + /** Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestTouchExplorationMode=0x010103d7; + /** Attribute whether the accessibility service wants to be able to retrieve the + active window content. This setting cannot be changed at runtime. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRetrieveWindowContent=0x01010385; + /** A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method. The + text itself will be ignored, but the style spans will be applied + to the candidate text as it is edited. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. + */ + public static final int candidatesTextStyleSpans=0x01010230; + /** If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types. + The default is "none". + {@deprecated Use inputType instead.} +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Don't automatically capitalize anything.
sentences1 Capitalize the first word of each sentence.
words2 Capitalize the first letter of every word.
characters3 Capitalize every character.
+ */ + @Deprecated + public static final int capitalize=0x01010169; + /** The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly. + Additionally, when a category is specified, Android will ensure that either + all AIDs in this group are routed to this application, or none at all. + This attribute is optional. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int category=0x010103e8; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerBright=0x010100cc; + /** Optional center color. For linear gradients, use centerX or centerY + to place the center color. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerColor=0x0101020b; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerDark=0x010100c8; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerMedium=0x010100cf; + /** X coordinate of the origin of the gradient within the shape. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerX=0x010101a2; + /** Y coordinate of the origin of the gradient within the shape. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerY=0x010101a3; + /** Default style for CheckBoxPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkBoxPreferenceStyle=0x0101008f; + /** Drawable used for the check mark graphic. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkMark=0x01010108; + /** Whether the item is capable of displaying a check mark. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checkable=0x010101e5; + /** Whether the items are capable of displaying a check mark. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 The items are not checkable.
all1 The items are all checkable.
single2 The items are checkable and there will only be a single checked item in + this group.
+ */ + public static final int checkableBehavior=0x010101e0; + /** Default Checkbox style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkboxStyle=0x0101006c; + /** Indicates the initial checked state of this button. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checked=0x01010106; + /** The id of the child radio button that should be checked by default + within this radio group. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checkedButton=0x01010148; + /** Default CheckedTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkedTextViewStyle=0x010103c8; + /** Drawable or color that is used as a divider for children. (It will drawn + below and above child items.) The height of this will be the same as + the height of the normal list item divider. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int childDivider=0x01010111; + /** Indicator shown beside the child View. This can be a stateful Drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int childIndicator=0x0101010c; + /** The end bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorEnd=0x010103d4; + /** The left bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorLeft=0x0101010f; + /** The right bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorRight=0x01010110; + /** The start bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorStart=0x010103d3; + /** Defines the choice behavior for the view. By default, lists do not have + any choice behavior. By setting the choiceMode to singleChoice, the list + allows up to one item to be in a chosen state. By setting the choiceMode to + multipleChoice, the list allows any number of items to be chosen. + Finally, by setting the choiceMode to multipleChoiceModal the list allows + any number of items to be chosen in a special selection mode. + The application will supply a + {@link android.widget.AbsListView.MultiChoiceModeListener} using + {@link android.widget.AbsListView#setMultiChoiceModeListener} to control the + selection mode. This uses the {@link android.view.ActionMode} API. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Normal list that does not indicate choices.
singleChoice1 The list allows up to one choice.
multipleChoice2 The list allows multiple choices.
multipleChoiceModal3 The list allows multiple choices in a custom selection mode.
+ */ + public static final int choiceMode=0x0101012b; + /** Specify whether an activity's task should be cleared when it + is re-launched from the home screen. As a result, every time the + user starts the task, they will be brought to its root activity, + regardless of whether they used BACK or HOME to last leave it. + This flag only applies to activities that + are used to start the root of a new task. + +

An example of the use of this flag would be for the case where + a user launches activity A from home, and from there goes to + activity B. They now press home, and then return to activity A. + Normally they would see activity B, since that is what they were + last doing in A's task. However, if A has set this flag to true, + then upon going to the background all of the tasks on top of it (B + in this case) are removed, so when the user next returns to A they + will restart at its original activity. + +

When this option is used in conjunction with + {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the + clear. That is, all activities above the root activity of the + task will be removed: those that have an affinity will be moved + to the task they are associated with, otherwise they will simply + be dropped as described here. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clearTaskOnLaunch=0x01010015; + /** Defines whether this view reacts to click events. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clickable=0x010100e5; + /** Defines whether a child is limited to draw inside of its bounds or not. + This is useful with animations that scale the size of the children to more + than 100% for instance. In such a case, this property should be set to false + to allow the children to draw outside of their bounds. The default value of + this property is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clipChildren=0x010100ea; + /** The orientation for the clip. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal1 Clip the drawable horizontally.
vertical2 Clip the drawable vertically.
+ */ + public static final int clipOrientation=0x0101020a; + /** Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area. This property is set to true by default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clipToPadding=0x010100eb; + /** The unicode value or comma-separated values that this key outputs. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int codes=0x01010242; + /** The zero-based index of the columns to collapse. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int collapseColumns=0x0101014b; + /** Solid color for the gradient shape. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int color=0x010101a5; + /** Default highlight color for items that are + activated. (Activated meaning persistent selection.) +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorActivatedHighlight=0x01010390; + /** Color that matches (as closely as possible) the window background. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorBackground=0x01010031; + /** This is a hint for a solid color that can be used for caching + rendered views. This should be the color of the background when + there is a solid background color; it should be null when the + background is a texture or translucent. When a device is able + to use accelerated drawing (thus setting state_accelerated), the + cache hint is ignored and always assumed to be transparent. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorBackgroundCacheHint=0x010102ab; + /** Default highlight color for items that are + focused. (Focused meaning cursor-based selection.) +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorFocusedHighlight=0x0101038f; + /** Default color of foreground imagery. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorForeground=0x01010030; + /** Default color of foreground imagery on an inverted background. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorForegroundInverse=0x01010206; + /** Default highlight color for items that are long-pressed. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorLongPressedHighlight=0x0101038e; + /** Default highlight color for items in multiple selection + mode. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorMultiSelectHighlight=0x01010391; + /** Default highlight color for items that are pressed. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorPressedHighlight=0x0101038d; + /** The maxmimum number of columns to create when automatically positioning children. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnCount=0x01010377; + /** Fraction of the animation duration used to delay the beginning of + the animation of each column. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnDelay=0x010101cf; + /** When set to true, forces column boundaries to appear in the same order + as column indices. + The default is true. + See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnOrderPreserved=0x01010378; + /** Specifies the fixed width for each column. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnWidth=0x01010117; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application is designed for. If this value is smaller than + the "smallest screen width" of the device it is running on, the user + is offered to run it in a compatibility mode that emulates a + smaller screen and zooms it to fit the screen. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for compatibleWidthLimitDp is larger than 320. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int compatibleWidthLimitDp=0x01010365; + /** Defines the hint displayed in the drop down menu. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int completionHint=0x01010172; + /** Defines the hint view displayed in the drop down menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int completionHintView=0x01010173; + /** Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int completionThreshold=0x01010174; + /** Specify one or more configuration changes that the activity will + handle itself. If not specified, the activity will be restarted + if any of these configuration changes happen in the system. Otherwise, + the activity will remain running and its + {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged} + method called with the new configuration. + +

Note that all of these configuration changes can impact the + resource values seen by the application, so you will generally need + to re-retrieve all resources (including view layouts, drawables, etc) + to correctly handle any configuration change. + +

These values must be kept in sync with those in + {@link android.content.pm.ActivityInfo} and + include/utils/ResourceTypes.h. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
mcc0x0001 The IMSI MCC has changed, that is a SIM has been detected and + updated the Mobile Country Code.
mnc0x0002 The IMSI MNC has changed, that is a SIM has been detected and + updated the Mobile Network Code.
locale0x0004 The locale has changed, that is the user has selected a new + language that text should be displayed in.
touchscreen0x0008 The touchscreen has changed. Should never normally happen.
keyboard0x0010 The keyboard type has changed, for example the user has plugged + in an external keyboard.
keyboardHidden0x0020 The keyboard or navigation accessibility has changed, for example + the user has slid the keyboard out to expose it. Note that + despite its name, this applied to any accessibility: keyboard + or navigation.
navigation0x0040 The navigation type has changed. Should never normally happen.
orientation0x0080 The screen orientation has changed, that is the user has + rotated the device.
screenLayout0x0100 The screen layout has changed. This might be caused by a + different display being activated.
uiMode0x0200 The global user interface mode has changed. For example, + going in or out of car mode, night mode changing, etc.
screenSize0x0400 The current available screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in the + currently available size, so will change when the user switches + between landscape and portrait.
smallestScreenSize0x0800 The physical screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in size + regardless of orientation, so will only change when the actual + physical screen size has changed such as switching to an external + display.
layoutDirection0x2000 The layout direction has changed. For example going from LTR to RTL.
fontScale0x40000000 The font scaling factor has changed, that is the user has + selected a new global font size.
+ */ + public static final int configChanges=0x0101001f; + /** A class name in the AppWidget's package to be launched to configure. + If not supplied, then no activity will be launched. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int configure=0x0101025d; + /** If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states. If false, the size will vary based on the + current state. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int constantSize=0x01010196; + /** Identifier for the child that represents the drawer's content. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int content=0x0101025b; + /** the authority of a content provider. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int contentAuthority=0x01010290; + /** Defines text that briefly describes content of the view. This property is used + primarily for accessibility. Since some views do not have textual + representation this attribute can be used for providing such. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int contentDescription=0x01010273; + /** If true, the image will be cropped to fit within its padding. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cropToPadding=0x01010123; + /** Makes the cursor visible (the default) or invisible. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cursorVisible=0x01010152; + /** Specifies a layout for custom navigation. Overrides navigationMode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int customNavigationLayout=0x010102d2; + /** Account handles its own token storage and permissions. + Default to false + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int customTokens=0x0101033b; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cycles=0x010101d4; + /** Gap between dashes in the stroke. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dashGap=0x010101a7; + /** Length of a dash in the stroke. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dashWidth=0x010101a6; + /** The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}. +

Note: scheme and host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + URIs here should always be normalized to use lower case letters + for these elements (as well as other proper Uri normalization).

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int data=0x0101002e; + /** The DatePicker style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int datePickerStyle=0x0101035c; + /** The text appearance for the calendar dates. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dateTextAppearance=0x01010349; + /** Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int debuggable=0x0101000f; + /** The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a floating point value, such as "1.2". + */ + public static final int defaultValue=0x010101ed; + /** Fraction of the animation duration used to delay the beginning of + the animation of each child. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int delay=0x010101cc; + /** The key of another Preference that this Preference will depend on. If the other + Preference is not set or is off, this Preference will be disabled. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dependency=0x010101ec; + /** Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
beforeDescendants0 The ViewGroup will get focus before any of its descendants.
afterDescendants1 The ViewGroup will get focus only if none of its descendants want it.
blocksDescendants2 The ViewGroup will block its descendants from receiving focus.
+ */ + public static final int descendantFocusability=0x010100f1; + /** Descriptive text for the associated data. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int description=0x01010020; + /** Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detachWallpaper=0x010102a6; + /** Column in data table that contains details for this data. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detailColumn=0x010102a3; + /** Flag indicating that detail should be built from SocialProvider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detailSocialSummary=0x010102a4; + /** Background that can be used behind parts of a UI that provide + details on data the user is selecting. For example, this is + the background element of PreferenceActivity's embedded + preference fragment. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int detailsElementBackground=0x0101034e; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dial=0x01010102; + /** The icon for the dialog. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogIcon=0x010101f4; + /** A layout to be used as the content View for the dialog. By default, this shouldn't + be needed. If a custom DialogPreference is required, this should be set. For example, + the EditTextPreference uses a layout with an EditText as this attribute. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogLayout=0x010101f7; + /** The message in the dialog. If a dialogLayout is provided and contains + a TextView with ID android:id/message, this message will be placed in there. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dialogMessage=0x010101f3; + /** Default style for DialogPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogPreferenceStyle=0x01010091; + /** Theme to use for dialogs spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogTheme=0x01010308; + /** The title in the dialog. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dialogTitle=0x010101f2; + /** If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept. + If this is set, numeric is implied to be true. + The default is false. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int digits=0x01010166; + /** Direction of the animation in the grid. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
left_to_right0x0 Animates columns from left to right.
right_to_left0x1 Animates columns from right to left.
top_to_bottom0x0 Animates rows from top to bottom.
bottom_to_top0x2 Animates rows from bottom to top.
+ */ + public static final int direction=0x010101d1; + /** Reference to an array resource that be used to announce the directions with targets around the circle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int directionDescriptions=0x010103a1; + /** Priority of the rows and columns. When the priority is none, + both rows and columns have the same priority. When the priority is + column, the animations will be applied on the columns first. The same + goes for rows. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Rows and columns are animated at the same time.
column1 Columns are animated first.
row2 Rows are animated first.
+ */ + public static final int directionPriority=0x010101d2; + /** The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int disableDependentsState=0x010101f1; + /** Default disabled alpha for widgets that set enabled/disabled alpha programmatically. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int disabledAlpha=0x01010033; + /** Options affecting how the action bar is displayed. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
none0
useLogo0x1
showHome0x2
homeAsUp0x4
showTitle0x8
showCustom0x10
disableHome0x20
+ */ + public static final int displayOptions=0x010102d0; + /** Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dither=0x0101011c; + /** Drawable or color to draw between list items. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int divider=0x01010129; + /** Height of the divider. Will use the intrinsic height of the divider if this + is not specified. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dividerHeight=0x0101012a; + /** Drawable to use for generic horizontal dividers. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dividerHorizontal=0x0101032c; + /** Size of padding on either end of a divider. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dividerPadding=0x0101032a; + /** Drawable to use for generic vertical dividers. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dividerVertical=0x0101030a; + /** When set to true, the selector will be drawn over the selected item. + Otherwise the selector is drawn behind the selected item. The default + value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int drawSelectorOnTop=0x010100fc; + /** Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int drawable=0x01010199; + /** The drawable to be drawn below the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableBottom=0x0101016e; + /** The drawable to be drawn to the end of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableEnd=0x01010393; + /** The drawable to be drawn to the left of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableLeft=0x0101016f; + /** The padding between the drawables and the text. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int drawablePadding=0x01010171; + /** The drawable to be drawn to the right of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableRight=0x01010170; + /** The drawable to be drawn to the start of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableStart=0x01010392; + /** The drawable to be drawn above the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableTop=0x0101016d; + /** Defines the quality of translucent drawing caches. This property is used + only when the drawing cache is enabled and translucent. The default value is auto. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Lets the framework decide what quality level should be used + for the drawing cache.
low1 Low quality. When set to low quality, the drawing cache uses a lower color + depth, thus losing precision in rendering gradients, but uses less memory.
high2 High quality. When set to high quality, the drawing cache uses a higher + color depth but uses more memory.
+ */ + public static final int drawingCacheQuality=0x010100e8; + /** View to anchor the auto-complete dropdown to. If not specified, the text view itself + is used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownAnchor=0x01010263; + /** Specifies the basic height of the dropdown. Its value may + be a dimension (such as "12dip") for a constant height, + fill_parent or match_parent to fill the height of the + screen, or wrap_content to match the height of + the content of the drop down. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fit the height of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the height of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the height of the content.
+ */ + public static final int dropDownHeight=0x01010283; + /** Default style for drop down hints. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownHintAppearance=0x01010088; + /** Amount of pixels by which the drop down should be offset horizontally. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dropDownHorizontalOffset=0x010102ac; + /** Default style for drop down items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownItemStyle=0x01010086; + /** Default ListView style for drop downs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownListViewStyle=0x0101006d; + /** Selector in a drop down list. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int dropDownSelector=0x01010175; + /** Default dropdown Spinner style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownSpinnerStyle=0x010102d6; + /** Amount of pixels by which the drop down should be offset vertically. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dropDownVerticalOffset=0x010102ad; + /** Specifies the basic width of the dropdown. Its value may + be a dimension (such as "12dip") for a constant width, + fill_parent or match_parent to match the width of the + screen, or wrap_content to match the width of + the anchored view. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+ */ + public static final int dropDownWidth=0x01010262; + /** When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.) from its direct parent rather than from itself. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int duplicateParentState=0x010100e9; + /** Amount of time (in milliseconds) to display this frame. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int duration=0x01010198; + /** EditText background drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextBackground=0x01010352; + /** EditText text foreground color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int editTextColor=0x01010351; + /** Default style for EditTextPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextPreferenceStyle=0x01010092; + /** Default EditText style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextStyle=0x0101006e; + /** If set, specifies that this TextView has an input method. + It will be a textual one unless it has otherwise been specified. + For TextView, this is false by default. For EditText, it is + true by default. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int editable=0x0101016b; + /** Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#extras + EditorInfo.extras} field when the input + method is connected. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editorExtras=0x01010224; + /** Where to ellipsize text. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
none0
start1
middle2
end3
marquee4
+ */ + public static final int ellipsize=0x010100ab; + /** Makes the TextView be exactly this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int ems=0x01010158; + /** Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass. + For example, a non-enabled EditText prevents the user from editing the contained text, and + a non-enabled Button prevents the user from tapping the button. + The appearance of enabled and non-enabled widgets may differ, if the drawables referenced + from evaluating state_enabled differ. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int enabled=0x0101000e; + /** End color of the gradient. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int endColor=0x0101019e; + /** {@deprecated Use maxDate instead.} + The last year (inclusive), for example "2010". + {@deprecated Use maxDate instead.} + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int endYear=0x0101017d; + /** Amount of time (in milliseconds) to fade in a new state drawable. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int enterFadeDuration=0x0101030c; + /** Reference to an array resource that will populate a list/adapter. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int entries=0x010100b2; + /** The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks on the second item in entries, the + second item in this array will be saved to the preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int entryValues=0x010101f8; + /** Defines whether the overlay should intercept the motion events when a gesture + is recognized. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int eventsInterceptionEnabled=0x0101027d; + /** Indicates that an Activity should be excluded from the list of + recently launched activities. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int excludeFromRecents=0x01010017; + /** Amount of time (in milliseconds) to fade out an old state drawable. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int exitFadeDuration=0x0101030d; + /** The preferred left bound for an expandable list child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildIndicatorLeft=0x01010052; + /** The preferred right bound for an expandable list child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildIndicatorRight=0x01010053; + /** The preferred left padding for an expandable list item that is a child. + If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildPaddingLeft=0x0101004f; + /** The preferred left bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemIndicatorLeft=0x01010050; + /** The preferred right bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorRight. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemIndicatorRight=0x01010051; + /** The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft). This takes into account + the indicator that will be shown to next to the item. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemPaddingLeft=0x0101004e; + /** Default ExpandableListView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int expandableListViewStyle=0x0101006f; + /** ExpandableListView with white background. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int expandableListViewWhiteStyle=0x010102b6; + /** Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int exported=0x01010010; + /** This is the amount by which to multiply the tension. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int extraTension=0x0101026b; + /** This is the amount of deceleration to add when easing in. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int factor=0x010101d3; + /** Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeDuration=0x01010278; + /** Defines whether the gesture will automatically fade out after being recognized. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeEnabled=0x0101027e; + /** Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeOffset=0x01010277; + /** Defines whether to fade out scrollbars when they are not in use. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeScrollbars=0x010102aa; + /** This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}). + Using fading edges may introduce noticeable performance + degradations and should be used only when required by the application's + visual design. To request fading edges with API level 14 and above, + use the android:requiresFadingEdge attribute instead. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+ */ + public static final int fadingEdge=0x010100df; + /** Defines the length of the fading edges. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadingEdgeLength=0x010100e0; + /**

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fade_in1 Fade will only fade appearing items in.
fade_out2 Fade will only fade disappearing items out.
fade_in_out3 Fade will fade appearing items in and disappearing items out.
+ */ + public static final int fadingMode=0x010103e1; + /** When set to true, the list will always show the fast scroll interface. + This setting implies fastScrollEnabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollAlwaysVisible=0x01010335; + /** Enables the fast scroll thumb that can be dragged to quickly scroll through + the list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollEnabled=0x01010226; + /** Position of the fast scroll index overlay window. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floating0
atThumb1
+ */ + public static final int fastScrollOverlayPosition=0x0101033a; + /** Drawable to use as the fast scroll index preview window background + when shown on the left. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollPreviewBackgroundLeft=0x01010337; + /** Drawable to use as the fast scroll index preview window background + when shown on the right. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollPreviewBackgroundRight=0x01010338; + /** Text color for the fast scroll index overlay. Make sure it + plays nicely with fastScrollPreviewBackground[Left|Right]. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollTextColor=0x01010359; + /** Drawable to use as the fast scroll thumb. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollThumbDrawable=0x01010336; + /** Drawable to use as the track for the fast scroll thumb. + This may be null. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollTrackDrawable=0x01010339; + /** When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillAfter=0x010101bd; + /** When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillBefore=0x010101bc; + /** When set to true, the value of fillBefore is taken into account. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillEnabled=0x0101024f; + /** Defines whether the scrollview should stretch its content to fill the viewport. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillViewport=0x0101017a; + /** Enables or disables bitmap filtering. Filtering is used when the bitmap is + shrunk or stretched to smooth its apperance. Default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int filter=0x0101011b; + /** Specifies whether to filter touches when the view's window is obscured by + another visible window. When set to true, the view will not receive touches + whenever a toast, dialog or other window appears above the view's window. + Refer to the {@link android.view.View} security documentation for more details. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int filterTouchesWhenObscured=0x010102c4; + /** Specify whether an activity should be finished when a "close system + windows" request has been made. This happens, for example, when + the home key is pressed, when the device is locked, when a system + dialog showing recent applications is displayed, etc. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int finishOnCloseSystemDialogs=0x010102a7; + /** Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen. + +

If both this option and {@link android.R.attr#allowTaskReparenting} are + specified, the finish trumps the affinity: the affinity will be + ignored and the activity simply finished. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int finishOnTaskLaunch=0x01010014; + /** The first day of week according to {@link java.util.Calendar}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int firstDayOfWeek=0x0101033d; + /** Boolean internal attribute to adjust view layout based on + system windows such as the status bar. + If true, adjusts the padding of this view to leave space for the system windows. + Will only take effect if this view is in a non-embedded activity. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fitsSystemWindows=0x010100dd; + /**

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int flipInterval=0x01010179; + /** Boolean that controls whether a view can take focus. By default the user can not + move focus to a view; by setting this attribute to true the view is + allowed to take focus. This value does not impact the behavior of + directly calling {@link android.view.View#requestFocus}, which will + always request focus regardless of this view. It only impacts where + focus navigation will try to move focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int focusable=0x010100da; + /** Boolean that controls whether a view can take focus while in touch mode. + If this is true for a view, that view can gain focus when clicked on, and can keep + focus if another view is clicked on that doesn't have this attribute set to true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int focusableInTouchMode=0x010100db; + /** The color for the dates of the focused month. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int focusedMonthDateColor=0x01010343; + /** Default font family. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fontFamily=0x010103ac; + /** When set to false, the ListView will not draw the divider before each footer view. + The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int footerDividersEnabled=0x0101022f; + /** Defines the drawable to draw over the content. This can be used as an overlay. + The foreground drawable participates in the padding of the content if the gravity + is set to fill. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int foreground=0x01010109; + /** Defines the gravity to apply to the foreground drawable. The gravity defaults + to fill. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
+ */ + public static final int foregroundGravity=0x01010200; + /** Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form. + If no format string is specified, the Chronometer will simply display + "MM:SS" or "H:MM:SS". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format=0x01010105; + /** Specifies the formatting pattern used to show the time and/or date + in 12-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "h:mm a". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format12Hour=0x010103ca; + /** Specifies the formatting pattern used to show the time and/or date + in 24-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "H:mm". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format24Hour=0x010103cb; + /** The fragment that is displayed when the user selects this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fragment=0x010102e3; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentCloseEnterAnimation=0x010102e7; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentCloseExitAnimation=0x010102e8; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentFadeEnterAnimation=0x010102e9; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentFadeExitAnimation=0x010102ea; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentOpenEnterAnimation=0x010102e5; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentOpenExitAnimation=0x010102e6; + /** If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position. By default this is disabled; + it can be useful when the contents of a text view is not stored + in a persistent place such as a content provider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int freezesText=0x0101016c; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromAlpha=0x010101ca; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromDegrees=0x010101b3; + /** The originating scene in this scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fromScene=0x010103dd; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromXDelta=0x010101c6; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromXScale=0x010101c2; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromYDelta=0x010101c8; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromYScale=0x010101c4; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int fullBright=0x010100ca; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int fullDark=0x010100c6; + /** Flag indicating that an Instrumentation class should be run as a + functional test. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int functionalTest=0x01010023; + /** The preferred background for gallery items. This should be set + as the background of any Views you provide from the Adapter. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int galleryItemBackground=0x0101004c; + /** Default Gallery style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int galleryStyle=0x01010070; + /** Color used to draw a gesture. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureColor=0x01010275; + /** Minimum curve angle a stroke must contain before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeAngleThreshold=0x0101027c; + /** Minimum length of a stroke before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeLengthThreshold=0x0101027a; + /** Squareness threshold of a stroke before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeSquarenessThreshold=0x0101027b; + /** Defines the type of strokes that define a gesture. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
single0 A gesture is made of only one stroke.
multiple1 A gesture is made of multiple strokes.
+ */ + public static final int gestureStrokeType=0x01010279; + /** Width of the stroke used to draw the gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeWidth=0x01010274; + /** The GLES driver version number needed by an application. + The higher 16 bits represent the major number and the lower 16 bits + represent the minor number. For example for GL 1.2 referring to + 0x00000102, the actual value should be set as 0x00010002. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int glEsVersion=0x01010281; + /** Radius of the gradient, used only with radial gradient. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gradientRadius=0x010101a4; + /** If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission. If you are supporting this feature, you must be + sure to call {@link android.content.Context#revokeUriPermission + Context.revokeUriPermission} when URIs are deleted from your + provider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int grantUriPermissions=0x0101001b; + /** Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int gravity=0x010100af; + /** Default GridView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int gridViewStyle=0x01010071; + /** Indicator shown beside the group View. This can be a stateful Drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int groupIndicator=0x0101010b; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int hand_hour=0x01010103; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int hand_minute=0x01010104; + /** Identifier for the child that represents the drawer's handle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int handle=0x0101025a; + /** Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running. + This allows it to target profiling data at a specific set of + operations. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int handleProfiling=0x01010022; + /** Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hapticFeedbackEnabled=0x0101025e; + /**

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hardwareAccelerated=0x010102d3; + /** Indicate whether this application contains code. If set to false, + there is no code associated with it and thus the system will not + try to load its code when launching components. The default is true + for normal behavior. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hasCode=0x0101000c; + /** Default background for the menu header. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int headerBackground=0x0101012f; + /** When set to false, the ListView will not draw the divider after each header view. + The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int headerDividersEnabled=0x0101022e; + /** Makes the TextView be exactly this many pixels tall. + You could get the same effect by specifying this number in the + layout parameters. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int height=0x01010155; + /** Hint text to display when the text is empty. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hint=0x01010150; + /** Specifies a drawable to use for the 'home as up' indicator. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int homeAsUpIndicator=0x0101030b; + /** Specifies a layout to use for the "home" section of the action bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int homeLayout=0x0101031d; + /** Default horizontal divider between rows of menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int horizontalDivider=0x0101012d; + /** Default horizontal gap between keys. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int horizontalGap=0x0101023f; + /** Default HorizontalScrollView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int horizontalScrollViewStyle=0x01010353; + /** Defines the default horizontal spacing between columns. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int horizontalSpacing=0x01010114; + /** Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. +

Note: host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + host names here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int host=0x01010028; + /** A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int icon=0x01010002; + /** The icon to show in the popup preview. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int iconPreview=0x01010249; + /** The default state of the SearchView. If true, it will be iconified when not in + use and expanded when clicked. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int iconifiedByDefault=0x010102fa; + /** Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int id=0x010100d0; + /** Indicates what view should not be affected by gravity. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ignoreGravity=0x010101ff; + /** The style resource to use for an ImageButton. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imageButtonStyle=0x01010072; + /** The style resource to use for an ImageButton that is an image well. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imageWellStyle=0x01010073; + /** Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeActionId=0x01010266; + /** Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeActionLabel=0x01010265; + /** Animation to use when showing the fullscreen extract UI after + it had previously been hidden. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imeExtractEnterAnimation=0x01010268; + /** Animation to use when hiding the fullscreen extract UI after + it had previously been shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imeExtractExitAnimation=0x01010269; + /** Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application. This allows, + for example, the candidate view to be hidden + while in fullscreen mode without having the application show through + behind it. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int imeFullscreenBackground=0x0101022c; + /** Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+ */ + public static final int imeOptions=0x01010264; + /** The extra value of the subtype. This string can be any string and will be passed to + the IME when the framework calls the IME with the subtype. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeExtraValue=0x010102ee; + /** The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + and will be passed to the IME when the framework calls the IME + with the subtype. This is also used by the framework to know the supported locales + of the IME. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeLocale=0x010102ec; + /** The mode of the subtype. This string can be a mode (e.g. voice, keyboard...) and this + string will be passed to the IME when the framework calls the IME with the + subtype. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeMode=0x010102ed; + /** Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int immersive=0x010102c0; + /** Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen. Note: While not recommended, an accessibility service may + decide to ignore this attribute and operate on all views in the view tree. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
auto0 The system determines whether the view is important for accessibility - default + (recommended).
yes1 The view is important for accessibility.
no2 The view is not important for accessibility.
noHideDescendants4 The view is not important for accessibility, nor are any of its descendant + views.
+ */ + public static final int importantForAccessibility=0x010103aa; + /** Identifier for the animation to use when a view is shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int inAnimation=0x01010177; + /** Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly. (Normally true). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int includeFontPadding=0x0101015f; + /** If provided and true, this searchable activity will be + included in any global lists of search targets. + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int includeInGlobalSearch=0x0101026e; + /** Allows to enable the indeterminate mode. In this mode the progress + bar plays an infinite looping animation. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminate=0x01010139; + /** Defines how the indeterminate mode should behave when the progress + reaches max. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
repeat1 Progress starts over from 0.
cycle2 Progress keeps the current value and goes back to 0.
+ */ + public static final int indeterminateBehavior=0x0101013e; + /** Drawable used for the indeterminate mode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int indeterminateDrawable=0x0101013b; + /** Duration of the indeterminate animation. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminateDuration=0x0101013d; + /** Restricts to ONLY indeterminate mode (state-keeping progress mode will not work). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminateOnly=0x0101013a; + /** Specifies a style resource to use for an indeterminate progress spinner. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int indeterminateProgressStyle=0x01010318; + /** The end bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorEnd. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorEnd=0x010103d2; + /** The left bound for an item's indicator. To specify a left bound specific to children, + use childIndicatorLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorLeft=0x0101010d; + /** The right bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorRight. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorRight=0x0101010e; + /** The start bound for an item's indicator. To specify a start bound specific to children, + use childIndicatorStart. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorStart=0x010103d1; + /** Overrides the id of the inflated View with this value. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int inflatedId=0x010100f3; + /** Specify the order in which content providers hosted by a process + are instantiated when that process is created. Not needed unless + you have providers with dependencies between each other, to make + sure that they are created in the order needed by those dependencies. + The value is a simple integer, with higher numbers being + initialized first. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int initOrder=0x0101001a; + /** A resource id of a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int initialKeyguardLayout=0x010103c2; + /** A resource id of a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int initialLayout=0x01010251; + /** Inner radius of the ring. When defined, innerRadiusRatio is ignored. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int innerRadius=0x0101025f; + /** Inner radius of the ring expressed as a ratio of the ring's width. For instance, + if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9. + This value is ignored if innerRadius is defined. Default value is 9. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int innerRadiusRatio=0x0101019b; + /** If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name). + {@deprecated Use inputType instead.} +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int inputMethod=0x01010168; + /** The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+ */ + public static final int inputType=0x01010220; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetBottom=0x010101ba; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetLeft=0x010101b7; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetRight=0x010101b8; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetTop=0x010101b9; + /** The default install location defined by an application. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Let the system decide ideal install location
internalOnly1 Explicitly request to be installed on internal phone storage + only.
preferExternal2 Prefer to be installed on SD card. There is no guarantee that + the system will honor this request. The application might end + up being installed on internal storage if external media + is unavailable or too full.
+ */ + public static final int installLocation=0x010102b7; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int interpolator=0x01010141; + /** Set to true to tell the SyncManager to automatically call setIsSyncable(..., ..., 1) + for the SyncAdapter instead of issuaing an initialization sync to the SyncAdapter. + Defaults to false. + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAlwaysSyncable=0x01010333; + /** Set to true if this subtype is ASCII capable. If the subtype is ASCII + capable, it should guarantee that the user can input ASCII characters with + this subtype. This is important because many password fields only allow + ASCII-characters. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAsciiCapable=0x010103e9; + /** Set true if the subtype is auxiliary. An auxiliary subtype won't be shown in the + input method selection list in the settings app. + InputMethodManager#switchToLastInputMethod will ignore auxiliary subtypes when it + chooses a target subtype. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAuxiliary=0x0101037f; + /** Set to true in all of the configurations for which this input + method should be considered an option as the default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isDefault=0x01010221; + /** Whether this rating bar is an indicator (and non-changeable by the user). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isIndicator=0x01010147; + /** Whether this is a modifier key such as Alt or Shift. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isModifier=0x01010246; + /** Whether long-pressing on this key will make it repeat. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isRepeatable=0x01010248; + /** Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method. If not set, the default + value will be true if "scrollbars" has the vertical scrollbar + set, else it will be false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isScrollContainer=0x0101024e; + /** Whether this is a toggle key. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isSticky=0x01010247; + /** If set to true, this service will run under a special process + that is isolated from the rest of the system. The only communication + with it is through the Service API (binding and starting). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isolatedProcess=0x010103a9; + /** Default background for each menu item. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int itemBackground=0x01010130; + /** Default disabled icon alpha for each menu item that shows an icon. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int itemIconDisabledAlpha=0x01010131; + /** Specifies padding that should be applied to the left and right sides of + system-provided items in the bar. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int itemPadding=0x0101032d; + /** Default appearance of menu item text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int itemTextAppearance=0x0101012c; + /** Controls whether the view's window should keep the screen on + while visible. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keepScreenOn=0x01010216; + /** The key to store the Preference value. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int key=0x010101e8; + /** Image for the key. This image needs to be a StateListDrawable, with the following + possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, + checkable+checked+pressed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyBackground=0x01010233; + /** Key edge flags. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
left1 Key is anchored to the left of the keyboard.
right2 Key is anchored to the right of the keyboard.
+ */ + public static final int keyEdgeFlags=0x01010245; + /** Default height of a key, in pixels or percentage of display width. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyHeight=0x0101023e; + /** The icon to display on the key instead of the label. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyIcon=0x0101024c; + /** The label to display on the key. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyLabel=0x0101024b; + /** The string of characters to output when this key is pressed. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyOutputText=0x0101024a; + /** Height of the key press feedback popup. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyPreviewHeight=0x01010239; + /** Layout resource for key press feedback. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyPreviewLayout=0x01010237; + /** Vertical offset of the key press feedback from the key. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyPreviewOffset=0x01010238; + /** Groups signing keys into a {@code KeySet} for easier reference in + other APIs. However, currently no APIs use this. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. + */ + public static final int keySet=0x010103db; + /** Color to use for the label in a key. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyTextColor=0x01010236; + /** Size of the text for character keys. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyTextSize=0x01010234; + /** Default width of a key, in pixels or percentage of display width. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyWidth=0x0101023d; + /** The key character map file resource. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyboardLayout=0x010103ab; + /** Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the row will be skipped. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyboardMode=0x0101024d; + /** This enum provides the same keycode values as can be found in + {@link android.view.KeyEvent}. +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
KEYCODE_UNKNOWN0
KEYCODE_SOFT_LEFT1
KEYCODE_SOFT_RIGHT2
KEYCODE_HOME3
KEYCODE_BACK4
KEYCODE_CALL5
KEYCODE_ENDCALL6
KEYCODE_07
KEYCODE_18
KEYCODE_29
KEYCODE_310
KEYCODE_411
KEYCODE_512
KEYCODE_613
KEYCODE_714
KEYCODE_815
KEYCODE_916
KEYCODE_STAR17
KEYCODE_POUND18
KEYCODE_DPAD_UP19
KEYCODE_DPAD_DOWN20
KEYCODE_DPAD_LEFT21
KEYCODE_DPAD_RIGHT22
KEYCODE_DPAD_CENTER23
KEYCODE_VOLUME_UP24
KEYCODE_VOLUME_DOWN25
KEYCODE_POWER26
KEYCODE_CAMERA27
KEYCODE_CLEAR28
KEYCODE_A29
KEYCODE_B30
KEYCODE_C31
KEYCODE_D32
KEYCODE_E33
KEYCODE_F34
KEYCODE_G35
KEYCODE_H36
KEYCODE_I37
KEYCODE_J38
KEYCODE_K39
KEYCODE_L40
KEYCODE_M41
KEYCODE_N42
KEYCODE_O43
KEYCODE_P44
KEYCODE_Q45
KEYCODE_R46
KEYCODE_S47
KEYCODE_T48
KEYCODE_U49
KEYCODE_V50
KEYCODE_W51
KEYCODE_X52
KEYCODE_Y53
KEYCODE_Z54
KEYCODE_COMMA55
KEYCODE_PERIOD56
KEYCODE_ALT_LEFT57
KEYCODE_ALT_RIGHT58
KEYCODE_SHIFT_LEFT59
KEYCODE_SHIFT_RIGHT60
KEYCODE_TAB61
KEYCODE_SPACE62
KEYCODE_SYM63
KEYCODE_EXPLORER64
KEYCODE_ENVELOPE65
KEYCODE_ENTER66
KEYCODE_DEL67
KEYCODE_GRAVE68
KEYCODE_MINUS69
KEYCODE_EQUALS70
KEYCODE_LEFT_BRACKET71
KEYCODE_RIGHT_BRACKET72
KEYCODE_BACKSLASH73
KEYCODE_SEMICOLON74
KEYCODE_APOSTROPHE75
KEYCODE_SLASH76
KEYCODE_AT77
KEYCODE_NUM78
KEYCODE_HEADSETHOOK79
KEYCODE_FOCUS80
KEYCODE_PLUS81
KEYCODE_MENU82
KEYCODE_NOTIFICATION83
KEYCODE_SEARCH84
KEYCODE_MEDIA_PLAY_PAUSE85
KEYCODE_MEDIA_STOP86
KEYCODE_MEDIA_NEXT87
KEYCODE_MEDIA_PREVIOUS88
KEYCODE_MEDIA_REWIND89
KEYCODE_MEDIA_FAST_FORWARD90
KEYCODE_MUTE91
KEYCODE_PAGE_UP92
KEYCODE_PAGE_DOWN93
KEYCODE_PICTSYMBOLS94
KEYCODE_SWITCH_CHARSET95
KEYCODE_BUTTON_A96
KEYCODE_BUTTON_B97
KEYCODE_BUTTON_C98
KEYCODE_BUTTON_X99
KEYCODE_BUTTON_Y100
KEYCODE_BUTTON_Z101
KEYCODE_BUTTON_L1102
KEYCODE_BUTTON_R1103
KEYCODE_BUTTON_L2104
KEYCODE_BUTTON_R2105
KEYCODE_BUTTON_THUMBL106
KEYCODE_BUTTON_THUMBR107
KEYCODE_BUTTON_START108
KEYCODE_BUTTON_SELECT109
KEYCODE_BUTTON_MODE110
KEYCODE_ESCAPE111
KEYCODE_FORWARD_DEL112
KEYCODE_CTRL_LEFT113
KEYCODE_CTRL_RIGHT114
KEYCODE_CAPS_LOCK115
KEYCODE_SCROLL_LOCK116
KEYCODE_META_LEFT117
KEYCODE_META_RIGHT118
KEYCODE_FUNCTION119
KEYCODE_SYSRQ120
KEYCODE_BREAK121
KEYCODE_MOVE_HOME122
KEYCODE_MOVE_END123
KEYCODE_INSERT124
KEYCODE_FORWARD125
KEYCODE_MEDIA_PLAY126
KEYCODE_MEDIA_PAUSE127
KEYCODE_MEDIA_CLOSE128
KEYCODE_MEDIA_EJECT129
KEYCODE_MEDIA_RECORD130
KEYCODE_F1131
KEYCODE_F2132
KEYCODE_F3133
KEYCODE_F4134
KEYCODE_F5135
KEYCODE_F6136
KEYCODE_F7137
KEYCODE_F8138
KEYCODE_F9139
KEYCODE_F10140
KEYCODE_F11141
KEYCODE_F12142
KEYCODE_NUM_LOCK143
KEYCODE_NUMPAD_0144
KEYCODE_NUMPAD_1145
KEYCODE_NUMPAD_2146
KEYCODE_NUMPAD_3147
KEYCODE_NUMPAD_4148
KEYCODE_NUMPAD_5149
KEYCODE_NUMPAD_6150
KEYCODE_NUMPAD_7151
KEYCODE_NUMPAD_8152
KEYCODE_NUMPAD_9153
KEYCODE_NUMPAD_DIVIDE154
KEYCODE_NUMPAD_MULTIPLY155
KEYCODE_NUMPAD_SUBTRACT156
KEYCODE_NUMPAD_ADD157
KEYCODE_NUMPAD_DOT158
KEYCODE_NUMPAD_COMMA159
KEYCODE_NUMPAD_ENTER160
KEYCODE_NUMPAD_EQUALS161
KEYCODE_NUMPAD_LEFT_PAREN162
KEYCODE_NUMPAD_RIGHT_PAREN163
KEYCODE_VOLUME_MUTE164
KEYCODE_INFO165
KEYCODE_CHANNEL_UP166
KEYCODE_CHANNEL_DOWN167
KEYCODE_ZOOM_IN168
KEYCODE_ZOOM_OUT169
KEYCODE_TV170
KEYCODE_WINDOW171
KEYCODE_GUIDE172
KEYCODE_DVR173
KEYCODE_BOOKMARK174
KEYCODE_CAPTIONS175
KEYCODE_SETTINGS176
KEYCODE_TV_POWER177
KEYCODE_TV_INPUT178
KEYCODE_STB_POWER179
KEYCODE_STB_INPUT180
KEYCODE_AVR_POWER181
KEYCODE_AVR_INPUT182
KEYCODE_PROG_GRED183
KEYCODE_PROG_GREEN184
KEYCODE_PROG_YELLOW185
KEYCODE_PROG_BLUE186
KEYCODE_APP_SWITCH187
KEYCODE_BUTTON_1188
KEYCODE_BUTTON_2189
KEYCODE_BUTTON_3190
KEYCODE_BUTTON_4191
KEYCODE_BUTTON_5192
KEYCODE_BUTTON_6193
KEYCODE_BUTTON_7194
KEYCODE_BUTTON_8195
KEYCODE_BUTTON_9196
KEYCODE_BUTTON_10197
KEYCODE_BUTTON_11198
KEYCODE_BUTTON_12199
KEYCODE_BUTTON_13200
KEYCODE_BUTTON_14201
KEYCODE_BUTTON_15202
KEYCODE_BUTTON_16203
KEYCODE_LANGUAGE_SWITCH204
KEYCODE_MANNER_MODE205
KEYCODE_3D_MODE206
KEYCODE_CONTACTS207
KEYCODE_CALENDAR208
KEYCODE_MUSIC209
KEYCODE_CALCULATOR210
KEYCODE_ZENKAKU_HANKAKU211
KEYCODE_EISU212
KEYCODE_MUHENKAN213
KEYCODE_HENKAN214
KEYCODE_KATAKANA_HIRAGANA215
KEYCODE_YEN216
KEYCODE_RO217
KEYCODE_KANA218
KEYCODE_ASSIST219
KEYCODE_BRIGHTNESS_DOWN220
KEYCODE_BRIGHTNESS_UP221
KEYCODE_MEDIA_AUDIO_TRACK222
+ */ + public static final int keycode=0x010100c5; + /** Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation. + Single-package restore operations will never cause the application to + be shut down. Full-system restore operations typically only occur once, + when the phone is first set up. Third-party applications will not usually + need to use this attribute. + +

The default is true, which means that after the application + has finished processing its data during a full-system restore, it will be + terminated. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int killAfterRestore=0x0101029c; + /** A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. + */ + public static final int label=0x01010001; + /** Specifies the id of a view for which this view serves as a label for + accessibility purposes. For example, a TextView before an EditText in + the UI usually specifies what infomation is contained in the EditText. + Hence, the TextView is a label for the EditText. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int labelFor=0x010103c6; + /** Size of the text for custom keys with some text and no icon. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int labelTextSize=0x01010235; + /** Request that your application's processes be created with + a large Dalvik heap. This applies to all processes + created for the application. It only applies to the first + application loaded into a process; if using a sharedUserId + to allow multiple applications to use a process, they all must + use this option consistently or will get unpredictable results. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largeHeap=0x0101035a; + /** Indicates whether the application supports larger screen form-factors. + A large screen is defined as a screen that is significantly larger + than a normal phone screen, and thus may require some special care + on the application's part to make good use of it. An example would + be a VGA normal density screen, though even larger screens + are certainly possible. An application that does not support + large screens will be placed as a postage stamp on such a + screen, so that it retains the dimensions it was originally + designed for. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largeScreens=0x01010286; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can work well on. If this value is smaller than + the "smallest screen width" of the device it is running on, the + application will be forced in to screen compatibility mode with + no way for the user to turn it off. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for largestWidthLimitDp is larger than 320. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largestWidthLimitDp=0x01010366; + /** Specify how an activity should be launched. See the + Tasks and Back + Stack document for important information on how these options impact + the behavior of your application. + +

If this attribute is not specified, standard launch + mode will be used. Note that the particular launch behavior can + be changed in some ways at runtime through the + {@link android.content.Intent} flags + {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}, + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and + {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
standard0 The default mode, which will usually create a new instance of + the activity when it is started, though this behavior may change + with the introduction of other options such as + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_NEW_TASK}.
singleTop1 If, when starting the activity, there is already an + instance of the same activity class in the foreground that is + interacting with the user, then + re-use that instance. This existing instance will receive a call to + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with + the new Intent that is being started.
singleTask2 If, when starting the activity, there is already a task running + that starts with this activity, then instead of starting a new + instance the current task is brought to the front. The existing + instance will receive a call to {@link android.app.Activity#onNewIntent + Activity.onNewIntent()} + with the new Intent that is being started, and with the + {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT + Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set. This is a superset + of the singleTop mode, where if there is already an instance + of the activity being started at the top of the stack, it will + receive the Intent as described there (without the + FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set). See the + Tasks and Back + Stack document for more details about tasks.
singleInstance3 Only allow one instance of this activity to ever be + running. This activity gets a unique task with only itself running + in it; if it is ever launched again with the same Intent, then that + task will be brought forward and its + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} + method called. If this + activity tries to start a new activity, that new activity will be + launched in a separate task. See the + Tasks and Back + Stack document for more details about tasks.
+ */ + public static final int launchMode=0x0101001d; + /** Specifies the type of layer backing this view. The default value is none. + Refer to {@link android.view.View#setLayerType(int, android.graphics.Paint)} + for more information. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Don't use a layer.
software1 Use a software layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
hardware2 Use a hardware layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
+ */ + public static final int layerType=0x01010354; + /** Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout=0x010100f2; + /** Defines the layout animation to use the first time the ViewGroup is laid out. + Layout animations can also be started manually after the first layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layoutAnimation=0x010100ec; + /** Defines the direction of layout drawing. This typically is associated with writing + direction of the language script used. The possible values are "ltr" for Left-to-Right, + "rtl" for Right-to-Left, "locale" and "inherit" from parent view. If there is nothing + to inherit, "locale" is used. "locale" falls back to "en-US". "ltr" is the direction + used in "en-US". The default for this attribute is "inherit". +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ltr0 Left-to-Right
rtl1 Right-to-Left
inherit2 Inherit from parent
locale3 Locale
+ */ + public static final int layoutDirection=0x010103b2; + /** Defines the layout mode of this ViewGroup. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
clipBounds0 Use the children's clip bounds when laying out this container.
opticalBounds1 Use the children's optical bounds when laying out this container.
+ */ + public static final int layoutMode=0x010103da; + /** Positions the bottom edge of this view above the given anchor view ID. + Accommodates bottom margin of this view and top margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_above=0x01010184; + /** Positions the baseline of this view on the baseline of the given anchor view ID. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignBaseline=0x01010186; + /** Makes the bottom edge of this view match the bottom edge of the given anchor view ID. + Accommodates bottom margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignBottom=0x0101018a; + /** Makes the end edge of this view match the end edge of the given anchor view ID. + Accommodates end margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignEnd=0x010103ba; + /** Makes the left edge of this view match the left edge of the given anchor view ID. + Accommodates left margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignLeft=0x01010187; + /** If true, makes the bottom edge of this view match the bottom edge of the parent. + Accommodates bottom margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentBottom=0x0101018e; + /** If true, makes the end edge of this view match the end edge of the parent. + Accommodates end margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentEnd=0x010103bc; + /** If true, makes the left edge of this view match the left edge of the parent. + Accommodates left margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentLeft=0x0101018b; + /** If true, makes the right edge of this view match the right edge of the parent. + Accommodates right margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentRight=0x0101018d; + /** If true, makes the start edge of this view match the start edge of the parent. + Accommodates start margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentStart=0x010103bb; + /** If true, makes the top edge of this view match the top edge of the parent. + Accommodates top margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentTop=0x0101018c; + /** Makes the right edge of this view match the right edge of the given anchor view ID. + Accommodates right margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignRight=0x01010189; + /** Makes the start edge of this view match the start edge of the given anchor view ID. + Accommodates start margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignStart=0x010103b9; + /** Makes the top edge of this view match the top edge of the given anchor view ID. + Accommodates top margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignTop=0x01010188; + /** If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignWithParentIfMissing=0x01010192; + /** Positions the top edge of this view below the given anchor view ID. + Accommodates top margin of this view and bottom margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_below=0x01010185; + /** If true, centers this child horizontally within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerHorizontal=0x01010190; + /** If true, centers this child horizontally and vertically within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerInParent=0x0101018f; + /** If true, centers this child vertically within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerVertical=0x01010191; + /** The index of the column in which this child should be. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_column=0x0101014c; + /** The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_columnSpan=0x0101037d; + /** Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int layout_gravity=0x010100b3; + /** Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+ */ + public static final int layout_height=0x010100f5; + /** Specifies extra space on the left, top, right and bottom + sides of this view. This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_margin=0x010100f6; + /** Specifies extra space on the bottom side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginBottom=0x010100fa; + /** Specifies extra space on the end side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginEnd=0x010103b6; + /** Specifies extra space on the left side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginLeft=0x010100f7; + /** Specifies extra space on the right side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginRight=0x010100f9; + /** Specifies extra space on the start side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginStart=0x010103b5; + /** Specifies extra space on the top side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginTop=0x010100f8; + /** The row boundary delimiting the top of the group of cells + occupied by this view. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_row=0x0101037b; + /** The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_rowSpan=0x0101037c; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_scale=0x01010193; + /** Defines how many columns this child should span. Must be >= 1. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_span=0x0101014d; + /** Positions the start edge of this view to the end of the given anchor view ID. + Accommodates start margin of this view and end margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toEndOf=0x010103b8; + /** Positions the right edge of this view to the left of the given anchor view ID. + Accommodates right margin of this view and left margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toLeftOf=0x01010182; + /** Positions the left edge of this view to the right of the given anchor view ID. + Accommodates left margin of this view and right margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toRightOf=0x01010183; + /** Positions the end edge of this view to the start of the given anchor view ID. + Accommodates end margin of this view and start margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toStartOf=0x010103b7; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_weight=0x01010181; + /** Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+ */ + public static final int layout_width=0x010100f4; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_x=0x0101017f; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_y=0x01010180; + /** Amount of left padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int left=0x010101ad; + /** Extra spacing between lines of text. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lineSpacingExtra=0x01010217; + /** Extra spacing between lines of text, as a multiplier. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lineSpacingMultiplier=0x01010218; + /** Makes the TextView be exactly this many lines tall. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lines=0x01010154; + /** If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int linksClickable=0x010100b1; + /** Drawable used as a background for selected list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceBackgroundIndicator=0x010102f0; + /** Drawable to use for multiple choice indicators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceIndicatorMultiple=0x0101021a; + /** Drawable to use for single choice indicators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceIndicatorSingle=0x01010219; + /** The drawable for the list divider. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listDivider=0x01010214; + /** The list divider used in alert dialogs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listDividerAlertDialog=0x01010305; + /** Default ListPopupWindow style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listPopupWindowStyle=0x010102ff; + /** The preferred list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeight=0x0101004d; + /** A larger, more robust list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeightLarge=0x01010386; + /** A smaller, sleeker list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeightSmall=0x01010387; + /** The preferred padding along the end edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingEnd=0x010103be; + /** The preferred padding along the left edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingLeft=0x010103a3; + /** The preferred padding along the right edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingRight=0x010103a4; + /** The preferred padding along the start edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingStart=0x010103bd; + /** Drawable used to indicate the currently selected item in the list. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int listSelector=0x010100fb; + /** TextView style for list separators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listSeparatorTextViewStyle=0x01010208; + /** Default ListView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listViewStyle=0x01010074; + /** ListView with white background. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listViewWhiteStyle=0x01010075; + /** A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int logo=0x010102be; + /** Defines whether this view reacts to long click events. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int longClickable=0x010100e6; + /** Defines whether the animator loops to the first view once it + has reached the end of the list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int loopViews=0x01010307; + /** Name of the activity to be launched to manage application's space on + device. The specified activity gets automatically launched when the + application's space needs to be managed and is usually invoked + through user actions. Applications can thus provide their own custom + behavior for managing space for various scenarios like out of memory + conditions. This is an optional attribute and + applications can choose not to specify a default activity to + manage space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int manageSpaceActivity=0x01010004; + /** Default MapView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int mapViewStyle=0x0101008a; + /** The number of times to repeat the marquee animation. Only applied if the + TextView has marquee enabled. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
marquee_forever-1 Indicates that marquee should repeat indefinitely.
+ */ + public static final int marqueeRepeatLimit=0x0101021d; + /** Defines the maximum value the progress can take. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int max=0x01010136; + /** The maximal date shown by this calendar view in mm/dd/yyyy format. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxDate=0x01010340; + /** Makes the TextView be at most this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxEms=0x01010157; + /** An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxHeight=0x01010120; + /** Defines the maximum number of items per row. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxItemsPerRow=0x01010134; + /** Set an input filter to constrain the text length to the + specified number. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLength=0x01010160; + /** The maximum level allowed for this item. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLevel=0x010101b2; + /** Makes the TextView be at most this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the maxLines attribute to apply. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLines=0x01010153; + /** Defines the maximum number of rows displayed. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxRows=0x01010133; + /** Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission. When running on a version + of Android higher than the number given here, the permission will not + be requested. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxSdkVersion=0x01010271; + /** An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxWidth=0x0101011f; + /** Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring. Defaults to false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int measureAllChildren=0x0101010a; + /** When set to true, all children with a weight will be considered having + the minimum size of the largest child. If false, all children are + measured normally. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int measureWithLargestChild=0x010102d4; + /** Default style for the MediaRouteButton widget. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int mediaRouteButtonStyle=0x010103ad; + /** The types of media routes the button and its resulting + chooser will filter by. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
liveAudio0x1 Allow selection of live audio routes.
user0x800000 Allow selection of user (app-specified) routes.
+ */ + public static final int mediaRouteTypes=0x010103ae; + /** The category applied to all items within this group. + (This will be or'ed with the orderInCategory attribute.) +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+ */ + public static final int menuCategory=0x010101de; + /** Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mimeType=0x01010026; + /** The minimal date shown by this calendar view in mm/dd/yyyy format. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minDate=0x0101033f; + /** Makes the TextView be at least this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minEms=0x0101015a; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minHeight=0x01010140; + /** The minimum level allowed for this item. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minLevel=0x010101b1; + /** Makes the TextView be at least this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the minLines attribute to apply. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minLines=0x01010156; + /** Minimum height that the AppWidget can be resized to. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minResizeHeight=0x01010396; + /** Minimum width that the AppWidget can be resized to. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minResizeWidth=0x01010395; + /** This is the minimum SDK version number that the application + requires. This number is an abstract integer, from the list + in {@link android.os.Build.VERSION_CODES} If + not supplied, the application will work on any SDK. This + may also be string (such as "Donut") if the application was built + against a development branch, in which case it will only work against + the development builds. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minSdkVersion=0x0101020c; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minWidth=0x0101013f; + /** Enables or disables the mipmap hint. See + {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information. + Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mipMap=0x010103cd; + /** Defines if the associated drawables need to be mirrored when in RTL mode. + Default is false +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mirrorForRtl=0x010103ce; + /**

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
oneLine1 Always show only the first line.
collapsing2 When selected show both lines, otherwise show only the first line. + This is the default mode.
twoLine3 Always show both lines.
+ */ + public static final int mode=0x0101017e; + /** 'More' icon. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int moreIcon=0x01010135; + /** Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int multiprocess=0x01010013; + /** A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int name=0x01010003; + /** The type of navigation to use. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Normal static title text
listMode1 The action bar will use a selection list for navigation.
tabMode2 The action bar will use a series of horizontal tabs for navigation.
+ */ + public static final int navigationMode=0x010102cf; + /** The negative button text for the dialog. Set to @null to hide the negative button. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int negativeButtonText=0x010101f6; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusDown=0x010100e4; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusForward=0x0101033c; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}. + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusLeft=0x010100e1; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusRight=0x010100e2; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusUp=0x010100e3; + /** Specify whether an activity should be kept in its history stack. + If this attribute is set, then as soon as the user navigates away + from the activity it will be finished and they will no longer be + able to return to it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int noHistory=0x0101022d; + /** Indicates whether an application supports the normal screen + form-factors. Traditionally this is an HVGA normal density + screen, but WQVGA low density and WVGA high density are also + considered to be normal. This attribute is true by default, + and applications currently should leave it that way. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int normalScreens=0x01010285; + /** The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce. This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int notificationTimeout=0x01010383; + /** Defines how many columns to show. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
auto_fit-1 Display as many columns as possible to fill the available space.
+ */ + public static final int numColumns=0x01010118; + /** The number of stars (or rating items) to show. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int numStars=0x01010144; + /** If set, specifies that this TextView has a numeric input method. + The default is false. + {@deprecated Use inputType instead.} +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
integer0x01 Input is numeric.
signed0x03 Input is numeric, with sign allowed.
decimal0x05 Input is numeric, with decimals allowed.
+ */ + @Deprecated + public static final int numeric=0x01010165; + /** The numeric shortcut key. This is the shortcut when using a numeric (e.g., 12-key) + keyboard. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int numericShortcut=0x010101e4; + /** Name of the method in this View's context to invoke when the view is + clicked. This name must correspond to a public method that takes + exactly one parameter of type View. For instance, if you specify + android:onClick="sayHello", you must declare a + public void sayHello(View v) method of your context + (typically, your Activity). +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int onClick=0x0101026f; + /** If true, the animation will only run a single time and then + stop. If false (the default), it will continually run, + restarting at the first frame after the last has finished. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int oneshot=0x01010197; + /** Indicates the opacity of the layer. This can be useful to allow the + system to enable drawing optimizations. The default value is + translucent. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
opaque-1 Indicates that the layer is opaque and contains no transparent + nor translucent pixels.
transparent-2 The layer is completely transparent (no pixel will be drawn.)
translucent-3 The layer has translucent pixels.
+ */ + public static final int opacity=0x0101031e; + /** The order for the Preference (lower values are to be ordered first). If this is not + specified, the default orderin will be alphabetic. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int order=0x010101ea; + /** The order within the category applied to all items within this group. + (This will be or'ed with the category attribute.) +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int orderInCategory=0x010101df; + /** Name of the property being animated. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child animations should be played together.
sequentially1 child animations should be played sequentially, in the same order as the xml.
+ */ + public static final int ordering=0x010102e2; + /** Whether to order the Preference under this group as they appear in the XML file. + If this is false, the ordering will follow the Preference order attribute and + default to alphabetic for those without the order attribute. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int orderingFromXml=0x010101e7; + /** Standard orientation constant. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+ */ + public static final int orientation=0x010100c4; + /** Identifier for the animation to use when a view is hidden. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int outAnimation=0x01010178; + /** Drawable to draw below list content. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int overScrollFooter=0x010102c3; + /** Drawable to draw above list content. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int overScrollHeader=0x010102c2; + /** Defines over-scrolling behavior. This property is used only if the + View is scrollable. Over-scrolling is the ability for the user to + receive feedback when attempting to scroll beyond meaningful content. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
always0 Always show over-scroll effects, even if the content fits entirely + within the available space.
ifContentScrolls1 Only show over-scroll effects if the content is large + enough to meaningfully scroll.
never2 Never show over-scroll effects.
+ */ + public static final int overScrollMode=0x010102c1; + /** Set true when this subtype should be selected by default if no other subtypes are + selected explicitly. Note that a subtype with this parameter being true will + not be shown in the subtypes list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int overridesImplicitlyEnabledSubtype=0x010103a2; + /** Comma separated package names from which this serivce would like to receive events (leave out for all packages). + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int packageNames=0x01010381; + /** Sets the padding, in pixels, of all four edges. Padding is defined as + space between the edges of the view and the view's content. A views size + will include it's padding. If a {@link android.R.attr#background} + is provided, the padding will initially be set to that (0 if the + drawable does not have padding). Explicitly setting a padding value + will override the corresponding padding found in the background. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int padding=0x010100d5; + /** Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingBottom=0x010100d9; + /** Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingEnd=0x010103b4; + /** Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingLeft=0x010100d6; + /** Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingRight=0x010100d8; + /** Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingStart=0x010103b3; + /** Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingTop=0x010100d7; + /** The background of a panel when it is inset from the left and right edges of the screen. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelBackground=0x0101005e; + /** Color that matches (as closely as possible) the panel background. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelColorBackground=0x01010061; + /** Default color of foreground panel imagery. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelColorForeground=0x01010060; + /** The background of a panel when it extends to the left and right edges of the screen. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelFullBackground=0x0101005f; + /** Default appearance of panel text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int panelTextAppearance=0x01010062; + /** The name of the logical parent of the activity as it appears in the manifest. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int parentActivityName=0x010103a7; + /** Whether the characters of the field are displayed as + password dots instead of themselves. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int password=0x0101015c; + /** Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int path=0x0101002a; + /** Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pathPattern=0x0101002c; + /** Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pathPrefix=0x0101002b; + /** Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int permission=0x01010006; + /** Flags indicating more context for a permission. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
costsMoney0x0001 Set to indicate that this permission allows an operation that + may cost the user money. Such permissions may be highlighted + when shown to the user with this additional information.
+ */ + public static final int permissionFlags=0x010103c7; + /** Specified the name of a group that this permission is associated + with. The group must have been defined with the + {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int permissionGroup=0x0101000a; + /** Flags indicating more context for a permission group. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
personalInfo0x0001 Set to indicate that this permission group contains permissions + protecting access to some information that is considered + personal to the user (such as contacts, e-mails, etc).
+ */ + public static final int permissionGroupFlags=0x010103c5; + /** Flag to control special persistent mode of an application. This should + not normally be used by applications; it requires that the system keep + your application running at all times. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int persistent=0x0101000d; + /** Defines the persistence of the drawing cache. The drawing cache might be + enabled by a ViewGroup for all its children in specific situations (for + instance during a scrolling.) This property lets you persist the cache + in memory after its initial usage. Persisting the cache consumes more + memory but may prevent frequent garbage collection is the cache is created + over and over again. By default the persistence is set to scrolling. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0x0 The drawing cache is not persisted after use.
animation0x1 The drawing cache is persisted after a layout animation.
scrolling0x2 The drawing cache is persisted after a scroll.
all0x3 The drawing cache is always persisted.
+ */ + public static final int persistentDrawingCache=0x010100ee; + /** If set, specifies that this TextView has a phone number input + method. The default is false. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int phoneNumber=0x01010167; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pivotX=0x010101b5; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pivotY=0x010101b6; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupAnimationStyle=0x010102c9; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int popupBackground=0x01010176; + /** The characters to display in the popup keyboard. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int popupCharacters=0x01010244; + /** The XML keyboard layout of any popup keyboard. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupKeyboard=0x01010243; + /** Layout resource for popup keyboards. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupLayout=0x0101023b; + /** Default PopupMenu style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupMenuStyle=0x01010300; + /** Default PopupWindow style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupWindowStyle=0x01010076; + /** Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. If a host is supplied + but not a port, any port is matched. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int port=0x01010029; + /** The positive button text for the dialog. Set to @null to hide the positive button. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int positiveButtonText=0x010101f5; + /** Default style for PreferenceCategory. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceCategoryStyle=0x0101008c; + /** Default style for informational Preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceInformationStyle=0x0101008d; + /** The preference layout that has the child/tabbed effect. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceLayoutChild=0x01010094; + /** Default style for PreferenceScreen. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceScreenStyle=0x0101008b; + /** Default style for Preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceStyle=0x0101008e; + /** Theme to use for presentations spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int presentationTheme=0x010103c0; + /** A preview of what the AppWidget will look like after it's configured. + If not supplied, the AppWidget's icon will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int previewImage=0x010102da; + /** Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int priority=0x0101001c; + /** An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#privateImeOptions + EditorInfo.privateImeOptions} field when the input + method is connected. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int privateImeOptions=0x01010223; + /** Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int process=0x01010011; + /** Defines the default progress value, between 0 and max. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int progress=0x01010137; + /** Specifies the horizontal padding on either end for an embedded progress bar. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int progressBarPadding=0x01010319; + /** Default ProgressBar style. This is a medium circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyle=0x01010077; + /** Horizontal ProgressBar style. This is a horizontal progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleHorizontal=0x01010078; + /** Inverse ProgressBar style. This is a medium circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleInverse=0x01010287; + /** Large ProgressBar style. This is a large circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleLarge=0x0101007a; + /** Large inverse ProgressBar style. This is a large circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleLargeInverse=0x01010289; + /** Small ProgressBar style. This is a small circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmall=0x01010079; + /** Small inverse ProgressBar style. This is a small circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmallInverse=0x01010288; + /** Small ProgressBar in title style. This is a small circular progress bar that will be placed in title bars. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmallTitle=0x0101020f; + /** Drawable used for the progress mode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressDrawable=0x0101013c; + /** The prompt to display when the spinner's dialog is shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int prompt=0x0101017b; + /** Name of the property being animated. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int propertyName=0x010102e1; + /** Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it. {@link + android.Manifest.permission Standard permissions} have a predefined and + permanent protectionLevel. If you are creating a custom permission in an + application, you can define a protectionLevel attribute with one of the + values listed below. If no protectionLevel is defined for a custom + permission, the system assigns the default ("normal"). +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
normal0 A lower-risk permission that gives an application access to isolated + application-level features, with minimal risk to other applications, + the system, or the user. The system automatically grants this type + of permission to a requesting application at installation, without + asking for the user's explicit approval (though the user always + has the option to review these permissions before installing).
dangerous1 A higher-risk permission that would give a requesting application + access to private user data or control over the device that can + negatively impact the user. Because this type of permission + introduces potential risk, the system may not automatically + grant it to the requesting application. For example, any dangerous + permissions requested by an application may be displayed to the + user and require confirmation before proceeding, or some other + approach may be taken to avoid the user automatically allowing + the use of such facilities.
signature2 A permission that the system is to grant only if the requesting + application is signed with the same certificate as the application + that declared the permission. If the certificates match, the system + automatically grants the permission without notifying the user or + asking for the user's explicit approval.
signatureOrSystem3 A permission that the system is to grant only to packages in the + Android system image or that are signed with the same + certificates. Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
system0x10 Additional flag from base permission type: this permission can also + be granted to any applications installed on the system image. + Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission flag is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
development0x20 Additional flag from base permission type: this permission can also + (optionally) be granted to development applications.
+ */ + public static final int protectionLevel=0x01010009; + /** The attribute that holds a Base64-encoded public key. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int publicKey=0x010103a6; + /** If you wish to handle an action key during normal search query entry, you + must define an action string here. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryActionMsg=0x010101db; + /** If provided and true, this searchable activity will be invoked for all + queries in a particular session. If set to false and the activity + returned zero results for a query, it will not be invoked again in that session for + supersets of that zero-results query. For example, if the activity returned zero + results for "bo", it would not be queried again for "bob". + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryAfterZeroResults=0x01010282; + /** An optional query hint string to be displayed in the empty query field. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryHint=0x01010358; + /** Default quickcontact badge style with large quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowLarge=0x010102b3; + /** Default quickcontact badge style with medium quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowMedium=0x010102b2; + /** Default quickcontact badge style with small quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowSmall=0x010102b1; + /** Default quickcontact badge style with large quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowLarge=0x010102b0; + /** Default quickcontact badge style with medium quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowMedium=0x010102af; + /** Default quickcontact badge style with small quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowSmall=0x010102ae; + /** Default RadioButton style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int radioButtonStyle=0x0101007e; + /** Defines the radius of the four corners. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int radius=0x010101a8; + /** The rating to set by default. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rating=0x01010145; + /** Default RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyle=0x0101007c; + /** Indicator RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyleIndicator=0x01010210; + /** Small indicator RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyleSmall=0x0101007d; + /** A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int readPermission=0x01010007; + /** Defines how many times the animation should repeat. The default value is 0. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+ */ + public static final int repeatCount=0x010101bf; + /** Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+ */ + public static final int repeatMode=0x010101c0; + /** Application's requirement for five way navigation +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int reqFiveWayNav=0x01010232; + /** Application's requirement for a hard keyboard +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int reqHardKeyboard=0x01010229; + /** The input method preferred by an application. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
nokeys1
qwerty2
twelvekey3
+ */ + public static final int reqKeyboardType=0x01010228; + /** The navigation device preferred by an application. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
undefined0
nonav1
dpad2
trackball3
wheel4
+ */ + public static final int reqNavigation=0x0101022a; + /** The touch screen type used by an application. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
notouch1
stylus2
finger3
+ */ + public static final int reqTouchScreen=0x01010227; + /** Whether the device must be unlocked before routing data to this service. + The default is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requireDeviceUnlock=0x010103ec; + /** Specify whether this feature is required for the application. + The default is true, meaning the application requires the + feature, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + not impose a restriction on where the application can be + installed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int required=0x0101028e; + /** Declare that this application requires an account of a certain + type. The default value is null and indicates that the application can work without + any accounts. The type should correspond to the account authenticator type, such as + "com.google". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiredAccountType=0x010103d6; + /** Flag to specify if this application needs to be present for all users. Only pre-installed + applications can request this feature. Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiredForAllUsers=0x010103d0; + /** Defines which edges should be faded on scrolling. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+ */ + public static final int requiresFadingEdge=0x010103a5; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with. This attribute provides the required minimum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can run on. For example, a typical phone + screen is 320, a 7" tablet 600, and a 10" tablet 720. If the + smallest screen width of the device is below the value supplied here, + then the application is considered incompatible with that device. + If not supplied, then any old smallScreens, normalScreens, largeScreens, + or xlargeScreens attributes will be used instead. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiresSmallestWidthDp=0x01010364; + /** Optional parameter which indicates if and how this widget can be + resized. Supports combined values using | operator. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x0
horizontal0x1
vertical0x2
+ */ + public static final int resizeMode=0x01010363; + /** Indicates whether the application can resize itself to newer + screen sizes. This is mostly used to distinguish between old + applications that may not be compatible with newly introduced + screen sizes and newer applications that should be; it will be + set for you automatically based on whether you are targeting + a newer platform that supports more screens. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int resizeable=0x0101028d; + /** Resource identifier to assign to this piece of named meta-data. + The resource identifier can later be retrieved from the meta data + Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int resource=0x01010025; + /** Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device. Setting + this attribute to true will permit the Backup Manager to + attempt restore even when a version mismatch suggests that the data are + incompatible. Use with caution! + +

The default value of this attribute is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int restoreAnyVersion=0x010102ba; + /** @deprecated This attribute is not used by the Android operating system. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int restoreNeedsApplication=0x0101029d; + /** Declare that this application requires access to restricted accounts of a certain + type. The default value is null and restricted accounts won\'t be visible to this + application. The type should correspond to the account authenticator type, such as + "com.google". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int restrictedAccountType=0x010103d5; + /** Amount of right padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int right=0x010101af; + /** Default style for RingtonePreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ringtonePreferenceStyle=0x01010093; + /** Which ringtone type(s) to show in the picker. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ringtone1 Ringtones.
notification2 Notification sounds.
alarm4 Alarm sounds.
all7 All available ringtone sounds.
+ */ + public static final int ringtoneType=0x010101f9; + /** rotation of the view, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotation=0x01010326; + /** rotation of the view around the x axis, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotationX=0x01010327; + /** rotation of the view around the y axis, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotationY=0x01010328; + /** The maxmimum number of rows to create when automatically positioning children. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowCount=0x01010375; + /** Fraction of the animation duration used to delay the beginning of + the animation of each row. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowDelay=0x010101d0; + /** Row edge flags. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
top4 Row is anchored to the top of the keyboard.
bottom8 Row is anchored to the bottom of the keyboard.
+ */ + public static final int rowEdgeFlags=0x01010241; + /** Defines the height of each row. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowHeight=0x01010132; + /** When set to true, forces row boundaries to appear in the same order + as row indices. + The default is true. + See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowOrderPreserved=0x01010376; + /** If unset, no state will be saved for this view when it is being + frozen. The default is true, allowing the view to be saved + (however it also must have an ID assigned to it for its + state to be saved). Setting this to false only disables the + state for this view, not for its children which may still + be saved. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int saveEnabled=0x010100e7; + /** Specifies where the drawable is positioned after scaling. The default value is + left. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int scaleGravity=0x010101fe; + /** Scale height, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleHeight=0x010101fd; + /** Controls how the image should be resized or moved to match the size + of this ImageView. +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
matrix0
fitXY1
fitStart2
fitCenter3
fitEnd4
center5
centerCrop6
centerInside7
+ */ + public static final int scaleType=0x0101011d; + /** Scale width, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleWidth=0x010101fc; + /** scale of the view in the x direction. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleX=0x01010324; + /** scale of the view in the y direction. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleY=0x01010325; + /** Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}. +

Note: scheme matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + schemes here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scheme=0x01010027; + /** Specifies a compatible screen density, as per the device + configuration screen density bins. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ldpi120 A low density screen, approximately 120dpi.
mdpi160 A medium density screen, approximately 160dpi.
hdpi240 A high density screen, approximately 240dpi.
xhdpi320 An extra high density screen, approximately 320dpi.
+ */ + public static final int screenDensity=0x010102cb; + /** Specify the orientation an activity should be run in. If not + specified, it will run in the current preferred orientation + of the screen. +

This attribute is supported by the {@code <activity>} + element. +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
unspecified-1 No preference specified: let the system decide the best + orientation. This will either be the orientation selected + by the activity below, or the user's preferred orientation + if this activity is the bottom of a task. If the user + explicitly turned off sensor based orientation through settings + sensor based device rotation will be ignored. If not by default + sensor based orientation will be taken into account and the + orientation will changed based on how the user rotates the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}.
landscape0 Would like to have the screen in a landscape orientation: that + is, with the display wider than it is tall, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}.
portrait1 Would like to have the screen in a portrait orientation: that + is, with the display taller than it is wide, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}.
user2 Use the user's current preferred orientation of the handset. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}.
behind3 Keep the screen in the same orientation as whatever is behind + this activity. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}.
sensor4 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + Ignores user's setting to turn off sensor-based rotation. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}.
nosensor5 Always ignore orientation determined by orientation sensor: + the display will not rotate when the user moves the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}.
sensorLandscape6 Would like to have the screen in landscape orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}.
sensorPortrait7 Would like to have the screen in portrait orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}.
reverseLandscape8 Would like to have the screen in landscape orientation, turned in + the opposite direction from normal landscape. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}.
reversePortrait9 Would like to have the screen in portrait orientation, turned in + the opposite direction from normal portrait. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}.
fullSensor10 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + This allows any of the 4 possible rotations, regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}.
userLandscape11 Would like to have the screen in landscape orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}.
userPortrait12 Would like to have the screen in portrait orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}.
fullUser13 Respect the user's sensor-based rotation preference, but if + sensor-based rotation is enabled then allow the screen to rotate + in all 4 possible directions regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}.
locked14 Screen is locked to its current rotation, whatever that is. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}.
+ */ + public static final int screenOrientation=0x0101001e; + /** Specifies a compatible screen size, as per the device + configuration screen size bins. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
small200 A small screen configuration, at least 240x320dp.
normal300 A normal screen configuration, at least 320x480dp.
large400 A large screen configuration, at least 400x530dp.
xlarge500 An extra large screen configuration, at least 600x800dp.
+ */ + public static final int screenSize=0x010102ca; + /** Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollHorizontally=0x0101015b; + /** Default ScrollView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollViewStyle=0x01010080; + /** The initial horizontal scroll offset, in pixels. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollX=0x010100d2; + /** The initial vertical scroll offset, in pixels. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollY=0x010100d3; + /** Defines whether the horizontal scrollbar track should always be drawn. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarAlwaysDrawHorizontalTrack=0x01010068; + /** Defines whether the vertical scrollbar track should always be drawn. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarAlwaysDrawVerticalTrack=0x01010069; + /** Defines the delay in milliseconds that a scrollbar waits before fade out. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarDefaultDelayBeforeFade=0x010102a9; + /** Defines the delay in milliseconds that a scrollbar takes to fade out. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarFadeDuration=0x010102a8; + /** Sets the width of vertical scrollbars and height of horizontal scrollbars. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarSize=0x01010063; + /** Controls the scrollbar style and position. The scrollbars can be overlaid or + inset. When inset, they add to the padding of the view. And the + scrollbars can be drawn inside the padding area or on the edge of + the view. For example, if a view has a background drawable and you + want to draw the scrollbars inside the padding specified by the + drawable, you can use insideOverlay or insideInset. If you want them + to appear at the edge of the view, ignoring the padding, then you can + use outsideOverlay or outsideInset. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
insideOverlay0x0 Inside the padding and overlaid
insideInset0x01000000 Inside the padding and inset
outsideOverlay0x02000000 Edge of the view and overlaid
outsideInset0x03000000 Edge of the view and inset
+ */ + public static final int scrollbarStyle=0x0101007f; + /** Defines the horizontal scrollbar thumb drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarThumbHorizontal=0x01010064; + /** Defines the vertical scrollbar thumb drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarThumbVertical=0x01010065; + /** Defines the horizontal scrollbar track drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarTrackHorizontal=0x01010066; + /** Defines the vertical scrollbar track drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarTrackVertical=0x01010067; + /** Defines which scrollbars should be displayed on scrolling or not. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No scrollbar is displayed.
horizontal0x00000100 Displays horizontal scrollbar only.
vertical0x00000200 Displays vertical scrollbar only.
+ */ + public static final int scrollbars=0x010100de; + /** When set to true, the list uses a drawing cache during scrolling. + This makes the rendering faster but uses more memory. The default + value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollingCache=0x010100fe; + /** If supplied, this string will be displayed as the text of the "Search" button. + Optional attribute. + {@deprecated This will create a non-standard UI appearance, because the search bar UI is + changing to use only icons for its buttons.} +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int searchButtonText=0x01010205; + /** Additional features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. Optional attribute. + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
showSearchLabelAsBadge0x04 If set, this flag enables the display of the search target (label) within the + search bar. If neither bad mode is selected, no badge will be shown.
showSearchIconAsBadge0x08This is deprecated.
The default + application icon is now always used, so this option is + obsolete.
queryRewriteFromData0x10 If set, this flag causes the suggestion column SUGGEST_COLUMN_INTENT_DATA to + be considered as the text for suggestion query rewriting. This should only + be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user + inspection and editing - typically, HTTP/HTTPS Uri's.
queryRewriteFromText0x20 If set, this flag causes the suggestion column SUGGEST_COLUMN_TEXT_1 to + be considered as the text for suggestion query rewriting. This should be used + for suggestions in which no query text is provided and the SUGGEST_COLUMN_INTENT_DATA + values are not suitable for user inspection and editing.
+ */ + public static final int searchMode=0x010101d5; + /** If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings. Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSettingsDescription=0x0101028a; + /** If provided, this is the trigger indicating that the searchable activity + provides suggestions as well. The value must be a fully-qualified content provider + authority (e.g. "com.example.android.apis.SuggestionProvider") and should match the + "android:authorities" tag in your content provider's manifest entry. Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestAuthority=0x010101d6; + /** If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestIntentAction=0x010101d9; + /** If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestIntentData=0x010101da; + /** If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path. Optional attribute. + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestPath=0x010101d7; + /** If provided, suggestion queries will be passed into your query function + as the selection parameter. Typically this will be a WHERE clause for your + database, and will contain a single question mark, which represents the actual query + string that has been typed by the user. If not provided, then the user query text + will be appended to the query Uri (after an additional "/".) Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestSelection=0x010101d8; + /** If provided, this is the minimum number of characters needed to trigger + search suggestions. The default value is 0. Optional attribute. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestThreshold=0x0101026d; + /** Defines the secondary progress value, between 0 and max. This progress is drawn between + the primary progress and the background. It can be ideal for media scenarios such as + showing the buffering progress while the default progress shows the play progress. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int secondaryProgress=0x01010138; + /** Default SeekBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int seekBarStyle=0x0101007b; + /** Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int segmentedButtonStyle=0x01010330; + /** If the text is selectable, select it all when the view takes + focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int selectAllOnFocus=0x0101015e; + /** Whether the Preference is selectable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int selectable=0x010101e6; + /** Background drawable for standalone items that need focus/pressed states. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int selectableItemBackground=0x0101030e; + /** Drawable for the vertical bar shown at the beginning and at the end of the selected date. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int selectedDateVerticalBar=0x01010347; + /** The background color for the selected week. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int selectedWeekBackgroundColor=0x01010342; + /** Component name of an activity that allows the user to modify + the settings for this service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int settingsActivity=0x01010225; + /** Place a shadow of the specified color behind the text. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowColor=0x01010161; + /** Horizontal offset of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowDx=0x01010162; + /** Vertical offset of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowDy=0x01010163; + /** Radius of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowRadius=0x01010164; + /** Indicates what shape to fill with a gradient. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
rectangle0 Rectangle shape, with optional rounder corners.
oval1 Oval shape.
line2 Line shape.
ring3 Ring shape.
+ */ + public static final int shape=0x0101019a; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shareInterpolator=0x010101bb; + /** Specify the name of a user ID that will be shared between multiple + packages. By default, each package gets its own unique user-id. + By setting this value on two or more packages, each of these packages + will be given a single shared user ID, so they can for example run + in the same process. Note that for them to actually get the same + user ID, they must also be signed with the same signature. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sharedUserId=0x0101000b; + /** Specify a label for the shared user UID of this package. This is + only used if you have also used android:sharedUserId. This must + be a reference to a string resource; it can not be an explicit + string. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int sharedUserLabel=0x01010261; + /** Whether the view of this Preference should be disabled when + this Preference is disabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shouldDisableView=0x010101ee; + /** How this item should display in the Action Bar, if present. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
never0 Never show this item in an action bar, show it in the overflow menu instead. + Mutually exclusive with "ifRoom" and "always".
ifRoom1 Show this item in an action bar if there is room for it as determined + by the system. Favor this option over "always" where possible. + Mutually exclusive with "never" and "always".
always2 Always show this item in an actionbar, even if it would override + the system's limits of how much stuff to put there. This may make + your action bar look bad on some screens. In most cases you should + use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never".
withText4 When this item is shown as an action in the action bar, show a text + label with it even if it has an icon representation.
collapseActionView8 This item's action view collapses to a normal menu + item. When expanded, the action view takes over a + larger segment of its container.
+ */ + public static final int showAsAction=0x010102d9; + /** Whether to show an item for a default sound. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showDefault=0x010101fa; + /** Setting for which dividers to show. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0
beginning1
middle2
end4
+ */ + public static final int showDividers=0x01010329; + /** Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showOnLockScreen=0x010103c9; + /** Whether to show an item for 'Silent'. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showSilent=0x010101fb; + /** Whether do show week numbers. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showWeekNumber=0x0101033e; + /** The number of weeks to be shown. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shownWeekCount=0x01010341; + /** The zero-based index of the columns to shrink. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can shrink all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shrinkColumns=0x0101014a; + /** Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key. + + The default value is false (multi-line wrapped text mode) for non-editable text, but if + you specify any value for inputType, the default is true (single-line input field mode). + + {@deprecated This attribute is deprecated. Use maxLines instead to change + the layout of a static text, and use the textMultiLine flag in the + inputType attribute instead for editable text views (if both singleLine and inputType + are supplied, the inputType flags will override the value of singleLine). } +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int singleLine=0x0101015d; + /** If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int singleUser=0x010103bf; + /** Smaller icon of the authenticator. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int smallIcon=0x0101029e; + /** Indicates whether the application supports smaller screen form-factors. + A small screen is defined as one with a smaller aspect ratio than + the traditional HVGA screen; that is, for a portrait screen, less + tall than an HVGA screen. In practice, this means a QVGA low + density or VGA high density screen. An application that does + not support small screens will not be available for + small screen devices, since there is little the platform can do + to make such an application work on a smaller screen. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int smallScreens=0x01010284; + /** When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen. This + property is set to true by default but should be set to false if your adapter + will display items of varying heights. When this property is set to true and + your adapter displays items of varying heights, the scrollbar thumb will + change size as the user scrolls through the list. When set to fale, the list + will use only the number of items in the adapter and the number of items visible + on screen to determine the scrollbar's properties. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int smoothScrollbar=0x01010231; + /** @hide Color for the solid color background if such for optimized rendering. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int solidColor=0x0101034a; + /** Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int soundEffectsEnabled=0x01010215; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int spacing=0x01010113; + /** Default style for spinner drop down items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerDropDownItemStyle=0x01010087; + /** Default spinner item style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerItemStyle=0x01010089; + /** Display mode for spinner options. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
dialog0 Spinner options will be presented to the user as a dialog window.
dropdown1 Spinner options will be presented to the user as an inline dropdown + anchored to the spinner widget itself.
+ */ + public static final int spinnerMode=0x010102f1; + /** Default Spinner style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerStyle=0x01010081; + /** Whether the spinners are shown. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int spinnersShown=0x0101034b; + /** Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch. + If false (default), touch events will be dispatched to + the child view where the first pointer went down until + the last pointer goes up. + If true, touch events may be dispatched to multiple children. + MotionEvents for each pointer will be dispatched to the child + view where the initial ACTION_DOWN event happened. + See {@link android.view.ViewGroup#setMotionEventSplittingEnabled(boolean)} + for more information. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int splitMotionEvents=0x010102ef; + /** Sets a drawable as the content of this ImageView. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int src=0x01010119; + /** Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int ssp=0x010103e3; + /** Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sspPattern=0x010103e5; + /** Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sspPrefix=0x010103e4; + /** Used by ListView and GridView to stack their content from the bottom. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stackFromBottom=0x010100fd; + /** Default Star style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int starStyle=0x01010082; + /** Start color of the gradient. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startColor=0x0101019d; + /** Delay in milliseconds before the transition starts. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startDelay=0x010103e2; + /** Delay in milliseconds before the animation runs, once start time is reached. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startOffset=0x010101be; + /** {@deprecated Use minDate instead.} + The first year (inclusive), for example "1940". + {@deprecated Use minDate instead.} + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int startYear=0x0101017c; + /** Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted. Generally you use this for activities + that do not store any state. When this flag is set, if for some reason + the activity is killed before it has a chance to save its state, + then the system will not remove it from the activity stack like + it normally would. Instead, the next time the user navigates to + it its {@link android.app.Activity#onCreate} method will be called + with a null icicle, just like it was starting for the first time. + +

This is used by the Home activity to make sure it does not get + removed if it crashes for some reason. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stateNotNeeded=0x01010016; + /** State identifier indicating the popup will be above the anchor. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_above_anchor=0x010100aa; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_accelerated=0x0101031b; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_activated=0x010102fe; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_active=0x010100a2; + /** State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_checkable=0x0101009f; + /** State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_checked=0x010100a0; + /** State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_drag_can_accept=0x01010368; + /** State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_drag_hovered=0x01010369; + /** State identifier indicating the group is empty (has no children). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_empty=0x010100a9; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_enabled=0x0101009e; + /** State identifier indicating the group is expanded. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_expanded=0x010100a8; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_first=0x010100a4; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_focused=0x0101009c; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_hovered=0x01010367; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_last=0x010100a6; + /** State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_long_pressable=0x0101023c; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_middle=0x010100a5; + /** State identifier indicating a TextView has a multi-line layout. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_multiline=0x0101034d; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_pressed=0x010100a7; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_selected=0x010100a1; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_single=0x010100a3; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_window_focused=0x0101009d; + /** A resource id of a static drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int staticWallpaperPreview=0x01010331; + /** The step size of the rating. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stepSize=0x01010146; + /** If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application. The default is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stopWithTask=0x0101036a; + /** Different audio stream types. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
voice0
system1
ring2
music3
alarm4
+ */ + public static final int streamType=0x01010209; + /** The zero-based index of the columns to stretch. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can stretch all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stretchColumns=0x01010149; + /** Defines how columns should stretch to fill the available empty space, if any. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Stretching is disabled.
spacingWidth1 The spacing between each column is stretched.
columnWidth2 Each column is stretched equally.
spacingWidthUniform3 The spacing between each column is uniformly stretched..
+ */ + public static final int stretchMode=0x01010116; + /** Specifies subtitle text used for navigationMode="normal" +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtitle=0x010102d1; + /** Specifies a style to use for subtitle text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int subtitleTextStyle=0x010102f9; + /** The extra value of the subtype. This string can be any string and will be passed to + the SpellChecker. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeExtraValue=0x0101039a; + /** The unique id for the subtype. The input method framework keeps track of enabled + subtypes by ID. When the IME package gets upgraded, enabled IDs will stay enabled even + if other attributes are different. If the ID is unspecified (by calling the other + constructor or 0. Arrays.hashCode(new Object[] {locale, mode, extraValue, + isAuxiliary, overridesImplicitlyEnabledSubtype}) will be used instead. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeId=0x010103c1; + /** The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + This is also used by the framework to know the supported locales + of the spell checker. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeLocale=0x01010399; + /** If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this. If all of your suggestions + can handle the action key, you can simply define the action message using this + attribute. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int suggestActionMsg=0x010101dc; + /** If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis. + First, you must define a column (and name it here) where your suggestions will include + the action string. Then, in your content provider, you must provide this column, and + when desired, provide data in this column. + The search manager will look at your suggestion cursor, using the string + provided here in order to select a column, and will use that to select a string from + the cursor. That string will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to + your searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra + getStringExtra(SearchManager.ACTION_MSG)}. If the data does not exist for the + selection suggestion, the action key will be ignored.Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int suggestActionMsgColumn=0x010101dd; + /** The summary for the item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summary=0x010101e9; + /** Column in data table that summarizes this data. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryColumn=0x010102a2; + /** The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryOff=0x010101f0; + /** The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryOn=0x010101ef; + /** Declare that your application will be able to deal with RTL (right to left) layouts. + If set to false (default value), your application will not care about RTL layouts. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsRtl=0x010103af; + /** Set to true if this input method supports ways to switch to + a next input method (e.g. a globe key.). When this is true and + InputMethodManager#shouldOfferSwitchingToNextInputMethod() returns true, + the IME has to offer ways to to invoke InputMethodManager#switchToNextInputMethod() + accordingly. +

Note that the system determines the most appropriate next input method + and subtype in order to provide the consistent user experience in switching + between IMEs and subtypes. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsSwitchingToNextInputMethod=0x010103eb; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsUploading=0x0101029b; + /** Minimum width for the switch component +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchMinWidth=0x01010370; + /** Minimum space between the switch and caption text +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchPadding=0x01010371; + /** Default style for switch preferences. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int switchPreferenceStyle=0x0101036d; + /** TextAppearance style for text displayed on the switch thumb. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int switchTextAppearance=0x0101036e; + /** The text used on the switch itself when in the "off" state. + This should be a very SHORT string, as it appears in a small space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchTextOff=0x0101036c; + /** The text used on the switch itself when in the "on" state. + This should be a very SHORT string, as it appears in a small space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchTextOn=0x0101036b; + /** Flag indicating whether this content provider would like to + participate in data synchronization. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int syncable=0x01010019; + /** Determines whether the strip under the tab indicators is drawn or not. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tabStripEnabled=0x010102bd; + /** Drawable used to draw the left part of the strip underneath the tabs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabStripLeft=0x010102bb; + /** Drawable used to draw the right part of the strip underneath the tabs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabStripRight=0x010102bc; + /** Default TabWidget style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabWidgetStyle=0x01010083; + /** Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tag=0x010100d1; + /** The name of the activity this alias should launch. The activity + must be in the same manifest as the alias, and have been defined + in that manifest before the alias here. This must use a Java-style + naming convention to ensure the name is unique, for example + "com.mycompany.MyName". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetActivity=0x01010202; + /** The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetClass=0x0101002f; + /** Reference to an array resource that be used as description for the targets around the circle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int targetDescriptions=0x010103a0; + /** The id of a target on which this transition will animate changes. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int targetId=0x010103dc; + /** The name of the application package that an Instrumentation object + will run against. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetPackage=0x01010021; + /** This is the SDK version number that the application is targeting. + It is able to run on older versions (down to minSdkVersion), but + was explicitly tested to work with the version specified here. + Specifying this version allows the platform to disable compatibility + code that are not required or enable newer features that are not + available to older applications. This may also be a string + (such as "Donut") if this is built against a development + branch, in which case minSdkVersion is also forced to be that + string. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetSdkVersion=0x01010270; + /** Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int taskAffinity=0x01010012; + /** When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskCloseEnterAnimation=0x010100be; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskCloseExitAnimation=0x010100bf; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskOpenEnterAnimation=0x010100bc; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskOpenExitAnimation=0x010100bd; + /** When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToBackEnterAnimation=0x010100c2; + /** When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToBackExitAnimation=0x010100c3; + /** When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToFrontEnterAnimation=0x010100c0; + /** When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToFrontExitAnimation=0x010100c1; + /** This is the amount of tension. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tension=0x0101026a; + /** Option to indicate this application is only for testing purposes. + For example, it may expose functionality or data outside of itself + that would cause a security hole, but is useful for testing. This + kind of application can not be installed without the + INSTALL_ALLOW_TEST flag, which means only through adb install. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int testOnly=0x01010272; + /** Text to display. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int text=0x0101014f; + /** Defines the alignment of the text. A heuristic is used to determine the resolved + text alignment. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
inherit0 Default
gravity1 Default for the root view. The gravity determines the alignment, ALIGN_NORMAL, + ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s + text direction
textStart2 Align to the start of the paragraph, e.g. ALIGN_NORMAL.
textEnd3 Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.
center4 Center the paragraph, e.g. ALIGN_CENTER.
viewStart5 Align to the start of the view, which is ALIGN_LEFT if the view’s resolved + layoutDirection is LTR, and ALIGN_RIGHT otherwise.
viewEnd6 Align to the end of the view, which is ALIGN_RIGHT if the view’s resolved + layoutDirection is LTR, and ALIGN_LEFT otherwise
+ */ + public static final int textAlignment=0x010103b1; + /** Present the text in ALL CAPS. This may use a small-caps form when available. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textAllCaps=0x0101038c; + /** Default appearance of text: color, typeface, size, and style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearance=0x01010034; + /** Text color, typeface, size, and style for the text inside of a button. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceButton=0x01010207; + /** Default appearance of text against an inverted background: + color, typeface, size, and style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceInverse=0x01010035; + /** Text color, typeface, size, and style for "large" text. Defaults to primary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLarge=0x01010040; + /** Text color, typeface, size, and style for "large" inverse text. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLargeInverse=0x01010043; + /** Text color, typeface, size, and style for the text inside of a popup menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLargePopupMenu=0x01010301; + /** The preferred TextAppearance for the primary text of list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceListItem=0x0101039e; + /** The preferred TextAppearance for the primary text of small list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceListItemSmall=0x0101039f; + /** Text color, typeface, size, and style for "medium" text. Defaults to primary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceMedium=0x01010041; + /** Text color, typeface, size, and style for "medium" inverse text. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceMediumInverse=0x01010044; + /** Text color, typeface, size, and style for system search result subtitle. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSearchResultSubtitle=0x010102a0; + /** Text color, typeface, size, and style for system search result title. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSearchResultTitle=0x010102a1; + /** Text color, typeface, size, and style for "small" text. Defaults to secondary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmall=0x01010042; + /** Text color, typeface, size, and style for "small" inverse text. Defaults to secondary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmallInverse=0x01010045; + /** Text color, typeface, size, and style for small text inside of a popup menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmallPopupMenu=0x01010302; + /** Drawable to use for check marks. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCheckMark=0x01010046; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCheckMarkInverse=0x01010047; + /** Color of text (usually same as colorForeground). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColor=0x01010098; + /** Color of list item text in alert dialogs. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorAlertDialogListItem=0x01010306; + /** Color of highlighted text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHighlight=0x01010099; + /** Color of highlighted text, when used in a light theme. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHighlightInverse=0x0101034f; + /** Color of hint text (displayed when the field is empty). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHint=0x0101009a; + /** Inverse hint text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHintInverse=0x0101003f; + /** Color of link text (URLs). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorLink=0x0101009b; + /** Color of link text (URLs), when used in a light theme. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorLinkInverse=0x01010350; + /** The most prominent text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimary=0x01010036; + /** Bright text color. Only differentiates based on the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryDisableOnly=0x01010037; + /** Primary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverse=0x01010039; + /** Bright inverse text color. Only differentiates based on the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverseDisableOnly=0x0101028b; + /** Bright inverse text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverseNoDisable=0x0101003d; + /** Bright text color. This does not differentiate the disabled state. As an example, + buttons use this since they display the disabled state via the background and not the + foreground text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryNoDisable=0x0101003b; + /** Secondary text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondary=0x01010038; + /** Secondary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryInverse=0x0101003a; + /** Dim inverse text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryInverseNoDisable=0x0101003e; + /** Dim text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryNoDisable=0x0101003c; + /** Tertiary text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorTertiary=0x01010212; + /** Tertiary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorTertiaryInverse=0x01010213; + /** Reference to a drawable that will be drawn under the insertion cursor. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCursorDrawable=0x01010362; + /** Defines the direction of the text. A heuristic is used to determine the resolved text + direction of paragraphs. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
inherit0 Default
firstStrong1 Default for the root view. The first strong directional character determines the + paragraph direction. If there is no strong directional character, the paragraph + direction is the view’s resolved layout direction.
anyRtl2 The paragraph direction is RTL if it contains any strong RTL character, otherwise + it is LTR if it contains any strong LTR characters. If there are neither, the + paragraph direction is the view’s resolved layout direction.
ltr3 The paragraph direction is left to right.
rtl4 The paragraph direction is right to left.
locale5 The paragraph direction is coming from the system Locale.
+ */ + public static final int textDirection=0x010103b0; + /** Variation of textEditPasteWindowLayout displayed when the clipboard is empty. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditNoPasteWindowLayout=0x01010315; + /** The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditPasteWindowLayout=0x01010314; + /** Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSideNoPasteWindowLayout=0x0101035f; + /** Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSidePasteWindowLayout=0x0101035e; + /** Layout of the TextView item that will populate the suggestion popup window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSuggestionItemLayout=0x01010374; + /** When set to true, the list will filter results as the user types. The + List's adapter must support the Filterable interface for this to work. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textFilterEnabled=0x010100ff; + /** Indicates that the content of a non-editable TextView can be selected. + Default value is false. EditText content is always selectable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textIsSelectable=0x01010316; + /** The text for the button when it is not checked. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textOff=0x01010125; + /** The text for the button when it is checked. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textOn=0x01010124; + /** Sets the horizontal scaling factor for the text. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textScaleX=0x01010151; + /** Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandle=0x010102c7; + /** Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleLeft=0x010102c5; + /** Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleRight=0x010102c6; + /** Reference to a style that will be used for the window containing a text + selection anchor. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleWindowStyle=0x010102c8; + /** Size of text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + Supported values include the following:

+

    +
  • px Pixels
  • +
  • sp Scaled pixels (scaled to relative pixel size on screen). See {@link android.util.DisplayMetrics} for more information.
  • +
  • pt Points
  • +
  • dip Device independent pixels. See {@link android.util.DisplayMetrics} for more information.
  • +
+ +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textSize=0x01010095; + /** Default text typeface style. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+ */ + public static final int textStyle=0x01010097; + /** Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSuggestionsWindowStyle=0x01010373; + /** Default TextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textViewStyle=0x01010084; + /** The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int theme=0x01010000; + /** Thickness of the ring. When defined, thicknessRatio is ignored. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thickness=0x01010260; + /** Thickness of the ring expressed as a ratio of the ring's width. For instance, + if thicknessRatio=3, then the thickness equals the ring's width divided by 3. + This value is ignored if innerRadius is defined. Default value is 3. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thicknessRatio=0x0101019c; + /** Draws the thumb on a seekbar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int thumb=0x01010142; + /** An offset for the thumb that allows it to extend out of the range of the track. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thumbOffset=0x01010143; + /** Amount of padding on either side of text within the switch thumb. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thumbTextPadding=0x01010372; + /** Reference to a the wallpaper's thumbnail bitmap. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int thumbnail=0x010102a5; + /** Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. + Gravity is ignored when the tile mode is enabled. Default value is "disabled". +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
disabled-1 Do not tile the bitmap. This is the default value.
clamp0 Replicates the edge color.
repeat1 Repeats the bitmap in both direction.
mirror2 Repeats the shader's image horizontally and vertically, alternating + mirror images so that adjacent images always seam.
+ */ + public static final int tileMode=0x01010201; + /** Specifies the time zone to use. When this attribute is specified, the + TextClock will ignore the time zone of the system. To use the user's + time zone, do not specify this attribute. The default value is the + user's time zone. Please refer to {@link java.util.TimeZone} for more + information about time zone ids. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int timeZone=0x010103cc; + /** Set a tinting color for the image. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tint=0x01010121; + /** The title associated with the item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int title=0x010101e1; + /** The condensed title associated with the item. This is used in situations where the + normal title may be too long to be displayed. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int titleCondensed=0x010101e2; + /** Specifies a style to use for title text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int titleTextStyle=0x010102f8; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toAlpha=0x010101cb; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toDegrees=0x010101b4; + /** The destination scene in this scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int toScene=0x010103de; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toXDelta=0x010101c7; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toXScale=0x010101c3; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toYDelta=0x010101c9; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toYScale=0x010101c5; + /** Amount of top padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int top=0x010101ae; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int topBright=0x010100cb; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int topDark=0x010100c7; + /** Radius of the top left corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topLeftRadius=0x010101a9; + /** Extra offset for the handle at the top of the SlidingDrawer. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topOffset=0x01010258; + /** Radius of the top right corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topRightRadius=0x010101aa; + /** Drawable to use as the "track" that the switch thumb slides within. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int track=0x0101036f; + /** Sets the transcript mode for the list. In transcript mode, the list + scrolls to the bottom to make new items visible when they are added. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
disabled0 Disables transcript mode. This is the default value.
normal1 The list will automatically scroll to the bottom when + a data set change notification is received and only if the last item is + already visible on screen.
alwaysScroll2 The list will automatically scroll to the bottom, no matter what items + are currently visible.
+ */ + public static final int transcriptMode=0x01010100; + /** x location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotX property of the View. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int transformPivotX=0x01010320; + /** y location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotY property of the View. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int transformPivotY=0x01010321; + /** The id of a transition to be used in a particular scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int transition=0x010103df; + /**

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child transitions should be played together.
sequential1 child transitions should be played sequentially, in the same order + as the xml.
+ */ + public static final int transitionOrdering=0x010103e0; + /** translation in x of the view. This value is added post-layout to the left + property of the view, which is set by its layout. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int translationX=0x01010322; + /** translation in y of the view. This value is added post-layout to the left + property of the view, which is set by its layout. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int translationY=0x01010323; + /** Type of gradient. The default type is linear. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
linear0 Linear gradient.
radial1 Radial, or circular, gradient.
sweep2 Sweep, or angled or diamond, gradient.
+ */ + public static final int type=0x010101a1; + /** Default text typeface. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+ */ + public static final int typeface=0x01010096; + /** Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+ */ + public static final int uiOptions=0x01010398; + /** Color used to draw the user's strokes until we are sure it's a gesture. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int uncertainGestureColor=0x01010276; + /** The color for the dates of an unfocused month. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int unfocusedMonthDateColor=0x01010344; + /** Sets the alpha on the items that are not selected. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int unselectedAlpha=0x0101020e; + /** Update period in milliseconds, or 0 if the AppWidget will update itself. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int updatePeriodMillis=0x01010250; + /** When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters. + The default value is false. + See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useDefaultMargins=0x01010379; + /** Use the drawable's intrinsic width and height as minimum size values. + Useful if the target drawable is a 9-patch or otherwise should not be scaled + down beyond a minimum size. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useIntrinsicSizeAsMinimum=0x01010310; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useLevel=0x0101019f; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int userVisible=0x01010291; + /** Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int value=0x01010024; + /** Value the animation starts from. +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int valueFrom=0x010102de; + /** Value the animation animates to. +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int valueTo=0x010102df; + /** The type of valueFrom and valueTo. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floatType0 valueFrom and valueTo are floats. This is the default value is valueType is + unspecified. Note that if either valueFrom or valueTo represent colors + (beginning with "#"), then this attribute is ignored and the color values are + interpreted as integers.
intType1 valueFrom and valueTo are integers.
+ */ + public static final int valueType=0x010102e0; + /** If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int variablePadding=0x01010195; + /** The vendor name if this print service is vendor specific. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int vendor=0x010103e7; + /** Internal version code. This is the number used to determine whether + one version is more recent than another: it has no other meaning than + that higher numbers are more recent. You could use this number to + encode a "x.y" in the lower and upper 16 bits, make it a build + number, simply increase it by one each time a new version is + released, or define it however else you want, as long as each + successive version has a higher number. This is not a version + number generally shown to the user, that is usually supplied + with {@link android.R.attr#versionName}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int versionCode=0x0101021b; + /** The text shown to the user to indicate the version they have. This + is used for no other purpose than display to the user; the actual + significant version number is given by {@link android.R.attr#versionCode}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int versionName=0x0101021c; + /** Amount to offset the touch Y coordinate by, for bias correction. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalCorrection=0x0101023a; + /** Default vertical divider between menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int verticalDivider=0x0101012e; + /** Default vertical gap between rows of keys. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalGap=0x01010240; + /** Determines which side the vertical scroll bar should be placed on. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
defaultPosition0 Place the scroll bar wherever the system default determines.
left1 Place the scroll bar on the left.
right2 Place the scroll bar on the right.
+ */ + public static final int verticalScrollbarPosition=0x01010334; + /** Defines the default vertical spacing between rows. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalSpacing=0x01010115; + /** Controls the initial visibility of the view. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
visible0 Visible on screen; the default value.
invisible1 Not displayed, but taken into account during layout (space is left for it).
gone2 Completely hidden, as if the view had not been added.
+ */ + public static final int visibility=0x010100dc; + /** Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int visible=0x01010194; + /** Flag indicating whether the application requests the VM to operate in + the safe mode. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int vmSafeMode=0x010102b8; + /** If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceLanguage=0x01010255; + /** If provided, this specifies the language model that should be used by the + voice recognition system. See + {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL } for more information. + If not provided, the default value + {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM } will be used. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceLanguageModel=0x01010253; + /** If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query. Must be one + or greater. If not provided, the recognizer will choose how many results to return. + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceMaxResults=0x01010256; + /** If provided, this specifies a prompt that will be displayed during voice input. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voicePromptText=0x01010254; + /** Voice search features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. + If showVoiceSearchButton is set, then launchWebSearch or launchRecognizer must + also be set. Optional attribute. + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
showVoiceSearchButton0x01 If set, display a voice search button. This only takes effect if voice search is + available on the device.
launchWebSearch0x02 If set, the voice search button will take the user directly to a built-in + voice web search activity. Most applications will not use this flag, as it + will take the user away from the activity in which search was invoked.
launchRecognizer0x04 If set, the voice search button will take the user directly to a built-in + voice recording activity. This activity will prompt the user to speak, + transcribe the spoken text, and forward the resulting query + text to the searchable activity, just as if the user had typed it into + the search UI and clicked the search button.
+ */ + public static final int voiceSearchMode=0x01010252; + /** When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperCloseEnterAnimation=0x01010295; + /** When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperCloseExitAnimation=0x01010296; + /** When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraCloseEnterAnimation=0x01010299; + /** When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraCloseExitAnimation=0x0101029a; + /** When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraOpenEnterAnimation=0x01010297; + /** When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraOpenExitAnimation=0x01010298; + /** When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperOpenEnterAnimation=0x01010293; + /** When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperOpenExitAnimation=0x01010294; + /** Default WebTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webTextViewStyle=0x010102b9; + /** Default WebView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webViewStyle=0x01010085; + /** The text appearance for the week day abbreviation of the calendar header. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int weekDayTextAppearance=0x01010348; + /** The color for the week numbers. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int weekNumberColor=0x01010345; + /** The color for the separator line between weeks. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int weekSeparatorLineColor=0x01010346; + /** Defines the maximum weight sum. If unspecified, the sum is computed + by adding the layout_weight of all of the children. This can be + used for instance to give a single child 50% of the total available + space by giving it a layout_weight of 0.5 and setting the weightSum + to 1.0. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int weightSum=0x01010128; + /** Optional parameter which indicates where this widget can be shown, + ie. home screen, keyguard or both. + resized. Supports combined values using | operator. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
home_screen0x1
keyguard0x2
+ */ + public static final int widgetCategory=0x010103c4; + /** The layout for the controllable widget portion of a Preference. This is inflated + into the layout for a Preference and should be used more frequently than + the layout attribute. For example, a checkbox preference would specify + a custom layout (consisting of just the CheckBox) here. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int widgetLayout=0x010101eb; + /** Makes the TextView be exactly this many pixels wide. + You could get the same effect by specifying this number in the + layout parameters. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int width=0x01010159; + /** Flag indicating whether this window should have an Action Bar + in place of the usual title bar. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionBar=0x010102cd; + /** Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionBarOverlay=0x010102e4; + /** Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionModeOverlay=0x010102dd; + /** Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowAnimationStyle=0x010100ae; + /** Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowBackground=0x01010054; + /** Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowCloseOnTouchOutside=0x0101035b; + /** This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowContentOverlay=0x01010059; + /** Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowDisablePreview=0x01010222; + /** Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowEnableSplitTouch=0x01010317; + /** The animation used when a window is being added. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowEnterAnimation=0x010100b4; + /** The animation used when a window is being removed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowExitAnimation=0x010100b5; + /** Drawable to use as a frame around the window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowFrame=0x01010055; + /** Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFullscreen=0x0101020d; + /** The animation used when a window is going from VISIBLE to INVISIBLE. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowHideAnimation=0x010100b7; + /** Flag indicating whether this is a floating window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowIsFloating=0x01010057; + /** Flag indicating whether this is a translucent window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowIsTranslucent=0x01010058; + /** The minimum width the window is allowed to be, along the major + axis of the screen. That is, when in landscape. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowMinWidthMajor=0x01010356; + /** The minimum width the window is allowed to be, along the minor + axis of the screen. That is, when in portrait. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowMinWidthMinor=0x01010357; + /** Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowNoDisplay=0x0101021e; + /** Flag indicating whether there should be no title on this window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowNoTitle=0x01010056; + /** Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowOverscan=0x010103cf; + /** The animation used when a window is going from INVISIBLE to VISIBLE. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowShowAnimation=0x010100b6; + /** Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowShowWallpaper=0x01010292; + /** Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+ */ + public static final int windowSoftInputMode=0x0101022b; + /** The style resource to use for a window's title area. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowTitleBackgroundStyle=0x0101005c; + /** The style resource to use for a window's title bar height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTitleSize=0x0101005a; + /** The style resource to use for a window's title text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowTitleStyle=0x0101005b; + /** Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTranslucentNavigation=0x010103f0; + /** Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTranslucentStatus=0x010103ef; + /** A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int writePermission=0x01010008; + /** A coordinate in the X dimension. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int x=0x010100ac; + /** Indicates whether the application supports extra large screen form-factors. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int xlargeScreens=0x010102bf; + /** A coordinate in the Y dimension. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int y=0x010100ad; + /** Default style for YesNoPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int yesNoPreferenceStyle=0x01010090; + /** Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation. The default value is normal. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 The content being animated be kept in its current Z order.
top1 The content being animated is forced on top of all other + content for the duration of the animation.
bottom-1 The content being animated is forced under all other + content for the duration of the animation.
+ */ + public static final int zAdjustment=0x010101c1; + } + public static final class bool { + } + public static final class color { + public static final int background_dark=0x0106000e; + public static final int background_light=0x0106000f; + public static final int black=0x0106000c; + public static final int darker_gray=0x01060000; + /** A really bright Holo shade of blue + */ + public static final int holo_blue_bright=0x0106001b; + /** A dark Holo shade of blue + */ + public static final int holo_blue_dark=0x01060013; + /** A light Holo shade of blue + */ + public static final int holo_blue_light=0x01060012; + /** A dark Holo shade of green + */ + public static final int holo_green_dark=0x01060015; + /** A light Holo shade of green + */ + public static final int holo_green_light=0x01060014; + /** A dark Holo shade of orange + */ + public static final int holo_orange_dark=0x01060019; + /** A light Holo shade of orange + */ + public static final int holo_orange_light=0x01060018; + /** A Holo shade of purple + */ + public static final int holo_purple=0x0106001a; + /** A dark Holo shade of red + */ + public static final int holo_red_dark=0x01060017; + /** A light Holo shade of red + */ + public static final int holo_red_light=0x01060016; + public static final int primary_text_dark=0x01060001; + public static final int primary_text_dark_nodisable=0x01060002; + public static final int primary_text_light=0x01060003; + public static final int primary_text_light_nodisable=0x01060004; + public static final int secondary_text_dark=0x01060005; + public static final int secondary_text_dark_nodisable=0x01060006; + public static final int secondary_text_light=0x01060007; + public static final int secondary_text_light_nodisable=0x01060008; + public static final int tab_indicator_text=0x01060009; + public static final int tertiary_text_dark=0x01060010; + public static final int tertiary_text_light=0x01060011; + public static final int transparent=0x0106000d; + public static final int white=0x0106000b; + public static final int widget_edittext_dark=0x0106000a; + } + public static final class dimen { + /** The standard size (both width and height) of an application icon that + will be displayed in the app launcher and elsewhere. + */ + public static final int app_icon_size=0x01050000; + /** The platform's desired minimum size for a dialog's width when it + is along the major axis (that is the screen is landscape). This may + be either a fraction or a dimension. + */ + public static final int dialog_min_width_major=0x01050003; + /** The platform's desired minimum size for a dialog's width when it + is along the minor axis (that is the screen is portrait). This may + be either a fraction or a dimension. + */ + public static final int dialog_min_width_minor=0x01050004; + /** The width of the big icons in notifications. + */ + public static final int notification_large_icon_height=0x01050006; + /** The width of the big icons in notifications. + */ + public static final int notification_large_icon_width=0x01050005; + /** The height that is used when creating thumbnails of applications. + The height that is used when creating thumbnails of applications. + The height that is used when creating thumbnails of applications. + */ + public static final int thumbnail_height=0x01050001; + /** The width that is used when creating thumbnails of applications. + The width that is used when creating thumbnails of applications. + The width that is used when creating thumbnails of applications. + */ + public static final int thumbnail_width=0x01050002; + } + public static final class drawable { + public static final int alert_dark_frame=0x01080000; + public static final int alert_light_frame=0x01080001; + public static final int arrow_down_float=0x01080002; + public static final int arrow_up_float=0x01080003; + public static final int bottom_bar=0x0108009a; + public static final int btn_default=0x01080004; + public static final int btn_default_small=0x01080005; + public static final int btn_dialog=0x01080017; + public static final int btn_dropdown=0x01080006; + public static final int btn_minus=0x01080007; + public static final int btn_plus=0x01080008; + public static final int btn_radio=0x01080009; + public static final int btn_star=0x0108000a; + public static final int btn_star_big_off=0x0108000b; + public static final int btn_star_big_on=0x0108000c; + public static final int button_onoff_indicator_off=0x0108000e; + public static final int button_onoff_indicator_on=0x0108000d; + public static final int checkbox_off_background=0x0108000f; + public static final int checkbox_on_background=0x01080010; + /** Drawable to use as a background for separators on a list with a dark background + */ + public static final int dark_header=0x010800a5; + public static final int dialog_frame=0x01080011; + public static final int dialog_holo_dark_frame=0x010800b2; + public static final int dialog_holo_light_frame=0x010800b3; + public static final int divider_horizontal_bright=0x01080012; + public static final int divider_horizontal_dark=0x01080014; + public static final int divider_horizontal_dim_dark=0x01080015; + public static final int divider_horizontal_textfield=0x01080013; + public static final int edit_text=0x01080016; + public static final int editbox_background=0x01080018; + public static final int editbox_background_normal=0x01080019; + public static final int editbox_dropdown_dark_frame=0x0108001a; + public static final int editbox_dropdown_light_frame=0x0108001b; + public static final int gallery_thumb=0x0108001c; + public static final int ic_btn_speak_now=0x010800a4; + public static final int ic_delete=0x0108001d; + public static final int ic_dialog_alert=0x01080027; + public static final int ic_dialog_dialer=0x01080028; + public static final int ic_dialog_email=0x01080029; + public static final int ic_dialog_info=0x0108009b; + public static final int ic_dialog_map=0x0108002a; + public static final int ic_input_add=0x0108002b; + public static final int ic_input_delete=0x0108002c; + public static final int ic_input_get=0x0108002d; + public static final int ic_lock_idle_alarm=0x0108002e; + public static final int ic_lock_idle_charging=0x0108001e; + public static final int ic_lock_idle_lock=0x0108001f; + public static final int ic_lock_idle_low_battery=0x01080020; + public static final int ic_lock_lock=0x0108002f; + public static final int ic_lock_power_off=0x01080030; + public static final int ic_lock_silent_mode=0x01080031; + public static final int ic_lock_silent_mode_off=0x01080032; + public static final int ic_media_ff=0x01080021; + public static final int ic_media_next=0x01080022; + public static final int ic_media_pause=0x01080023; + public static final int ic_media_play=0x01080024; + public static final int ic_media_previous=0x01080025; + public static final int ic_media_rew=0x01080026; + public static final int ic_menu_add=0x01080033; + public static final int ic_menu_agenda=0x01080034; + public static final int ic_menu_always_landscape_portrait=0x01080035; + public static final int ic_menu_call=0x01080036; + public static final int ic_menu_camera=0x01080037; + public static final int ic_menu_close_clear_cancel=0x01080038; + public static final int ic_menu_compass=0x01080039; + public static final int ic_menu_crop=0x0108003a; + public static final int ic_menu_day=0x0108003b; + public static final int ic_menu_delete=0x0108003c; + public static final int ic_menu_directions=0x0108003d; + public static final int ic_menu_edit=0x0108003e; + public static final int ic_menu_gallery=0x0108003f; + public static final int ic_menu_help=0x01080040; + public static final int ic_menu_info_details=0x01080041; + public static final int ic_menu_manage=0x01080042; + public static final int ic_menu_mapmode=0x01080043; + public static final int ic_menu_month=0x01080044; + public static final int ic_menu_more=0x01080045; + public static final int ic_menu_my_calendar=0x01080046; + public static final int ic_menu_mylocation=0x01080047; + public static final int ic_menu_myplaces=0x01080048; + public static final int ic_menu_preferences=0x01080049; + public static final int ic_menu_recent_history=0x0108004a; + public static final int ic_menu_report_image=0x0108004b; + public static final int ic_menu_revert=0x0108004c; + public static final int ic_menu_rotate=0x0108004d; + public static final int ic_menu_save=0x0108004e; + public static final int ic_menu_search=0x0108004f; + public static final int ic_menu_send=0x01080050; + public static final int ic_menu_set_as=0x01080051; + public static final int ic_menu_share=0x01080052; + public static final int ic_menu_slideshow=0x01080053; + public static final int ic_menu_sort_alphabetically=0x0108009c; + public static final int ic_menu_sort_by_size=0x0108009d; + public static final int ic_menu_today=0x01080054; + public static final int ic_menu_upload=0x01080055; + public static final int ic_menu_upload_you_tube=0x01080056; + public static final int ic_menu_view=0x01080057; + public static final int ic_menu_week=0x01080058; + public static final int ic_menu_zoom=0x01080059; + public static final int ic_notification_clear_all=0x0108005a; + public static final int ic_notification_overlay=0x0108005b; + public static final int ic_partial_secure=0x0108005c; + public static final int ic_popup_disk_full=0x0108005d; + public static final int ic_popup_reminder=0x0108005e; + public static final int ic_popup_sync=0x0108005f; + public static final int ic_search_category_default=0x01080060; + public static final int ic_secure=0x01080061; + public static final int list_selector_background=0x01080062; + public static final int menu_frame=0x01080063; + public static final int menu_full_frame=0x01080064; + public static final int menuitem_background=0x01080065; + public static final int picture_frame=0x01080066; + public static final int presence_audio_away=0x010800af; + public static final int presence_audio_busy=0x010800b0; + public static final int presence_audio_online=0x010800b1; + public static final int presence_away=0x01080067; + public static final int presence_busy=0x01080068; + public static final int presence_invisible=0x01080069; + public static final int presence_offline=0x0108006a; + public static final int presence_online=0x0108006b; + /** presence drawables for videochat or audiochat capable contacts + */ + public static final int presence_video_away=0x010800ac; + public static final int presence_video_busy=0x010800ad; + public static final int presence_video_online=0x010800ae; + public static final int progress_horizontal=0x0108006c; + public static final int progress_indeterminate_horizontal=0x0108006d; + public static final int radiobutton_off_background=0x0108006e; + public static final int radiobutton_on_background=0x0108006f; + public static final int screen_background_dark=0x01080098; + /** Semi-transparent background that can be used when placing a dark + themed UI on top of some arbitrary background (such as the + wallpaper). This darkens the background sufficiently that the UI + can be seen. + Background drawable that can be used for a transparent activity to + be able to display a dark UI: this darkens its background to make + a dark (default theme) UI more visible. + */ + public static final int screen_background_dark_transparent=0x010800a9; + public static final int screen_background_light=0x01080099; + /** Background drawable that can be used for a transparent activity to + be able to display a light UI: this lightens its background to make + a light UI more visible. + */ + public static final int screen_background_light_transparent=0x010800aa; + public static final int spinner_background=0x01080070; + public static final int spinner_dropdown_background=0x01080071; + public static final int star_big_off=0x01080073; + public static final int star_big_on=0x01080072; + public static final int star_off=0x01080075; + public static final int star_on=0x01080074; + public static final int stat_notify_call_mute=0x01080076; + public static final int stat_notify_chat=0x01080077; + public static final int stat_notify_error=0x01080078; + public static final int stat_notify_missed_call=0x0108007f; + public static final int stat_notify_more=0x01080079; + public static final int stat_notify_sdcard=0x0108007a; + public static final int stat_notify_sdcard_prepare=0x010800ab; + public static final int stat_notify_sdcard_usb=0x0108007b; + public static final int stat_notify_sync=0x0108007c; + public static final int stat_notify_sync_noanim=0x0108007d; + public static final int stat_notify_voicemail=0x0108007e; + public static final int stat_sys_data_bluetooth=0x01080080; + public static final int stat_sys_download=0x01080081; + public static final int stat_sys_download_done=0x01080082; + public static final int stat_sys_headset=0x01080083; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call=0x01080084; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call_forward=0x01080085; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call_on_hold=0x01080086; + public static final int stat_sys_speakerphone=0x01080087; + public static final int stat_sys_upload=0x01080088; + public static final int stat_sys_upload_done=0x01080089; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_vp_phone_call=0x010800a7; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_vp_phone_call_on_hold=0x010800a8; + public static final int stat_sys_warning=0x0108008a; + public static final int status_bar_item_app_background=0x0108008b; + public static final int status_bar_item_background=0x0108008c; + public static final int sym_action_call=0x0108008d; + public static final int sym_action_chat=0x0108008e; + public static final int sym_action_email=0x0108008f; + public static final int sym_call_incoming=0x01080090; + public static final int sym_call_missed=0x01080091; + public static final int sym_call_outgoing=0x01080092; + public static final int sym_contact_card=0x01080094; + public static final int sym_def_app_icon=0x01080093; + public static final int title_bar=0x01080095; + /** Drawable to use as a background for a taller version of the titlebar + */ + public static final int title_bar_tall=0x010800a6; + public static final int toast_frame=0x01080096; + public static final int zoom_plate=0x01080097; + } + public static final class fraction { + } + public static final class id { + /** Menu ID to perform a "add to dictionary" operation. + */ + public static final int addToDictionary=0x0102002a; + public static final int background=0x01020000; + public static final int button1=0x01020019; + public static final int button2=0x0102001a; + public static final int button3=0x0102001b; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for displaying candidates for what the user has entered. + */ + public static final int candidatesArea=0x0102001d; + public static final int checkbox=0x01020001; + /** View ID of a {@link android.view.View} to close a popup keyboard + */ + public static final int closeButton=0x01020027; + public static final int content=0x01020002; + /** Context menu ID for the "Copy" menu item to copy the currently + selected (or all) text in a text view to the clipboard. + */ + public static final int copy=0x01020021; + /** Context menu ID for the "Copy URL" menu item to copy the currently + selected URL from the text view to the clipboard. + */ + public static final int copyUrl=0x01020023; + public static final int custom=0x0102002b; + /** Context menu ID for the "Cut" menu item to copy and delete the currently + selected (or all) text in a text view to the clipboard. + */ + public static final int cut=0x01020020; + public static final int edit=0x01020003; + public static final int empty=0x01020004; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for interacting with the user in extraction mode. + */ + public static final int extractArea=0x0102001c; + public static final int hint=0x01020005; + public static final int home=0x0102002c; + public static final int icon=0x01020006; + public static final int icon1=0x01020007; + public static final int icon2=0x01020008; + public static final int input=0x01020009; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for entering text using the screen. + */ + public static final int inputArea=0x0102001e; + /** View ID of the text editor inside of an extracted text layout. + */ + public static final int inputExtractEditText=0x01020025; + /** View ID of the {@link android.inputmethodservice.KeyboardView} within + an input method's input area. + */ + public static final int keyboardView=0x01020026; + public static final int list=0x0102000a; + public static final int message=0x0102000b; + /** Context menu ID for the "Paste" menu item to copy the current contents + of the clipboard into the text view. + */ + public static final int paste=0x01020022; + public static final int primary=0x0102000c; + public static final int progress=0x0102000d; + public static final int secondaryProgress=0x0102000f; + /** Context menu ID for the "Select All" menu item to select all text + in a text view. + */ + public static final int selectAll=0x0102001f; + /** Context menu ID for the "Select text..." menu item to switch to text + selection context mode in text views. + */ + public static final int selectTextMode=0x0102002d; + public static final int selectedIcon=0x0102000e; + /** Menu ID to perform a "start selecting text" operation. + */ + public static final int startSelectingText=0x01020028; + /** Menu ID to perform a "stop selecting text" operation. + */ + public static final int stopSelectingText=0x01020029; + public static final int summary=0x01020010; + /** Context menu ID for the "Input Method" menu item to being up the + input method picker dialog, allowing the user to switch to another + input method. + */ + public static final int switchInputMethod=0x01020024; + public static final int tabcontent=0x01020011; + public static final int tabhost=0x01020012; + public static final int tabs=0x01020013; + public static final int text1=0x01020014; + public static final int text2=0x01020015; + public static final int title=0x01020016; + public static final int toggle=0x01020017; + public static final int widget_frame=0x01020018; + } + public static final class integer { + /** The duration (in milliseconds) of a long animation. + */ + public static final int config_longAnimTime=0x010e0002; + /** The duration (in milliseconds) of a medium-length animation. + */ + public static final int config_mediumAnimTime=0x010e0001; + /** The duration (in milliseconds) of a short animation. + */ + public static final int config_shortAnimTime=0x010e0000; + /** Maximum numerical value that will be shown in a status bar + notification icon or in the notification itself. Will be replaced + with @string/status_bar_notification_info_overflow when shown in the + UI. + */ + public static final int status_bar_notification_info_maxnum=0x010e0003; + } + public static final class interpolator { + /** Acceleration curve matching a cubic ease out function. + */ + public static final int accelerate_cubic=0x010c0002; + /** Acceleration curve matching an ease in + ease out function + */ + public static final int accelerate_decelerate=0x010c0006; + /** Acceleration curve matching a quadtratic ease out function. + */ + public static final int accelerate_quad=0x010c0000; + /** Acceleration curve matching a quint ease out function. + */ + public static final int accelerate_quint=0x010c0004; + /** An interpolator where the change starts backward then flings forward. + */ + public static final int anticipate=0x010c0007; + /** An interpolator where the change starts backward then flings forward and + overshoots the target value and finally goes back to the final value. + */ + public static final int anticipate_overshoot=0x010c0009; + /** An interpolator where the change bounces at the end. + */ + public static final int bounce=0x010c000a; + /** Repeats the animation for one cycle. The rate of change follows a + sinusoidal pattern. + */ + public static final int cycle=0x010c000c; + /** Acceleration curve matching a cubic ease in function. + */ + public static final int decelerate_cubic=0x010c0003; + /** Acceleration curve matching a quadtratic ease in function. + */ + public static final int decelerate_quad=0x010c0001; + /** Acceleration curve matching a quint ease in function. + */ + public static final int decelerate_quint=0x010c0005; + /** An interpolator where the rate of change is constant. + */ + public static final int linear=0x010c000b; + /** An interpolator where the change flings forward and overshoots the last + value then comes back. + */ + public static final int overshoot=0x010c0008; + } + public static final class layout { + public static final int activity_list_item=0x01090000; + public static final int browser_link_context_header=0x0109000e; + public static final int expandable_list_content=0x01090001; + /** Standard content view for a {@link android.app.ListFragment}. + If you are implementing a subclass of ListFragment with your + own customized content, you can include this layout in that + content to still retain all of the standard functionality of + the base class. + */ + public static final int list_content=0x01090014; + public static final int preference_category=0x01090002; + public static final int select_dialog_item=0x01090011; + public static final int select_dialog_multichoice=0x01090013; + public static final int select_dialog_singlechoice=0x01090012; + public static final int simple_dropdown_item_1line=0x0109000a; + public static final int simple_expandable_list_item_1=0x01090006; + public static final int simple_expandable_list_item_2=0x01090007; + public static final int simple_gallery_item=0x0109000b; + public static final int simple_list_item_1=0x01090003; + public static final int simple_list_item_2=0x01090004; + /** A version of {@link #simple_list_item_1} that is able to change its + background state to indicate when it is activated (that is checked by + a ListView). + */ + public static final int simple_list_item_activated_1=0x01090016; + /** A version of {@link #simple_list_item_2} that is able to change its + background state to indicate when it is activated (that is checked by + a ListView). + */ + public static final int simple_list_item_activated_2=0x01090017; + public static final int simple_list_item_checked=0x01090005; + public static final int simple_list_item_multiple_choice=0x01090010; + public static final int simple_list_item_single_choice=0x0109000f; + /** A simple ListView item layout which can contain text and support (single or multiple) item selection. + */ + public static final int simple_selectable_list_item=0x01090015; + public static final int simple_spinner_dropdown_item=0x01090009; + public static final int simple_spinner_item=0x01090008; + public static final int test_list_item=0x0109000c; + public static final int two_line_list_item=0x0109000d; + } + public static final class menu { + } + public static final class mipmap { + /** Default icon for applications that don't specify an icon. + */ + public static final int sym_def_app_icon=0x010d0000; + } + public static final class plurals { + } + public static final class raw { + } + public static final class string { + /** Button to close error alert when a video cannot be played + */ + public static final int VideoView_error_button=0x01040010; + /** Text for error alert when a video container is not valid for progressive download/playback. + */ + public static final int VideoView_error_text_invalid_progressive_playback=0x01040015; + /** Text for error alert when a video cannot be played. it can be used by any app. + */ + public static final int VideoView_error_text_unknown=0x01040011; + /** Title for error alert when a video cannot be played. it can be used by any app. + */ + public static final int VideoView_error_title=0x01040012; + /** Preference framework strings. + */ + public static final int cancel=0x01040000; + /** Item on EditText context menu. This action is used to cut selected the text into the clipboard. + */ + public static final int copy=0x01040001; + /** Item on EditText context menu. This action is used to copy a URL from the edit field into the clipboard. + */ + public static final int copyUrl=0x01040002; + /** Item on EditText context menu. This action is used to cut selected the text into the clipboard. + */ + public static final int cut=0x01040003; + /** What the UI should display for "Msisdn" unless overridden by the SIM + */ + public static final int defaultMsisdnAlphaTag=0x01040005; + /** What the UI should display for "voice mail" unless overridden by the SIM + */ + public static final int defaultVoiceMailAlphaTag=0x01040004; + /** This is the generic "attention" string to be used in attention dialogs. Typically + combined with setIconAttribute(android.R.attr.alertDialogIcon) + (or setIcon(android.R.drawable.ic_dialog_alert) on legacy versions of the platform) + */ + public static final int dialog_alert_title=0x01040014; + /** How to display the lack of a phone number + */ + public static final int emptyPhoneNumber=0x01040006; + /** Displayed when a web request failed because the URL isn't in a valid form. + */ + public static final int httpErrorBadUrl=0x01040007; + /** Displayed when a web request failed because the protocol of the server is not supported. + */ + public static final int httpErrorUnsupportedScheme=0x01040008; + /** Preference framework strings. + */ + public static final int no=0x01040009; + /** Preference framework strings. + */ + public static final int ok=0x0104000a; + /** Item on EditText context menu. This action is used to paste from the clipboard into the eidt field + */ + public static final int paste=0x0104000b; + /** This is the default button label in the system-wide search UI. + It is also used by the home screen's search "widget". It should be short + */ + public static final int search_go=0x0104000c; + /** Item on EditText context menu. This action is used to select all text in the edit field. + */ + public static final int selectAll=0x0104000d; + /** Item on EditText context menu. Added only when the context menu is not empty, it enable selection context mode. [CHAR LIMIT=20] + */ + public static final int selectTextMode=0x01040016; + /** Text to use when the number in a notification info is too large + (greater than status_bar_notification_info_maxnum, defined in + values/config.xml) and must be truncated. May need to be localized + for most appropriate textual indicator of "more than X". + [CHAR LIMIT=4] + */ + public static final int status_bar_notification_info_overflow=0x01040017; + /** How to display the lack of a name + */ + public static final int unknownName=0x0104000e; + /** Used in Contacts for a field that has no label and in Note Pad + for a note with no name. + */ + public static final int untitled=0x0104000f; + /** Preference framework strings. + */ + public static final int yes=0x01040013; + } + public static final class style { + /** Base style for animations. This style specifies no animations. + */ + public static final int Animation=0x01030000; + /** Standard animations for a full-screen window or activity. + */ + public static final int Animation_Activity=0x01030001; + /** Standard animations for a non-full-screen window or activity. + */ + public static final int Animation_Dialog=0x01030002; + /** Window animations that are applied to input method overlay windows. + */ + public static final int Animation_InputMethod=0x01030056; + public static final int Animation_Toast=0x01030004; + /** Standard animations for a translucent window or activity. This + style is not used by default for the translucent theme + (since translucent activities are a special case that have no + clear UI paradigm), but you can make your own specialized theme + with this animation style if you would like to have the standard + platform transition animation. + */ + public static final int Animation_Translucent=0x01030003; + /** Style you can use with a container (typically a horizontal + LinearLayout) to get the standard "button bar" background and + spacing. @hide + */ + public static final int ButtonBar=0x01030058; + /** Other Styles + */ + public static final int DeviceDefault_ButtonBar=0x010301cf; + public static final int DeviceDefault_ButtonBar_AlertDialog=0x010301d0; + public static final int DeviceDefault_Light_ButtonBar=0x010301d2; + public static final int DeviceDefault_Light_ButtonBar_AlertDialog=0x010301d3; + public static final int DeviceDefault_Light_SegmentedButton=0x010301d4; + public static final int DeviceDefault_SegmentedButton=0x010301d1; + public static final int Holo_ButtonBar=0x010300e5; + public static final int Holo_ButtonBar_AlertDialog=0x010300e7; + public static final int Holo_Light_ButtonBar=0x010300e6; + public static final int Holo_Light_ButtonBar_AlertDialog=0x010300e8; + public static final int Holo_Light_SegmentedButton=0x010300ea; + public static final int Holo_SegmentedButton=0x010300e9; + public static final int MediaButton=0x01030037; + public static final int MediaButton_Ffwd=0x0103003b; + public static final int MediaButton_Next=0x01030039; + public static final int MediaButton_Pause=0x0103003d; + public static final int MediaButton_Play=0x0103003a; + public static final int MediaButton_Previous=0x01030038; + public static final int MediaButton_Rew=0x0103003c; + public static final int TextAppearance=0x0103003e; + /** Text Appearance Styles + */ + public static final int TextAppearance_DeviceDefault=0x010301ad; + public static final int TextAppearance_DeviceDefault_DialogWindowTitle=0x010301b8; + public static final int TextAppearance_DeviceDefault_Inverse=0x010301ae; + public static final int TextAppearance_DeviceDefault_Large=0x010301af; + public static final int TextAppearance_DeviceDefault_Large_Inverse=0x010301b0; + public static final int TextAppearance_DeviceDefault_Medium=0x010301b1; + public static final int TextAppearance_DeviceDefault_Medium_Inverse=0x010301b2; + public static final int TextAppearance_DeviceDefault_SearchResult_Subtitle=0x010301b6; + public static final int TextAppearance_DeviceDefault_SearchResult_Title=0x010301b5; + public static final int TextAppearance_DeviceDefault_Small=0x010301b3; + public static final int TextAppearance_DeviceDefault_Small_Inverse=0x010301b4; + public static final int TextAppearance_DeviceDefault_Widget=0x010301b9; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu=0x010301ce; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle=0x010301c7; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse=0x010301cb; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title=0x010301c6; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse=0x010301ca; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle=0x010301c9; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse=0x010301cd; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title=0x010301c8; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse=0x010301cc; + public static final int TextAppearance_DeviceDefault_Widget_Button=0x010301ba; + public static final int TextAppearance_DeviceDefault_Widget_DropDownHint=0x010301bf; + public static final int TextAppearance_DeviceDefault_Widget_DropDownItem=0x010301c0; + public static final int TextAppearance_DeviceDefault_Widget_EditText=0x010301c2; + public static final int TextAppearance_DeviceDefault_Widget_IconMenu_Item=0x010301bb; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu=0x010301c3; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Large=0x010301c4; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Small=0x010301c5; + public static final int TextAppearance_DeviceDefault_Widget_TabWidget=0x010301bc; + public static final int TextAppearance_DeviceDefault_Widget_TextView=0x010301bd; + public static final int TextAppearance_DeviceDefault_Widget_TextView_PopupMenu=0x010301be; + public static final int TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem=0x010301c1; + public static final int TextAppearance_DeviceDefault_WindowTitle=0x010301b7; + public static final int TextAppearance_DialogWindowTitle=0x01030041; + /** Begin Holo theme styles + Text Styles + */ + public static final int TextAppearance_Holo=0x010300fb; + public static final int TextAppearance_Holo_DialogWindowTitle=0x01030117; + public static final int TextAppearance_Holo_Inverse=0x010300fc; + public static final int TextAppearance_Holo_Large=0x010300fd; + public static final int TextAppearance_Holo_Large_Inverse=0x010300fe; + public static final int TextAppearance_Holo_Medium=0x010300ff; + public static final int TextAppearance_Holo_Medium_Inverse=0x01030100; + public static final int TextAppearance_Holo_SearchResult_Subtitle=0x01030104; + public static final int TextAppearance_Holo_SearchResult_Title=0x01030103; + public static final int TextAppearance_Holo_Small=0x01030101; + public static final int TextAppearance_Holo_Small_Inverse=0x01030102; + public static final int TextAppearance_Holo_Widget=0x01030105; + public static final int TextAppearance_Holo_Widget_ActionBar_Menu=0x01030120; + public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle=0x01030113; + public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse=0x0103011d; + public static final int TextAppearance_Holo_Widget_ActionBar_Title=0x01030112; + public static final int TextAppearance_Holo_Widget_ActionBar_Title_Inverse=0x0103011c; + public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle=0x01030115; + public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse=0x0103011f; + public static final int TextAppearance_Holo_Widget_ActionMode_Title=0x01030114; + public static final int TextAppearance_Holo_Widget_ActionMode_Title_Inverse=0x0103011e; + public static final int TextAppearance_Holo_Widget_Button=0x01030106; + public static final int TextAppearance_Holo_Widget_DropDownHint=0x0103010b; + public static final int TextAppearance_Holo_Widget_DropDownItem=0x0103010c; + public static final int TextAppearance_Holo_Widget_EditText=0x0103010e; + public static final int TextAppearance_Holo_Widget_IconMenu_Item=0x01030107; + public static final int TextAppearance_Holo_Widget_PopupMenu=0x0103010f; + public static final int TextAppearance_Holo_Widget_PopupMenu_Large=0x01030110; + public static final int TextAppearance_Holo_Widget_PopupMenu_Small=0x01030111; + /** This style is for smaller screens; values-xlarge defines a version + for larger screens. + */ + public static final int TextAppearance_Holo_Widget_TabWidget=0x01030108; + public static final int TextAppearance_Holo_Widget_TextView=0x01030109; + public static final int TextAppearance_Holo_Widget_TextView_PopupMenu=0x0103010a; + public static final int TextAppearance_Holo_Widget_TextView_SpinnerItem=0x0103010d; + public static final int TextAppearance_Holo_WindowTitle=0x01030116; + public static final int TextAppearance_Inverse=0x0103003f; + public static final int TextAppearance_Large=0x01030042; + public static final int TextAppearance_Large_Inverse=0x01030043; + public static final int TextAppearance_Medium=0x01030044; + public static final int TextAppearance_Medium_Inverse=0x01030045; + /** @hide + */ + public static final int TextAppearance_SearchResult_Subtitle=0x01030064; + /** @hide + */ + public static final int TextAppearance_SearchResult_Title=0x01030063; + public static final int TextAppearance_Small=0x01030046; + public static final int TextAppearance_Small_Inverse=0x01030047; + /** Notification content styles + */ + public static final int TextAppearance_StatusBar_EventContent=0x01030067; + public static final int TextAppearance_StatusBar_EventContent_Title=0x01030068; + public static final int TextAppearance_StatusBar_Icon=0x01030066; + public static final int TextAppearance_StatusBar_Title=0x01030065; + public static final int TextAppearance_SuggestionHighlight=0x01030118; + public static final int TextAppearance_Theme=0x01030040; + public static final int TextAppearance_Theme_Dialog=0x01030048; + public static final int TextAppearance_Widget=0x01030049; + public static final int TextAppearance_Widget_Button=0x0103004a; + public static final int TextAppearance_Widget_DropDownHint=0x01030050; + public static final int TextAppearance_Widget_DropDownItem=0x01030051; + public static final int TextAppearance_Widget_EditText=0x0103004c; + public static final int TextAppearance_Widget_IconMenu_Item=0x0103004b; + public static final int TextAppearance_Widget_PopupMenu_Large=0x01030080; + public static final int TextAppearance_Widget_PopupMenu_Small=0x01030081; + public static final int TextAppearance_Widget_TabWidget=0x0103004d; + public static final int TextAppearance_Widget_TextView=0x0103004e; + public static final int TextAppearance_Widget_TextView_PopupMenu=0x0103004f; + public static final int TextAppearance_Widget_TextView_SpinnerItem=0x01030052; + public static final int TextAppearance_WindowTitle=0x01030053; + /** The default theme for apps on API level 10 and lower. This is the theme used for + activities that have not explicitly set their own theme. +

You can count on this being a dark + background with light text on top, but should try to make no + other assumptions about its appearance. In particular, the text + inside of widgets using this theme may be completely different, + with the widget container being a light color and the text on top + of it a dark color. +

If you're developing for API level 11 and higher, you should instead use {@link + #Theme_Holo} or {@link #Theme_DeviceDefault}.

+ + */ + public static final int Theme=0x01030005; + /** Variant on {@link #Theme} that ensures the background is + completely black. This is useful for things like image viewers and + media players. If you want the normal (dark background) theme + do not use this, use {@link #Theme}. + */ + public static final int Theme_Black=0x01030008; + /** Variant of {@link #Theme_Black} with no title bar + */ + public static final int Theme_Black_NoTitleBar=0x01030009; + /** Variant of {@link #Theme_Black} that has no title bar and + no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Black_NoTitleBar_Fullscreen=0x0103000a; + /** The default theme for apps that target API level 14 and higher. +

The DeviceDefault themes are aliases for a specific device’s native look and feel. The + DeviceDefault theme family and widget style family offer ways for you to target your app + to a device’s native theme with all device customizations intact.

+

For example, when you set your app's {@code targetSdkVersion} to 14 or higher, this + theme is applied to your application by default. As such, your app might appear with the + {@link #Theme_Holo Holo} styles on one device, but with a different set of styles on + another device. This is great if you want your app to fit with the device's native look and + feel. If, however, you prefer to keep your UI style the same across all devices, you should + apply a specific theme such as {@link #Theme_Holo Holo} or one of your own design. For more + information, read Holo + Everywhere.

+

Styles used by the DeviceDefault theme are named using the convention + Type.DeviceDefault.Etc (for example, {@code Widget.DeviceDefault.Button} and + {@code TextAppearance.DeviceDefault.Widget.PopupMenu.Large}).

+ + */ + public static final int Theme_DeviceDefault=0x01030128; + /** DeviceDefault theme for dialog windows and activities. This changes the window to be + floating (not fill the entire screen), and puts a frame around its contents. You can set this + theme on an activity if you would like to make an activity that looks like a Dialog. + */ + public static final int Theme_DeviceDefault_Dialog=0x0103012e; + /** Variant of {@link #Theme_DeviceDefault_Dialog} that has a nice minimum width for a + regular dialog. + */ + public static final int Theme_DeviceDefault_Dialog_MinWidth=0x0103012f; + /** Variant of {@link #Theme_DeviceDefault_Dialog} without an action bar + */ + public static final int Theme_DeviceDefault_Dialog_NoActionBar=0x01030130; + /** Variant of {@link #Theme_DeviceDefault_Dialog_NoActionBar} that has a nice minimum width + for a regular dialog. + */ + public static final int Theme_DeviceDefault_Dialog_NoActionBar_MinWidth=0x01030131; + /** DeviceDefault theme for a window that will be displayed either full-screen on smaller + screens (small, normal) or as a dialog on larger screens (large, xlarge). + */ + public static final int Theme_DeviceDefault_DialogWhenLarge=0x01030136; + /** DeviceDefault theme for a window without an action bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens (large, + xlarge). + */ + public static final int Theme_DeviceDefault_DialogWhenLarge_NoActionBar=0x01030137; + /** DeviceDefault style for input methods, which is used by the + {@link android.inputmethodservice.InputMethodService} class. + */ + public static final int Theme_DeviceDefault_InputMethod=0x0103013e; + /** Variant of {@link #Theme_DeviceDefault} with a light-colored style + */ + public static final int Theme_DeviceDefault_Light=0x0103012b; + /** Variant of the DeviceDefault (light) theme that has a solid (opaque) action bar with an + inverse color profile. + */ + public static final int Theme_DeviceDefault_Light_DarkActionBar=0x0103013f; + /** DeviceDefault light theme for dialog windows and activities. This changes the window to be + floating (not fill the entire screen), and puts a frame around its contents. You can set this + theme on an activity if you would like to make an activity that looks like a Dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog=0x01030132; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog} that has a nice minimum width for a + regular dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog_MinWidth=0x01030133; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog} without an action bar + */ + public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar=0x01030134; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog_NoActionBar} that has a nice minimum + width for a regular dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth=0x01030135; + /** DeviceDefault light theme for a window that will be displayed either full-screen on smaller + screens (small, normal) or as a dialog on larger screens (large, xlarge). + */ + public static final int Theme_DeviceDefault_Light_DialogWhenLarge=0x01030138; + /** DeviceDefault light theme for a window without an action bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens (large, + xlarge). + */ + public static final int Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar=0x01030139; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar + */ + public static final int Theme_DeviceDefault_Light_NoActionBar=0x0103012c; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar and no status bar. + This theme sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_Fullscreen=0x0103012d; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar and no status bar + and extending in to overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_Overscan=0x010301e0; + /** Variant of {@link #Theme_DeviceDefault_Light} that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor=0x010301e4; + /** DeviceDefault light theme for panel windows. This removes all extraneous window + decorations, so you basically have an empty rectangle in which to place your content. It makes + the window floating, with a transparent background, and turns off dimming behind the window. + */ + public static final int Theme_DeviceDefault_Light_Panel=0x0103013b; + /** Variant of {@link #Theme_DeviceDefault} with no action bar + */ + public static final int Theme_DeviceDefault_NoActionBar=0x01030129; + /** Variant of {@link #Theme_DeviceDefault} with no action bar and no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_Fullscreen=0x0103012a; + /** Variant of {@link #Theme_DeviceDefault} with no action bar and no status bar and + extending in to overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_Overscan=0x010301df; + /** Variant of {@link #Theme_DeviceDefault} that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_TranslucentDecor=0x010301e3; + /** DeviceDefault theme for panel windows. This removes all extraneous window + decorations, so you basically have an empty rectangle in which to place your content. It makes + the window floating, with a transparent background, and turns off dimming behind the window. + */ + public static final int Theme_DeviceDefault_Panel=0x0103013a; + /** DeviceDefault theme for windows that want to have the user's selected wallpaper appear + behind them. + */ + public static final int Theme_DeviceDefault_Wallpaper=0x0103013c; + /** DeviceDefault theme for windows that want to have the user's selected wallpaper appear + behind them and without an action bar. + */ + public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar=0x0103013d; + /** Default theme for dialog windows and activities (on API level 10 and lower), + which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + */ + public static final int Theme_Dialog=0x0103000b; + /** Honeycomb holographic theme (dark version). +

This is the default system theme for apps that target API level 11 - 13. Starting + with API level 14, the default system theme is supplied by {@link #Theme_DeviceDefault}, + which might apply a different style on different devices. If you want to ensure that your + app consistently uses the Holo theme at all times, you must explicitly declare it in your + manifest. For example, {@code <application android:theme="@android:style/Theme.Holo">}. + For more information, read Holo + Everywhere.

+

The widgets in the holographic theme are translucent on their background, so + applications must ensure that any background they use with this theme is itself + dark; otherwise, it will be difficult to see the widgets. This UI style also includes a + full action bar by default.

+ +

Styles used by the Holo theme are named using the convention Type.Holo.Etc + (for example, {@code Widget.Holo.Button} and {@code + TextAppearance.Holo.Widget.PopupMenu.Large}). + Specific resources used by Holo are named using the convention @type/foo_bar_baz_holo + with trailing _dark or _light specifiers if they are not shared between both light and + dark versions of the theme. + */ + public static final int Theme_Holo=0x0103006b; + /** Holo theme for dialog windows and activities, which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + This is the default Dialog theme for applications targeting Honeycomb + or newer. + */ + public static final int Theme_Holo_Dialog=0x0103006f; + /** Variant of Theme.Holo.Dialog that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Dialog_MinWidth=0x01030070; + /** Variant of Theme.Holo.Dialog that does not include a title bar. + */ + public static final int Theme_Holo_Dialog_NoActionBar=0x01030071; + /** Variant of Theme.Holo.Dialog.NoActionBar that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Dialog_NoActionBar_MinWidth=0x01030072; + /** Theme for a window that will be displayed either full-screen on + smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_DialogWhenLarge=0x01030077; + /** Theme for a window without a title bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_DialogWhenLarge_NoActionBar=0x01030078; + /** Default theme for holo style input methods, which is used by the + {@link android.inputmethodservice.InputMethodService} class. + this inherits from Theme.Panel, but sets up IME appropriate animations + and a few custom attributes. + */ + public static final int Theme_Holo_InputMethod=0x0103007f; + /** Honeycomb holographic theme (light version). The widgets in the + holographic theme are translucent on their brackground, so applications + must ensure that any background they use with this theme is itself + light; otherwise, it will be difficult to see the widgets. This + UI style also includes a full action bar by default. + */ + public static final int Theme_Holo_Light=0x0103006e; + /** Variant of the holographic (light) theme that has a solid (opaque) action bar + with an inverse color profile. The dark action bar sharply stands out against + the light content. + */ + public static final int Theme_Holo_Light_DarkActionBar=0x01030119; + /** Light holo dialog themes + Holo light theme for dialog windows and activities, which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + This is the default Dialog theme for applications targeting Honeycomb + or newer. + */ + public static final int Theme_Holo_Light_Dialog=0x01030073; + /** Variant of Theme.Holo.Light.Dialog that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Light_Dialog_MinWidth=0x01030074; + /** Variant of Theme.Holo.Light.Dialog that does not include a title bar. + */ + public static final int Theme_Holo_Light_Dialog_NoActionBar=0x01030075; + /** Variant of Theme.Holo.Light.Dialog.NoActionBar that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth=0x01030076; + /** Theme for a window that will be displayed either full-screen on + smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_Light_DialogWhenLarge=0x01030079; + /** Theme for a window without an action bar that will be displayed either full-screen + on smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar=0x0103007a; + /** Variant of the holographic (light) theme with no action bar. + */ + public static final int Theme_Holo_Light_NoActionBar=0x010300f0; + /** Variant of the holographic (light) theme that has no title bar and fills + the entire screen. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Holo_Light_NoActionBar_Fullscreen=0x010300f1; + /** Variant of the holographic (light) theme that has no title bar and fills + the entire screen and extends into the display overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_Holo_Light_NoActionBar_Overscan=0x010301de; + /** Variant of the holographic (light) theme that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor=0x010301e2; + /** Default holo light theme for panel windows. This removes all extraneous + window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Holo_Light_Panel=0x0103007c; + /** Variant of the holographic (dark) theme with no action bar. + */ + public static final int Theme_Holo_NoActionBar=0x0103006c; + /** Variant of the holographic (dark) theme that has no title bar and fills + the entire screen. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Holo_NoActionBar_Fullscreen=0x0103006d; + /** Variant of the holographic (dark) theme that has no title bar and fills + the entire screen and extends into the display overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_Holo_NoActionBar_Overscan=0x010301dd; + /** Variant of the holographic (dark) theme that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_Holo_NoActionBar_TranslucentDecor=0x010301e1; + /** Default holo dark theme for panel windows. This removes all extraneous + window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Holo_Panel=0x0103007b; + /** Default holographic (dark) for windows that want to have the user's selected + wallpaper appear behind them. + */ + public static final int Theme_Holo_Wallpaper=0x0103007d; + /** Default holographic (dark) for windows that want to have the user's selected + wallpaper appear behind them and without an action bar. + */ + public static final int Theme_Holo_Wallpaper_NoTitleBar=0x0103007e; + /** Default theme for input methods (on API level 10 and lower), which is used by the + {@link android.inputmethodservice.InputMethodService} class. + this inherits from Theme.Panel, but sets up IME appropriate animations + and a few custom attributes. + */ + public static final int Theme_InputMethod=0x01030054; + /** Theme for a light background with dark text on top. Set your activity + to this theme if you would like such an appearance. As with the + default theme, you should try to assume little more than that the + background will be a light color. +

This is designed for API level 10 and lower.

+ */ + public static final int Theme_Light=0x0103000c; + /** Variant of {@link #Theme_Light} with no title bar + */ + public static final int Theme_Light_NoTitleBar=0x0103000d; + /** Variant of {@link #Theme_Light} that has no title bar and + no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Light_NoTitleBar_Fullscreen=0x0103000e; + /** Default light theme for panel windows (on API level 10 and lower). This removes all + extraneous window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Light_Panel=0x0103005a; + /** Theme for a wallpaper's setting activity, which is designed to be a transparent + background with a light shade, so the previous Activity is visible in the background. + */ + public static final int Theme_Light_WallpaperSettings=0x01030062; + /** Default theme for activities that don't actually display a UI; that + is, they finish themselves before being resumed. + */ + public static final int Theme_NoDisplay=0x01030055; + /** Variant of {@link #Theme} with no title bar + */ + public static final int Theme_NoTitleBar=0x01030006; + /** Variant of {@link #Theme} that has no title bar and no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_NoTitleBar_Fullscreen=0x01030007; + /** No title bar, but Action Mode bars will overlay application content + instead of pushing it down to make room. + */ + public static final int Theme_NoTitleBar_OverlayActionModes=0x0103006a; + /** Default dark theme for panel windows (on API level 10 and lower). This removes all + extraneous window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Panel=0x01030059; + /** Theme for translucent activities (on API level 10 and lower). That is, windows + that allow you to see through them to the windows behind. This sets up the translucent + flag and appropriate animations for your windows. + */ + public static final int Theme_Translucent=0x0103000f; + /** Variant of {@link #Theme_Translucent} with no title bar + */ + public static final int Theme_Translucent_NoTitleBar=0x01030010; + /** Variant of {@link #Theme_Translucent} that has no title bar and + no status bar + */ + public static final int Theme_Translucent_NoTitleBar_Fullscreen=0x01030011; + /** Theme for windows that want to have the user's selected + wallpaper appear behind them (for API level 10 and lower). + */ + public static final int Theme_Wallpaper=0x0103005e; + /** Variant of {@link #Theme_Wallpaper} that has no title bar + */ + public static final int Theme_Wallpaper_NoTitleBar=0x0103005f; + /** Variant of {@link #Theme_Wallpaper} that + has no title bar or status bar. + */ + public static final int Theme_Wallpaper_NoTitleBar_Fullscreen=0x01030060; + /** Theme for a wallpaper's setting activity, which is designed to be a transparent + background with a dark shade, so the previous Activity is visible in the background. + */ + public static final int Theme_WallpaperSettings=0x01030061; + /** Default theme with an Action Bar. + */ + public static final int Theme_WithActionBar=0x01030069; + /** Widget Styles + */ + public static final int Widget=0x01030012; + public static final int Widget_AbsListView=0x01030013; + public static final int Widget_ActionBar=0x01030082; + public static final int Widget_ActionBar_TabBar=0x010300f4; + public static final int Widget_ActionBar_TabText=0x010300f3; + public static final int Widget_ActionBar_TabView=0x010300f2; + public static final int Widget_ActionButton=0x01030084; + public static final int Widget_ActionButton_CloseMode=0x01030088; + public static final int Widget_ActionButton_Overflow=0x01030087; + public static final int Widget_AutoCompleteTextView=0x01030027; + public static final int Widget_Button=0x01030014; + public static final int Widget_Button_Inset=0x01030015; + public static final int Widget_Button_Small=0x01030016; + public static final int Widget_Button_Toggle=0x01030017; + public static final int Widget_CalendarView=0x010300eb; + public static final int Widget_CompoundButton=0x01030018; + public static final int Widget_CompoundButton_CheckBox=0x01030019; + public static final int Widget_CompoundButton_RadioButton=0x0103001a; + public static final int Widget_CompoundButton_Star=0x0103001b; + public static final int Widget_DatePicker=0x010300ee; + /** Widget Styles + */ + public static final int Widget_DeviceDefault=0x01030140; + public static final int Widget_DeviceDefault_ActionBar=0x0103016b; + public static final int Widget_DeviceDefault_ActionBar_Solid=0x01030173; + public static final int Widget_DeviceDefault_ActionBar_TabBar=0x01030172; + public static final int Widget_DeviceDefault_ActionBar_TabText=0x01030171; + public static final int Widget_DeviceDefault_ActionBar_TabView=0x01030170; + public static final int Widget_DeviceDefault_ActionButton=0x01030166; + public static final int Widget_DeviceDefault_ActionButton_CloseMode=0x0103016a; + public static final int Widget_DeviceDefault_ActionButton_Overflow=0x01030167; + public static final int Widget_DeviceDefault_ActionButton_TextButton=0x01030168; + public static final int Widget_DeviceDefault_ActionMode=0x01030169; + public static final int Widget_DeviceDefault_AutoCompleteTextView=0x01030147; + public static final int Widget_DeviceDefault_Button=0x01030141; + public static final int Widget_DeviceDefault_Button_Borderless=0x0103016c; + public static final int Widget_DeviceDefault_Button_Borderless_Small=0x01030145; + public static final int Widget_DeviceDefault_Button_Inset=0x01030143; + public static final int Widget_DeviceDefault_Button_Small=0x01030142; + public static final int Widget_DeviceDefault_Button_Toggle=0x01030144; + public static final int Widget_DeviceDefault_CalendarView=0x0103016e; + public static final int Widget_DeviceDefault_CheckedTextView=0x010301db; + public static final int Widget_DeviceDefault_CompoundButton_CheckBox=0x01030148; + public static final int Widget_DeviceDefault_CompoundButton_RadioButton=0x01030159; + public static final int Widget_DeviceDefault_CompoundButton_Star=0x0103015d; + public static final int Widget_DeviceDefault_DatePicker=0x0103016f; + public static final int Widget_DeviceDefault_DropDownItem=0x01030161; + public static final int Widget_DeviceDefault_DropDownItem_Spinner=0x01030162; + public static final int Widget_DeviceDefault_EditText=0x0103014a; + public static final int Widget_DeviceDefault_ExpandableListView=0x0103014b; + public static final int Widget_DeviceDefault_GridView=0x0103014c; + public static final int Widget_DeviceDefault_HorizontalScrollView=0x0103015b; + public static final int Widget_DeviceDefault_ImageButton=0x0103014d; + public static final int Widget_DeviceDefault_Light=0x01030174; + public static final int Widget_DeviceDefault_Light_ActionBar=0x010301a3; + public static final int Widget_DeviceDefault_Light_ActionBar_Solid=0x010301a7; + public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse=0x010301a8; + public static final int Widget_DeviceDefault_Light_ActionBar_TabBar=0x010301a6; + public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse=0x010301a9; + public static final int Widget_DeviceDefault_Light_ActionBar_TabText=0x010301a5; + public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse=0x010301ab; + public static final int Widget_DeviceDefault_Light_ActionBar_TabView=0x010301a4; + public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse=0x010301aa; + public static final int Widget_DeviceDefault_Light_ActionButton=0x0103019f; + public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode=0x010301a2; + public static final int Widget_DeviceDefault_Light_ActionButton_Overflow=0x010301a0; + public static final int Widget_DeviceDefault_Light_ActionMode=0x010301a1; + public static final int Widget_DeviceDefault_Light_ActionMode_Inverse=0x010301ac; + public static final int Widget_DeviceDefault_Light_AutoCompleteTextView=0x0103017b; + public static final int Widget_DeviceDefault_Light_Button=0x01030175; + public static final int Widget_DeviceDefault_Light_Button_Borderless_Small=0x01030179; + public static final int Widget_DeviceDefault_Light_Button_Inset=0x01030177; + public static final int Widget_DeviceDefault_Light_Button_Small=0x01030176; + public static final int Widget_DeviceDefault_Light_Button_Toggle=0x01030178; + public static final int Widget_DeviceDefault_Light_CalendarView=0x0103019e; + public static final int Widget_DeviceDefault_Light_CheckedTextView=0x010301dc; + public static final int Widget_DeviceDefault_Light_CompoundButton_CheckBox=0x0103017c; + public static final int Widget_DeviceDefault_Light_CompoundButton_RadioButton=0x01030190; + public static final int Widget_DeviceDefault_Light_CompoundButton_Star=0x01030194; + public static final int Widget_DeviceDefault_Light_DropDownItem=0x01030198; + public static final int Widget_DeviceDefault_Light_DropDownItem_Spinner=0x01030199; + public static final int Widget_DeviceDefault_Light_EditText=0x0103017e; + public static final int Widget_DeviceDefault_Light_ExpandableListView=0x0103017f; + public static final int Widget_DeviceDefault_Light_GridView=0x01030180; + public static final int Widget_DeviceDefault_Light_HorizontalScrollView=0x01030192; + public static final int Widget_DeviceDefault_Light_ImageButton=0x01030181; + public static final int Widget_DeviceDefault_Light_ListPopupWindow=0x0103019b; + public static final int Widget_DeviceDefault_Light_ListView=0x01030182; + public static final int Widget_DeviceDefault_Light_ListView_DropDown=0x0103017d; + public static final int Widget_DeviceDefault_Light_MediaRouteButton=0x010301d8; + public static final int Widget_DeviceDefault_Light_PopupMenu=0x0103019c; + public static final int Widget_DeviceDefault_Light_PopupWindow=0x01030183; + public static final int Widget_DeviceDefault_Light_ProgressBar=0x01030184; + public static final int Widget_DeviceDefault_Light_ProgressBar_Horizontal=0x01030185; + public static final int Widget_DeviceDefault_Light_ProgressBar_Inverse=0x01030189; + public static final int Widget_DeviceDefault_Light_ProgressBar_Large=0x01030188; + public static final int Widget_DeviceDefault_Light_ProgressBar_Large_Inverse=0x0103018b; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small=0x01030186; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Inverse=0x0103018a; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Title=0x01030187; + public static final int Widget_DeviceDefault_Light_RatingBar=0x0103018d; + public static final int Widget_DeviceDefault_Light_RatingBar_Indicator=0x0103018e; + public static final int Widget_DeviceDefault_Light_RatingBar_Small=0x0103018f; + public static final int Widget_DeviceDefault_Light_ScrollView=0x01030191; + public static final int Widget_DeviceDefault_Light_SeekBar=0x0103018c; + public static final int Widget_DeviceDefault_Light_Spinner=0x01030193; + public static final int Widget_DeviceDefault_Light_Tab=0x0103019d; + public static final int Widget_DeviceDefault_Light_TabWidget=0x01030195; + public static final int Widget_DeviceDefault_Light_TextView=0x0103017a; + public static final int Widget_DeviceDefault_Light_TextView_SpinnerItem=0x0103019a; + public static final int Widget_DeviceDefault_Light_WebTextView=0x01030196; + public static final int Widget_DeviceDefault_Light_WebView=0x01030197; + public static final int Widget_DeviceDefault_ListPopupWindow=0x01030164; + public static final int Widget_DeviceDefault_ListView=0x0103014e; + public static final int Widget_DeviceDefault_ListView_DropDown=0x01030149; + public static final int Widget_DeviceDefault_MediaRouteButton=0x010301d7; + public static final int Widget_DeviceDefault_PopupMenu=0x01030165; + public static final int Widget_DeviceDefault_PopupWindow=0x0103014f; + public static final int Widget_DeviceDefault_ProgressBar=0x01030150; + public static final int Widget_DeviceDefault_ProgressBar_Horizontal=0x01030151; + public static final int Widget_DeviceDefault_ProgressBar_Large=0x01030154; + public static final int Widget_DeviceDefault_ProgressBar_Small=0x01030152; + public static final int Widget_DeviceDefault_ProgressBar_Small_Title=0x01030153; + public static final int Widget_DeviceDefault_RatingBar=0x01030156; + public static final int Widget_DeviceDefault_RatingBar_Indicator=0x01030157; + public static final int Widget_DeviceDefault_RatingBar_Small=0x01030158; + public static final int Widget_DeviceDefault_ScrollView=0x0103015a; + public static final int Widget_DeviceDefault_SeekBar=0x01030155; + public static final int Widget_DeviceDefault_Spinner=0x0103015c; + public static final int Widget_DeviceDefault_Tab=0x0103016d; + public static final int Widget_DeviceDefault_TabWidget=0x0103015e; + public static final int Widget_DeviceDefault_TextView=0x01030146; + public static final int Widget_DeviceDefault_TextView_SpinnerItem=0x01030163; + public static final int Widget_DeviceDefault_WebTextView=0x0103015f; + public static final int Widget_DeviceDefault_WebView=0x01030160; + public static final int Widget_DropDownItem=0x0103002b; + public static final int Widget_DropDownItem_Spinner=0x0103002c; + public static final int Widget_EditText=0x01030023; + public static final int Widget_ExpandableListView=0x01030024; + /** Default style for {@link android.app.FragmentBreadCrumbs} view. + */ + public static final int Widget_FragmentBreadCrumbs=0x01030089; + public static final int Widget_Gallery=0x01030035; + public static final int Widget_GridView=0x01030032; + /** Widget Styles + */ + public static final int Widget_Holo=0x0103008a; + public static final int Widget_Holo_ActionBar=0x010300b4; + public static final int Widget_Holo_ActionBar_Solid=0x01030121; + public static final int Widget_Holo_ActionBar_TabBar=0x010300f7; + public static final int Widget_Holo_ActionBar_TabText=0x010300f6; + public static final int Widget_Holo_ActionBar_TabView=0x010300f5; + public static final int Widget_Holo_ActionButton=0x010300af; + public static final int Widget_Holo_ActionButton_CloseMode=0x010300b3; + public static final int Widget_Holo_ActionButton_Overflow=0x010300b0; + public static final int Widget_Holo_ActionButton_TextButton=0x010300b1; + public static final int Widget_Holo_ActionMode=0x010300b2; + public static final int Widget_Holo_AutoCompleteTextView=0x01030090; + public static final int Widget_Holo_Button=0x0103008b; + public static final int Widget_Holo_Button_Borderless=0x010300e2; + public static final int Widget_Holo_Button_Borderless_Small=0x0103011a; + public static final int Widget_Holo_Button_Inset=0x0103008d; + public static final int Widget_Holo_Button_Small=0x0103008c; + public static final int Widget_Holo_Button_Toggle=0x0103008e; + public static final int Widget_Holo_CalendarView=0x010300ec; + public static final int Widget_Holo_CheckedTextView=0x010301d9; + public static final int Widget_Holo_CompoundButton_CheckBox=0x01030091; + public static final int Widget_Holo_CompoundButton_RadioButton=0x010300a2; + public static final int Widget_Holo_CompoundButton_Star=0x010300a6; + public static final int Widget_Holo_DatePicker=0x010300ef; + public static final int Widget_Holo_DropDownItem=0x010300aa; + public static final int Widget_Holo_DropDownItem_Spinner=0x010300ab; + public static final int Widget_Holo_EditText=0x01030093; + public static final int Widget_Holo_ExpandableListView=0x01030094; + public static final int Widget_Holo_GridView=0x01030095; + public static final int Widget_Holo_HorizontalScrollView=0x010300a4; + public static final int Widget_Holo_ImageButton=0x01030096; + /** Light widget styles + */ + public static final int Widget_Holo_Light=0x010300b5; + public static final int Widget_Holo_Light_ActionBar=0x010300e1; + public static final int Widget_Holo_Light_ActionBar_Solid=0x01030122; + public static final int Widget_Holo_Light_ActionBar_Solid_Inverse=0x01030123; + public static final int Widget_Holo_Light_ActionBar_TabBar=0x010300fa; + public static final int Widget_Holo_Light_ActionBar_TabBar_Inverse=0x01030124; + public static final int Widget_Holo_Light_ActionBar_TabText=0x010300f9; + public static final int Widget_Holo_Light_ActionBar_TabText_Inverse=0x01030126; + public static final int Widget_Holo_Light_ActionBar_TabView=0x010300f8; + public static final int Widget_Holo_Light_ActionBar_TabView_Inverse=0x01030125; + public static final int Widget_Holo_Light_ActionButton=0x010300dd; + public static final int Widget_Holo_Light_ActionButton_CloseMode=0x010300e0; + public static final int Widget_Holo_Light_ActionButton_Overflow=0x010300de; + public static final int Widget_Holo_Light_ActionMode=0x010300df; + public static final int Widget_Holo_Light_ActionMode_Inverse=0x01030127; + public static final int Widget_Holo_Light_AutoCompleteTextView=0x010300bb; + public static final int Widget_Holo_Light_Button=0x010300b6; + public static final int Widget_Holo_Light_Button_Borderless_Small=0x0103011b; + public static final int Widget_Holo_Light_Button_Inset=0x010300b8; + public static final int Widget_Holo_Light_Button_Small=0x010300b7; + public static final int Widget_Holo_Light_Button_Toggle=0x010300b9; + public static final int Widget_Holo_Light_CalendarView=0x010300ed; + public static final int Widget_Holo_Light_CheckedTextView=0x010301da; + public static final int Widget_Holo_Light_CompoundButton_CheckBox=0x010300bc; + public static final int Widget_Holo_Light_CompoundButton_RadioButton=0x010300d0; + public static final int Widget_Holo_Light_CompoundButton_Star=0x010300d4; + public static final int Widget_Holo_Light_DropDownItem=0x010300d8; + public static final int Widget_Holo_Light_DropDownItem_Spinner=0x010300d9; + public static final int Widget_Holo_Light_EditText=0x010300be; + public static final int Widget_Holo_Light_ExpandableListView=0x010300bf; + public static final int Widget_Holo_Light_GridView=0x010300c0; + public static final int Widget_Holo_Light_HorizontalScrollView=0x010300d2; + public static final int Widget_Holo_Light_ImageButton=0x010300c1; + public static final int Widget_Holo_Light_ListPopupWindow=0x010300db; + public static final int Widget_Holo_Light_ListView=0x010300c2; + public static final int Widget_Holo_Light_ListView_DropDown=0x010300bd; + public static final int Widget_Holo_Light_MediaRouteButton=0x010301d6; + public static final int Widget_Holo_Light_PopupMenu=0x010300dc; + public static final int Widget_Holo_Light_PopupWindow=0x010300c3; + public static final int Widget_Holo_Light_ProgressBar=0x010300c4; + public static final int Widget_Holo_Light_ProgressBar_Horizontal=0x010300c5; + public static final int Widget_Holo_Light_ProgressBar_Inverse=0x010300c9; + public static final int Widget_Holo_Light_ProgressBar_Large=0x010300c8; + public static final int Widget_Holo_Light_ProgressBar_Large_Inverse=0x010300cb; + public static final int Widget_Holo_Light_ProgressBar_Small=0x010300c6; + public static final int Widget_Holo_Light_ProgressBar_Small_Inverse=0x010300ca; + public static final int Widget_Holo_Light_ProgressBar_Small_Title=0x010300c7; + public static final int Widget_Holo_Light_RatingBar=0x010300cd; + public static final int Widget_Holo_Light_RatingBar_Indicator=0x010300ce; + public static final int Widget_Holo_Light_RatingBar_Small=0x010300cf; + public static final int Widget_Holo_Light_ScrollView=0x010300d1; + public static final int Widget_Holo_Light_SeekBar=0x010300cc; + public static final int Widget_Holo_Light_Spinner=0x010300d3; + public static final int Widget_Holo_Light_Tab=0x010300e4; + public static final int Widget_Holo_Light_TabWidget=0x010300d5; + public static final int Widget_Holo_Light_TextView=0x010300ba; + public static final int Widget_Holo_Light_TextView_SpinnerItem=0x010300da; + public static final int Widget_Holo_Light_WebTextView=0x010300d6; + public static final int Widget_Holo_Light_WebView=0x010300d7; + public static final int Widget_Holo_ListPopupWindow=0x010300ad; + public static final int Widget_Holo_ListView=0x01030097; + public static final int Widget_Holo_ListView_DropDown=0x01030092; + public static final int Widget_Holo_MediaRouteButton=0x010301d5; + public static final int Widget_Holo_PopupMenu=0x010300ae; + public static final int Widget_Holo_PopupWindow=0x01030098; + public static final int Widget_Holo_ProgressBar=0x01030099; + public static final int Widget_Holo_ProgressBar_Horizontal=0x0103009a; + public static final int Widget_Holo_ProgressBar_Large=0x0103009d; + public static final int Widget_Holo_ProgressBar_Small=0x0103009b; + public static final int Widget_Holo_ProgressBar_Small_Title=0x0103009c; + public static final int Widget_Holo_RatingBar=0x0103009f; + public static final int Widget_Holo_RatingBar_Indicator=0x010300a0; + public static final int Widget_Holo_RatingBar_Small=0x010300a1; + public static final int Widget_Holo_ScrollView=0x010300a3; + public static final int Widget_Holo_SeekBar=0x0103009e; + public static final int Widget_Holo_Spinner=0x010300a5; + public static final int Widget_Holo_Tab=0x010300e3; + public static final int Widget_Holo_TabWidget=0x010300a7; + public static final int Widget_Holo_TextView=0x0103008f; + public static final int Widget_Holo_TextView_SpinnerItem=0x010300ac; + public static final int Widget_Holo_WebTextView=0x010300a8; + public static final int Widget_Holo_WebView=0x010300a9; + public static final int Widget_ImageButton=0x01030026; + public static final int Widget_ImageWell=0x01030025; + public static final int Widget_KeyboardView=0x01030057; + public static final int Widget_ListPopupWindow=0x01030085; + public static final int Widget_ListView=0x0103002e; + public static final int Widget_ListView_DropDown=0x01030030; + public static final int Widget_ListView_Menu=0x01030031; + public static final int Widget_ListView_White=0x0103002f; + public static final int Widget_PopupMenu=0x01030086; + public static final int Widget_PopupWindow=0x01030036; + public static final int Widget_ProgressBar=0x0103001c; + public static final int Widget_ProgressBar_Horizontal=0x0103001f; + public static final int Widget_ProgressBar_Inverse=0x0103005b; + public static final int Widget_ProgressBar_Large=0x0103001d; + public static final int Widget_ProgressBar_Large_Inverse=0x0103005c; + public static final int Widget_ProgressBar_Small=0x0103001e; + public static final int Widget_ProgressBar_Small_Inverse=0x0103005d; + public static final int Widget_RatingBar=0x01030021; + public static final int Widget_ScrollView=0x0103002d; + public static final int Widget_SeekBar=0x01030020; + public static final int Widget_Spinner=0x01030028; + public static final int Widget_Spinner_DropDown=0x01030083; + public static final int Widget_TabWidget=0x01030034; + public static final int Widget_TextView=0x01030022; + public static final int Widget_TextView_PopupMenu=0x01030029; + public static final int Widget_TextView_SpinnerItem=0x0103002a; + public static final int Widget_WebView=0x01030033; + } + public static final class xml { + } + /** @doconly */ + public static final class styleable { + /** Attributes that can be used with a AbsListView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #AbsListView_cacheColorHint android:cacheColorHint} Indicates that this list will always be drawn on top of solid, single-color + opaque background.
{@link #AbsListView_choiceMode android:choiceMode} Defines the choice behavior for the view.
{@link #AbsListView_drawSelectorOnTop android:drawSelectorOnTop} When set to true, the selector will be drawn over the selected item.
{@link #AbsListView_fastScrollAlwaysVisible android:fastScrollAlwaysVisible} When set to true, the list will always show the fast scroll interface.
{@link #AbsListView_fastScrollEnabled android:fastScrollEnabled} Enables the fast scroll thumb that can be dragged to quickly scroll through + the list.
{@link #AbsListView_listSelector android:listSelector} Drawable used to indicate the currently selected item in the list.
{@link #AbsListView_scrollingCache android:scrollingCache} When set to true, the list uses a drawing cache during scrolling.
{@link #AbsListView_smoothScrollbar android:smoothScrollbar} When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen.
{@link #AbsListView_stackFromBottom android:stackFromBottom} Used by ListView and GridView to stack their content from the bottom.
{@link #AbsListView_textFilterEnabled android:textFilterEnabled} When set to true, the list will filter results as the user types.
{@link #AbsListView_transcriptMode android:transcriptMode} Sets the transcript mode for the list.
+ @see #AbsListView_cacheColorHint + @see #AbsListView_choiceMode + @see #AbsListView_drawSelectorOnTop + @see #AbsListView_fastScrollAlwaysVisible + @see #AbsListView_fastScrollEnabled + @see #AbsListView_listSelector + @see #AbsListView_scrollingCache + @see #AbsListView_smoothScrollbar + @see #AbsListView_stackFromBottom + @see #AbsListView_textFilterEnabled + @see #AbsListView_transcriptMode + */ + public static final int[] AbsListView = { + 0x010100fb, 0x010100fc, 0x010100fd, 0x010100fe, + 0x010100ff, 0x01010100, 0x01010101, 0x0101012b, + 0x01010226, 0x01010231, 0x01010335 + }; + /** +

+ @attr description + Indicates that this list will always be drawn on top of solid, single-color + opaque background. This allows the list to optimize drawing. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cacheColorHint}. + @attr name android:cacheColorHint + */ + public static final int AbsListView_cacheColorHint = 6; + /** +

+ @attr description + Defines the choice behavior for the view. By default, lists do not have + any choice behavior. By setting the choiceMode to singleChoice, the list + allows up to one item to be in a chosen state. By setting the choiceMode to + multipleChoice, the list allows any number of items to be chosen. + Finally, by setting the choiceMode to multipleChoiceModal the list allows + any number of items to be chosen in a special selection mode. + The application will supply a + {@link android.widget.AbsListView.MultiChoiceModeListener} using + {@link android.widget.AbsListView#setMultiChoiceModeListener} to control the + selection mode. This uses the {@link android.view.ActionMode} API. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Normal list that does not indicate choices.
singleChoice1 The list allows up to one choice.
multipleChoice2 The list allows multiple choices.
multipleChoiceModal3 The list allows multiple choices in a custom selection mode.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#choiceMode}. + @attr name android:choiceMode + */ + public static final int AbsListView_choiceMode = 7; + /** +

+ @attr description + When set to true, the selector will be drawn over the selected item. + Otherwise the selector is drawn behind the selected item. The default + value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawSelectorOnTop}. + @attr name android:drawSelectorOnTop + */ + public static final int AbsListView_drawSelectorOnTop = 1; + /** +

+ @attr description + When set to true, the list will always show the fast scroll interface. + This setting implies fastScrollEnabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollAlwaysVisible}. + @attr name android:fastScrollAlwaysVisible + */ + public static final int AbsListView_fastScrollAlwaysVisible = 10; + /** +

+ @attr description + Enables the fast scroll thumb that can be dragged to quickly scroll through + the list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollEnabled}. + @attr name android:fastScrollEnabled + */ + public static final int AbsListView_fastScrollEnabled = 8; + /** +

+ @attr description + Drawable used to indicate the currently selected item in the list. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listSelector}. + @attr name android:listSelector + */ + public static final int AbsListView_listSelector = 0; + /** +

+ @attr description + When set to true, the list uses a drawing cache during scrolling. + This makes the rendering faster but uses more memory. The default + value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollingCache}. + @attr name android:scrollingCache + */ + public static final int AbsListView_scrollingCache = 3; + /** +

+ @attr description + When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen. This + property is set to true by default but should be set to false if your adapter + will display items of varying heights. When this property is set to true and + your adapter displays items of varying heights, the scrollbar thumb will + change size as the user scrolls through the list. When set to fale, the list + will use only the number of items in the adapter and the number of items visible + on screen to determine the scrollbar's properties. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smoothScrollbar}. + @attr name android:smoothScrollbar + */ + public static final int AbsListView_smoothScrollbar = 9; + /** +

+ @attr description + Used by ListView and GridView to stack their content from the bottom. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stackFromBottom}. + @attr name android:stackFromBottom + */ + public static final int AbsListView_stackFromBottom = 2; + /** +

+ @attr description + When set to true, the list will filter results as the user types. The + List's adapter must support the Filterable interface for this to work. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textFilterEnabled}. + @attr name android:textFilterEnabled + */ + public static final int AbsListView_textFilterEnabled = 4; + /** +

+ @attr description + Sets the transcript mode for the list. In transcript mode, the list + scrolls to the bottom to make new items visible when they are added. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
disabled0 Disables transcript mode. This is the default value.
normal1 The list will automatically scroll to the bottom when + a data set change notification is received and only if the last item is + already visible on screen.
alwaysScroll2 The list will automatically scroll to the bottom, no matter what items + are currently visible.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#transcriptMode}. + @attr name android:transcriptMode + */ + public static final int AbsListView_transcriptMode = 5; + /** Attributes that can be used with a AbsSpinner. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AbsSpinner_entries android:entries} Reference to an array resource that will populate the Spinner.
+ @see #AbsSpinner_entries + */ + public static final int[] AbsSpinner = { + 0x010100b2 + }; + /** +

+ @attr description + Reference to an array resource that will populate the Spinner. For static content, + this is simpler than populating the Spinner programmatically. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int AbsSpinner_entries = 0; + /** Attributes that can be used with a AbsoluteLayout_Layout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AbsoluteLayout_Layout_layout_x android:layout_x}
{@link #AbsoluteLayout_Layout_layout_y android:layout_y}
+ @see #AbsoluteLayout_Layout_layout_x + @see #AbsoluteLayout_Layout_layout_y + */ + public static final int[] AbsoluteLayout_Layout = { + 0x0101017f, 0x01010180 + }; + /** +

This symbol is the offset where the {@link android.R.attr#layout_x} + attribute's value can be found in the {@link #AbsoluteLayout_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_x + */ + public static final int AbsoluteLayout_Layout_layout_x = 0; + /** +

This symbol is the offset where the {@link android.R.attr#layout_y} + attribute's value can be found in the {@link #AbsoluteLayout_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_y + */ + public static final int AbsoluteLayout_Layout_layout_y = 1; + /** Attributes that can be used with a AccelerateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AccelerateInterpolator_factor android:factor} This is the amount of deceleration to add when easing in.
+ @see #AccelerateInterpolator_factor + */ + public static final int[] AccelerateInterpolator = { + 0x010101d3 + }; + /** +

+ @attr description + This is the amount of deceleration to add when easing in. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#factor}. + @attr name android:factor + */ + public static final int AccelerateInterpolator_factor = 0; + /** Use accessibility-service as the root tag of the XML resource that + describes an {@link android.accessibilityservice.AccessibilityService} service, + which is referenced from its + {@link android.accessibilityservice.AccessibilityService#SERVICE_META_DATA} + meta-data entry. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #AccessibilityService_accessibilityEventTypes android:accessibilityEventTypes} The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}.
{@link #AccessibilityService_accessibilityFeedbackType android:accessibilityFeedbackType} The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}.
{@link #AccessibilityService_accessibilityFlags android:accessibilityFlags} Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}.
{@link #AccessibilityService_canRequestEnhancedWebAccessibility android:canRequestEnhancedWebAccessibility} Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements.
{@link #AccessibilityService_canRequestFilterKeyEvents android:canRequestFilterKeyEvents} Attribute whether the accessibility service wants to be able to request to + filter key events.
{@link #AccessibilityService_canRequestTouchExplorationMode android:canRequestTouchExplorationMode} Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures.
{@link #AccessibilityService_canRetrieveWindowContent android:canRetrieveWindowContent} Attribute whether the accessibility service wants to be able to retrieve the + active window content.
{@link #AccessibilityService_description android:description} Short description of the accessibility serivce purpose or behavior.
{@link #AccessibilityService_notificationTimeout android:notificationTimeout} The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce.
{@link #AccessibilityService_packageNames android:packageNames} Comma separated package names from which this serivce would like to receive events (leave out for all packages).
{@link #AccessibilityService_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #AccessibilityService_accessibilityEventTypes + @see #AccessibilityService_accessibilityFeedbackType + @see #AccessibilityService_accessibilityFlags + @see #AccessibilityService_canRequestEnhancedWebAccessibility + @see #AccessibilityService_canRequestFilterKeyEvents + @see #AccessibilityService_canRequestTouchExplorationMode + @see #AccessibilityService_canRetrieveWindowContent + @see #AccessibilityService_description + @see #AccessibilityService_notificationTimeout + @see #AccessibilityService_packageNames + @see #AccessibilityService_settingsActivity + */ + public static final int[] AccessibilityService = { + 0x01010020, 0x01010225, 0x01010380, 0x01010381, + 0x01010382, 0x01010383, 0x01010384, 0x01010385, + 0x010103d7, 0x010103d8, 0x010103d9 + }; + /** +

+ @attr description + The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + +
ConstantValueDescription
typeViewClicked0x00000001 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CLICKED} events.
typeViewLongClicked0x00000002 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_LONG_CLICKED} events.
typeViewSelected0x00000004 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SELECTED} events.
typeViewFocused0x00000008 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_FOCUSED} events.
typeViewTextChanged0x00000010 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED} events.
typeWindowStateChanged0x00000020 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} events.
typeNotificationStateChanged0x00000040 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED} events.
typeViewHoverEnter0x00000080 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} events.
typeViewHoverExit0x00000100 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} events.
typeTouchExplorationGestureStart0x00000200 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} events.
typeTouchExplorationGestureEnd0x00000400 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} events.
typeWindowContentChanged0x00000800 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} events.
typeViewScrolled0x000001000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SCROLLED} events.
typeViewTextSelectionChanged0x000002000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} events.
typeAllMask0xffffffff Receives {@link android.view.accessibility.AccessibilityEvent#TYPES_ALL_MASK} i.e. all events.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityEventTypes}. + @attr name android:accessibilityEventTypes + */ + public static final int AccessibilityService_accessibilityEventTypes = 2; + /** +

+ @attr description + The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
feedbackSpoken0x00000001 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_SPOKEN} feedback.
feedbackHaptic0x00000002 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_HAPTIC} feedback.
feedbackAudible0x00000004 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_AUDIBLE} feedback.
feedbackVisual0x00000008 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_VISUAL} feedback.
feedbackGeneric0x00000010 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_GENERIC} feedback.
feedbackAllMask0xffffffff Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_ALL_MASK} feedback.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityFeedbackType}. + @attr name android:accessibilityFeedbackType + */ + public static final int AccessibilityService_accessibilityFeedbackType = 4; + /** +

+ @attr description + Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. + This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
flagDefault0x00000001 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT}
flagIncludeNotImportantViews0x00000002 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}
flagRequestTouchExplorationMode0x00000004 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}
flagRequestEnhancedWebAccessibility0x00000008 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY}
flagReportViewIds0x00000010 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
flagRequestFilterKeyEvents0x00000020 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS}
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityFlags}. + @attr name android:accessibilityFlags + */ + public static final int AccessibilityService_accessibilityFlags = 6; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements. For example, installing scripts to make app + content more accessible. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestEnhancedWebAccessibility}. + @attr name android:canRequestEnhancedWebAccessibility + */ + public static final int AccessibilityService_canRequestEnhancedWebAccessibility = 9; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request to + filter key events. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestFilterKeyEvents}. + @attr name android:canRequestFilterKeyEvents + */ + public static final int AccessibilityService_canRequestFilterKeyEvents = 10; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestTouchExplorationMode}. + @attr name android:canRequestTouchExplorationMode + */ + public static final int AccessibilityService_canRequestTouchExplorationMode = 8; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to retrieve the + active window content. This setting cannot be changed at runtime. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRetrieveWindowContent}. + @attr name android:canRetrieveWindowContent + */ + public static final int AccessibilityService_canRetrieveWindowContent = 7; + /** +

+ @attr description + Short description of the accessibility serivce purpose or behavior. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AccessibilityService_description = 0; + /** +

+ @attr description + The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce. This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#notificationTimeout}. + @attr name android:notificationTimeout + */ + public static final int AccessibilityService_notificationTimeout = 5; + /** +

+ @attr description + Comma separated package names from which this serivce would like to receive events (leave out for all packages). + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#packageNames}. + @attr name android:packageNames + */ + public static final int AccessibilityService_packageNames = 3; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. This setting cannot be changed at runtime. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int AccessibilityService_settingsActivity = 1; + /** Use account-authenticator as the root tag of the XML resource that + describes an account authenticator. + +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AccountAuthenticator_accountPreferences android:accountPreferences} A preferences.
{@link #AccountAuthenticator_accountType android:accountType} The account type this authenticator handles.
{@link #AccountAuthenticator_customTokens android:customTokens} Account handles its own token storage and permissions.
{@link #AccountAuthenticator_icon android:icon} The icon of the authenticator.
{@link #AccountAuthenticator_label android:label} The user-visible name of the authenticator.
{@link #AccountAuthenticator_smallIcon android:smallIcon} Smaller icon of the authenticator.
+ @see #AccountAuthenticator_accountPreferences + @see #AccountAuthenticator_accountType + @see #AccountAuthenticator_customTokens + @see #AccountAuthenticator_icon + @see #AccountAuthenticator_label + @see #AccountAuthenticator_smallIcon + */ + public static final int[] AccountAuthenticator = { + 0x01010001, 0x01010002, 0x0101028f, 0x0101029e, + 0x0101029f, 0x0101033b + }; + /** +

+ @attr description + A preferences.xml file for authenticator-specific settings. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountPreferences}. + @attr name android:accountPreferences + */ + public static final int AccountAuthenticator_accountPreferences = 4; + /** +

+ @attr description + The account type this authenticator handles. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountType}. + @attr name android:accountType + */ + public static final int AccountAuthenticator_accountType = 2; + /** +

+ @attr description + Account handles its own token storage and permissions. + Default to false + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#customTokens}. + @attr name android:customTokens + */ + public static final int AccountAuthenticator_customTokens = 5; + /** +

+ @attr description + The icon of the authenticator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AccountAuthenticator_icon = 1; + /** +

+ @attr description + The user-visible name of the authenticator. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AccountAuthenticator_label = 0; + /** +

+ @attr description + Smaller icon of the authenticator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smallIcon}. + @attr name android:smallIcon + */ + public static final int AccountAuthenticator_smallIcon = 3; + /** Attributes used to style the Action Bar. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #ActionBar_background android:background} Specifies a background drawable for the action bar.
{@link #ActionBar_backgroundSplit android:backgroundSplit} Specifies a background drawable for the bottom component of a split action bar.
{@link #ActionBar_backgroundStacked android:backgroundStacked} Specifies a background drawable for a second stacked row of the action bar.
{@link #ActionBar_customNavigationLayout android:customNavigationLayout} Specifies a layout for custom navigation.
{@link #ActionBar_displayOptions android:displayOptions} Options affecting how the action bar is displayed.
{@link #ActionBar_divider android:divider} Specifies the drawable used for item dividers.
{@link #ActionBar_height android:height} Specifies a fixed height.
{@link #ActionBar_homeLayout android:homeLayout} Specifies a layout to use for the "home" section of the action bar.
{@link #ActionBar_icon android:icon} Specifies the drawable used for the application icon.
{@link #ActionBar_indeterminateProgressStyle android:indeterminateProgressStyle} Specifies a style resource to use for an indeterminate progress spinner.
{@link #ActionBar_itemPadding android:itemPadding} Specifies padding that should be applied to the left and right sides of + system-provided items in the bar.
{@link #ActionBar_logo android:logo} Specifies the drawable used for the application logo.
{@link #ActionBar_navigationMode android:navigationMode} The type of navigation to use.
{@link #ActionBar_progressBarPadding android:progressBarPadding} Specifies the horizontal padding on either end for an embedded progress bar.
{@link #ActionBar_progressBarStyle android:progressBarStyle} Specifies a style resource to use for an embedded progress bar.
{@link #ActionBar_subtitle android:subtitle} Specifies subtitle text used for navigationMode="normal"
{@link #ActionBar_subtitleTextStyle android:subtitleTextStyle} Specifies a style to use for subtitle text.
{@link #ActionBar_title android:title} Specifies title text used for navigationMode="normal"
{@link #ActionBar_titleTextStyle android:titleTextStyle} Specifies a style to use for title text.
+ @see #ActionBar_background + @see #ActionBar_backgroundSplit + @see #ActionBar_backgroundStacked + @see #ActionBar_customNavigationLayout + @see #ActionBar_displayOptions + @see #ActionBar_divider + @see #ActionBar_height + @see #ActionBar_homeLayout + @see #ActionBar_icon + @see #ActionBar_indeterminateProgressStyle + @see #ActionBar_itemPadding + @see #ActionBar_logo + @see #ActionBar_navigationMode + @see #ActionBar_progressBarPadding + @see #ActionBar_progressBarStyle + @see #ActionBar_subtitle + @see #ActionBar_subtitleTextStyle + @see #ActionBar_title + @see #ActionBar_titleTextStyle + */ + public static final int[] ActionBar = { + 0x01010002, 0x01010077, 0x010100d4, 0x01010129, + 0x01010155, 0x010101e1, 0x010102be, 0x010102cf, + 0x010102d0, 0x010102d1, 0x010102d2, 0x010102f8, + 0x010102f9, 0x01010318, 0x01010319, 0x0101031d, + 0x0101032d, 0x0101038a, 0x0101038b + }; + /** +

+ @attr description + Specifies a background drawable for the action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int ActionBar_background = 2; + /** +

+ @attr description + Specifies a background drawable for the bottom component of a split action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundSplit}. + @attr name android:backgroundSplit + */ + public static final int ActionBar_backgroundSplit = 18; + /** +

+ @attr description + Specifies a background drawable for a second stacked row of the action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundStacked}. + @attr name android:backgroundStacked + */ + public static final int ActionBar_backgroundStacked = 17; + /** +

+ @attr description + Specifies a layout for custom navigation. Overrides navigationMode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#customNavigationLayout}. + @attr name android:customNavigationLayout + */ + public static final int ActionBar_customNavigationLayout = 10; + /** +

+ @attr description + Options affecting how the action bar is displayed. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
none0
useLogo0x1
showHome0x2
homeAsUp0x4
showTitle0x8
showCustom0x10
disableHome0x20
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#displayOptions}. + @attr name android:displayOptions + */ + public static final int ActionBar_displayOptions = 8; + /** +

+ @attr description + Specifies the drawable used for item dividers. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int ActionBar_divider = 3; + /** +

+ @attr description + Specifies a fixed height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ActionBar_height = 4; + /** +

+ @attr description + Specifies a layout to use for the "home" section of the action bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#homeLayout}. + @attr name android:homeLayout + */ + public static final int ActionBar_homeLayout = 15; + /** +

+ @attr description + Specifies the drawable used for the application icon. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int ActionBar_icon = 0; + /** +

+ @attr description + Specifies a style resource to use for an indeterminate progress spinner. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateProgressStyle}. + @attr name android:indeterminateProgressStyle + */ + public static final int ActionBar_indeterminateProgressStyle = 13; + /** +

+ @attr description + Specifies padding that should be applied to the left and right sides of + system-provided items in the bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemPadding}. + @attr name android:itemPadding + */ + public static final int ActionBar_itemPadding = 16; + /** +

+ @attr description + Specifies the drawable used for the application logo. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int ActionBar_logo = 6; + /** +

+ @attr description + The type of navigation to use. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Normal static title text
listMode1 The action bar will use a selection list for navigation.
tabMode2 The action bar will use a series of horizontal tabs for navigation.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#navigationMode}. + @attr name android:navigationMode + */ + public static final int ActionBar_navigationMode = 7; + /** +

+ @attr description + Specifies the horizontal padding on either end for an embedded progress bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarPadding}. + @attr name android:progressBarPadding + */ + public static final int ActionBar_progressBarPadding = 14; + /** +

+ @attr description + Specifies a style resource to use for an embedded progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyle}. + @attr name android:progressBarStyle + */ + public static final int ActionBar_progressBarStyle = 1; + /** +

+ @attr description + Specifies subtitle text used for navigationMode="normal" + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitle}. + @attr name android:subtitle + */ + public static final int ActionBar_subtitle = 9; + /** +

+ @attr description + Specifies a style to use for subtitle text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitleTextStyle}. + @attr name android:subtitleTextStyle + */ + public static final int ActionBar_subtitleTextStyle = 12; + /** +

+ @attr description + Specifies title text used for navigationMode="normal" + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int ActionBar_title = 5; + /** +

+ @attr description + Specifies a style to use for title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleTextStyle}. + @attr name android:titleTextStyle + */ + public static final int ActionBar_titleTextStyle = 11; + /** Attributes that can be used with a ActionBar_LayoutParams. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ActionBar_LayoutParams_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
+ @see #ActionBar_LayoutParams_layout_gravity + */ + public static final int[] ActionBar_LayoutParams = { + 0x010100b3 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int ActionBar_LayoutParams_layout_gravity = 0; + /** Attributes that can be used with a ActionMenuItemView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ActionMenuItemView_minWidth android:minWidth}
+ @see #ActionMenuItemView_minWidth + */ + public static final int[] ActionMenuItemView = { + 0x0101013f + }; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #ActionMenuItemView} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int ActionMenuItemView_minWidth = 0; + /** Attributes that can be used with a ActionMode. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #ActionMode_background android:background} Specifies a background for the action mode bar.
{@link #ActionMode_backgroundSplit android:backgroundSplit} Specifies a background for the split action mode bar.
{@link #ActionMode_height android:height} Specifies a fixed height for the action mode bar.
{@link #ActionMode_subtitleTextStyle android:subtitleTextStyle} Specifies a style to use for subtitle text.
{@link #ActionMode_titleTextStyle android:titleTextStyle} Specifies a style to use for title text.
+ @see #ActionMode_background + @see #ActionMode_backgroundSplit + @see #ActionMode_height + @see #ActionMode_subtitleTextStyle + @see #ActionMode_titleTextStyle + */ + public static final int[] ActionMode = { + 0x010100d4, 0x01010155, 0x010102f8, 0x010102f9, + 0x0101038b + }; + /** +

+ @attr description + Specifies a background for the action mode bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int ActionMode_background = 0; + /** +

+ @attr description + Specifies a background for the split action mode bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundSplit}. + @attr name android:backgroundSplit + */ + public static final int ActionMode_backgroundSplit = 4; + /** +

+ @attr description + Specifies a fixed height for the action mode bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ActionMode_height = 1; + /** +

+ @attr description + Specifies a style to use for subtitle text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitleTextStyle}. + @attr name android:subtitleTextStyle + */ + public static final int ActionMode_subtitleTextStyle = 3; + /** +

+ @attr description + Specifies a style to use for title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleTextStyle}. + @attr name android:titleTextStyle + */ + public static final int ActionMode_titleTextStyle = 2; + /** Attrbitutes for a ActvityChooserView. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] ActivityChooserView = { + 0x0101044d, 0x0101044e + }; + /** Attributes that can be used with a AdapterViewAnimator. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AdapterViewAnimator_animateFirstView android:animateFirstView} Defines whether to animate the current View when the ViewAnimation + is first displayed.
{@link #AdapterViewAnimator_inAnimation android:inAnimation} Identifier for the animation to use when a view is shown.
{@link #AdapterViewAnimator_loopViews android:loopViews}Defines whether the animator loops to the first view once it + has reached the end of the list.
{@link #AdapterViewAnimator_outAnimation android:outAnimation} Identifier for the animation to use when a view is hidden.
+ @see #AdapterViewAnimator_animateFirstView + @see #AdapterViewAnimator_inAnimation + @see #AdapterViewAnimator_loopViews + @see #AdapterViewAnimator_outAnimation + */ + public static final int[] AdapterViewAnimator = { + 0x01010177, 0x01010178, 0x010102d5, 0x01010307 + }; + /** +

+ @attr description + Defines whether to animate the current View when the ViewAnimation + is first displayed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateFirstView}. + @attr name android:animateFirstView + */ + public static final int AdapterViewAnimator_animateFirstView = 2; + /** +

+ @attr description + Identifier for the animation to use when a view is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inAnimation}. + @attr name android:inAnimation + */ + public static final int AdapterViewAnimator_inAnimation = 0; + /** +

+ @attr description + Defines whether the animator loops to the first view once it + has reached the end of the list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#loopViews}. + @attr name android:loopViews + */ + public static final int AdapterViewAnimator_loopViews = 3; + /** +

+ @attr description + Identifier for the animation to use when a view is hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#outAnimation}. + @attr name android:outAnimation + */ + public static final int AdapterViewAnimator_outAnimation = 1; + /** Attributes that can be used with a AdapterViewFlipper. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AdapterViewFlipper_autoStart android:autoStart} When true, automatically start animating
{@link #AdapterViewFlipper_flipInterval android:flipInterval}
+ @see #AdapterViewFlipper_autoStart + @see #AdapterViewFlipper_flipInterval + */ + public static final int[] AdapterViewFlipper = { + 0x01010179, 0x010102b5 + }; + /** +

+ @attr description + When true, automatically start animating + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoStart}. + @attr name android:autoStart + */ + public static final int AdapterViewFlipper_autoStart = 1; + /** +

This symbol is the offset where the {@link android.R.attr#flipInterval} + attribute's value can be found in the {@link #AdapterViewFlipper} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:flipInterval + */ + public static final int AdapterViewFlipper_flipInterval = 0; + /** Specify one or more aid-filter elements inside a + aid-group element to specify an ISO7816 Application ID (AID) + your service can handle. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AidFilter_name android:name} The ISO7816 Application ID.
+ @see #AidFilter_name + */ + public static final int[] AidFilter = { + 0x01010003 + }; + /** +

+ @attr description + The ISO7816 Application ID. This attribute is mandatory. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AidFilter_name = 0; + /** Specify one or more aid-group elements inside a + host-apdu-service or offhost-apdu-service + element to define a group of ISO7816 Application ID (AIDs) that + your service can handle. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AidGroup_category android:category} The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly.
{@link #AidGroup_description android:description} Short description of what the AID group implements.
+ @see #AidGroup_category + @see #AidGroup_description + */ + public static final int[] AidGroup = { + 0x01010020, 0x010103e8 + }; + /** +

+ @attr description + The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly. + Additionally, when a category is specified, Android will ensure that either + all AIDs in this group are routed to this application, or none at all. + This attribute is optional. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#category}. + @attr name android:category + */ + public static final int AidGroup_category = 1; + /** +

+ @attr description + Short description of what the AID group implements. This attribute is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AidGroup_description = 0; + /** The set of attributes that describe a AlertDialog's theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #AlertDialog_bottomBright android:bottomBright}
{@link #AlertDialog_bottomDark android:bottomDark}
{@link #AlertDialog_bottomMedium android:bottomMedium}
{@link #AlertDialog_centerBright android:centerBright}
{@link #AlertDialog_centerDark android:centerDark}
{@link #AlertDialog_centerMedium android:centerMedium}
{@link #AlertDialog_fullBright android:fullBright}
{@link #AlertDialog_fullDark android:fullDark}
{@link #AlertDialog_layout android:layout} Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so.
{@link #AlertDialog_topBright android:topBright}
{@link #AlertDialog_topDark android:topDark}
+ @see #AlertDialog_bottomBright + @see #AlertDialog_bottomDark + @see #AlertDialog_bottomMedium + @see #AlertDialog_centerBright + @see #AlertDialog_centerDark + @see #AlertDialog_centerMedium + @see #AlertDialog_fullBright + @see #AlertDialog_fullDark + @see #AlertDialog_layout + @see #AlertDialog_topBright + @see #AlertDialog_topDark + */ + public static final int[] AlertDialog = { + 0x010100c6, 0x010100c7, 0x010100c8, 0x010100c9, + 0x010100ca, 0x010100cb, 0x010100cc, 0x010100cd, + 0x010100ce, 0x010100cf, 0x010100f2, 0x01010428, + 0x01010429, 0x0101042a, 0x0101042b, 0x0101042c, + 0x0101042d + }; + /** +

This symbol is the offset where the {@link android.R.attr#bottomBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomBright + */ + public static final int AlertDialog_bottomBright = 7; + /** +

This symbol is the offset where the {@link android.R.attr#bottomDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomDark + */ + public static final int AlertDialog_bottomDark = 3; + /** +

This symbol is the offset where the {@link android.R.attr#bottomMedium} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomMedium + */ + public static final int AlertDialog_bottomMedium = 8; + /** +

This symbol is the offset where the {@link android.R.attr#centerBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerBright + */ + public static final int AlertDialog_centerBright = 6; + /** +

This symbol is the offset where the {@link android.R.attr#centerDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerDark + */ + public static final int AlertDialog_centerDark = 2; + /** +

This symbol is the offset where the {@link android.R.attr#centerMedium} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerMedium + */ + public static final int AlertDialog_centerMedium = 9; + /** +

This symbol is the offset where the {@link android.R.attr#fullBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:fullBright + */ + public static final int AlertDialog_fullBright = 4; + /** +

This symbol is the offset where the {@link android.R.attr#fullDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:fullDark + */ + public static final int AlertDialog_fullDark = 0; + /** +

+ @attr description + Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int AlertDialog_layout = 10; + /** +

This symbol is the offset where the {@link android.R.attr#topBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:topBright + */ + public static final int AlertDialog_topBright = 5; + /** +

This symbol is the offset where the {@link android.R.attr#topDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:topDark + */ + public static final int AlertDialog_topDark = 1; + /** Attributes that can be used with a AlphaAnimation. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AlphaAnimation_fromAlpha android:fromAlpha}
{@link #AlphaAnimation_toAlpha android:toAlpha}
+ @see #AlphaAnimation_fromAlpha + @see #AlphaAnimation_toAlpha + */ + public static final int[] AlphaAnimation = { + 0x010101ca, 0x010101cb + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromAlpha} + attribute's value can be found in the {@link #AlphaAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromAlpha + */ + public static final int AlphaAnimation_fromAlpha = 0; + /** +

This symbol is the offset where the {@link android.R.attr#toAlpha} + attribute's value can be found in the {@link #AlphaAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toAlpha + */ + public static final int AlphaAnimation_toAlpha = 1; + /** Attributes that can be used with a AnalogClock. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AnalogClock_dial android:dial}
{@link #AnalogClock_hand_hour android:hand_hour}
{@link #AnalogClock_hand_minute android:hand_minute}
+ @see #AnalogClock_dial + @see #AnalogClock_hand_hour + @see #AnalogClock_hand_minute + */ + public static final int[] AnalogClock = { + 0x01010102, 0x01010103, 0x01010104 + }; + /** +

This symbol is the offset where the {@link android.R.attr#dial} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:dial + */ + public static final int AnalogClock_dial = 0; + /** +

This symbol is the offset where the {@link android.R.attr#hand_hour} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:hand_hour + */ + public static final int AnalogClock_hand_hour = 1; + /** +

This symbol is the offset where the {@link android.R.attr#hand_minute} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:hand_minute + */ + public static final int AnalogClock_hand_minute = 2; + /** The manifest tag is the root of an + AndroidManifest.xml file, + describing the contents of an Android package (.apk) file. One + attribute must always be supplied: package gives a + unique name for the package, using a Java-style naming convention + to avoid name collisions. For example, applications published + by Google could have names of the form + com.google.app.appname + +

Inside of the manifest tag, may appear the following tags + in any order: {@link #AndroidManifestPermission permission}, + {@link #AndroidManifestPermissionGroup permission-group}, + {@link #AndroidManifestPermissionTree permission-tree}, + {@link #AndroidManifestUsesSdk uses-sdk}, + {@link #AndroidManifestUsesPermission uses-permission}, + {@link #AndroidManifestUsesConfiguration uses-configuration}, + {@link #AndroidManifestApplication application}, + {@link #AndroidManifestInstrumentation instrumentation}, + {@link #AndroidManifestUsesFeature uses-feature}. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #AndroidManifest_installLocation android:installLocation} The default install location defined by an application.
{@link #AndroidManifest_sharedUserId android:sharedUserId} Specify the name of a user ID that will be shared between multiple + packages.
{@link #AndroidManifest_sharedUserLabel android:sharedUserLabel} Specify a label for the shared user UID of this package.
{@link #AndroidManifest_versionCode android:versionCode} Internal version code.
{@link #AndroidManifest_versionName android:versionName} The text shown to the user to indicate the version they have.
+ @see #AndroidManifest_installLocation + @see #AndroidManifest_sharedUserId + @see #AndroidManifest_sharedUserLabel + @see #AndroidManifest_versionCode + @see #AndroidManifest_versionName + */ + public static final int[] AndroidManifest = { + 0x0101000b, 0x0101021b, 0x0101021c, 0x01010261, + 0x010102b7 + }; + /** +

+ @attr description + The default install location defined by an application. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Let the system decide ideal install location
internalOnly1 Explicitly request to be installed on internal phone storage + only.
preferExternal2 Prefer to be installed on SD card. There is no guarantee that + the system will honor this request. The application might end + up being installed on internal storage if external media + is unavailable or too full.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#installLocation}. + @attr name android:installLocation + */ + public static final int AndroidManifest_installLocation = 4; + /** +

+ @attr description + Specify the name of a user ID that will be shared between multiple + packages. By default, each package gets its own unique user-id. + By setting this value on two or more packages, each of these packages + will be given a single shared user ID, so they can for example run + in the same process. Note that for them to actually get the same + user ID, they must also be signed with the same signature. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sharedUserId}. + @attr name android:sharedUserId + */ + public static final int AndroidManifest_sharedUserId = 0; + /** +

+ @attr description + Specify a label for the shared user UID of this package. This is + only used if you have also used android:sharedUserId. This must + be a reference to a string resource; it can not be an explicit + string. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sharedUserLabel}. + @attr name android:sharedUserLabel + */ + public static final int AndroidManifest_sharedUserLabel = 3; + /** +

+ @attr description + Internal version code. This is the number used to determine whether + one version is more recent than another: it has no other meaning than + that higher numbers are more recent. You could use this number to + encode a "x.y" in the lower and upper 16 bits, make it a build + number, simply increase it by one each time a new version is + released, or define it however else you want, as long as each + successive version has a higher number. This is not a version + number generally shown to the user, that is usually supplied + with {@link android.R.attr#versionName}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#versionCode}. + @attr name android:versionCode + */ + public static final int AndroidManifest_versionCode = 1; + /** +

+ @attr description + The text shown to the user to indicate the version they have. This + is used for no other purpose than display to the user; the actual + significant version number is given by {@link android.R.attr#versionCode}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#versionName}. + @attr name android:versionName + */ + public static final int AndroidManifest_versionName = 2; + /** Attributes that can be supplied in an AndroidManifest.xml + action tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag. + See {@link android.content.IntentFilter#addAction} for + more information. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestAction_name android:name} The name of an action that is handled, using the Java-style + naming convention.
+ @see #AndroidManifestAction_name + */ + public static final int[] AndroidManifestAction = { + 0x01010003 + }; + /** +

+ @attr description + The name of an action that is handled, using the Java-style + naming convention. For example, to support + {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW} + you would put android.intent.action.VIEW here. + Custom actions should generally use a prefix matching the + package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestAction_name = 0; + /** The activity tag declares an + {@link android.app.Activity} class that is available + as part of the package's application components, implementing + a part of the application's user interface. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of an activity, to specify the Intents + that it can handle. If none are specified, the activity can + only be started through direct specification of its class name. + The activity tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestActivity_allowTaskReparenting android:allowTaskReparenting} Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate.
{@link #AndroidManifestActivity_alwaysRetainTaskState android:alwaysRetainTaskState} Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations.
{@link #AndroidManifestActivity_clearTaskOnLaunch android:clearTaskOnLaunch} Specify whether an activity's task should be cleared when it + is re-launched from the home screen.
{@link #AndroidManifestActivity_configChanges android:configChanges} Specify one or more configuration changes that the activity will + handle itself.
{@link #AndroidManifestActivity_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestActivity_enabled android:enabled} Specify whether the activity is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestActivity_excludeFromRecents android:excludeFromRecents} Indicates that an Activity should be excluded from the list of + recently launched activities.
{@link #AndroidManifestActivity_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestActivity_finishOnCloseSystemDialogs android:finishOnCloseSystemDialogs} Specify whether an activity should be finished when a "close system + windows" request has been made.
{@link #AndroidManifestActivity_finishOnTaskLaunch android:finishOnTaskLaunch} Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen.
{@link #AndroidManifestActivity_hardwareAccelerated android:hardwareAccelerated}

Flag indicating whether the application's rendering should be hardware + accelerated if possible.

{@link #AndroidManifestActivity_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestActivity_immersive android:immersive} Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications.
{@link #AndroidManifestActivity_label android:label} A user-legible name for the given item.
{@link #AndroidManifestActivity_launchMode android:launchMode} Specify how an activity should be launched.
{@link #AndroidManifestActivity_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestActivity_multiprocess android:multiprocess} Specify whether a component is allowed to have multiple instances + of itself running in different processes.
{@link #AndroidManifestActivity_name android:name} Required name of the class implementing the activity, deriving from + {@link android.app.Activity}.
{@link #AndroidManifestActivity_noHistory android:noHistory} Specify whether an activity should be kept in its history stack.
{@link #AndroidManifestActivity_parentActivityName android:parentActivityName} The name of the logical parent of the activity as it appears in the manifest.
{@link #AndroidManifestActivity_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestActivity_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestActivity_screenOrientation android:screenOrientation} Specify the orientation an activity should be run in.
{@link #AndroidManifestActivity_showOnLockScreen android:showOnLockScreen} Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows
{@link #AndroidManifestActivity_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestActivity_stateNotNeeded android:stateNotNeeded} Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted.
{@link #AndroidManifestActivity_taskAffinity android:taskAffinity} Specify a task name that activities have an "affinity" to.
{@link #AndroidManifestActivity_theme android:theme} The overall theme to use for an activity.
{@link #AndroidManifestActivity_uiOptions android:uiOptions} Extra options for an activity's UI.
{@link #AndroidManifestActivity_windowSoftInputMode android:windowSoftInputMode} Specify the default soft-input mode for the main window of + this activity.
+ @see #AndroidManifestActivity_allowTaskReparenting + @see #AndroidManifestActivity_alwaysRetainTaskState + @see #AndroidManifestActivity_clearTaskOnLaunch + @see #AndroidManifestActivity_configChanges + @see #AndroidManifestActivity_description + @see #AndroidManifestActivity_enabled + @see #AndroidManifestActivity_excludeFromRecents + @see #AndroidManifestActivity_exported + @see #AndroidManifestActivity_finishOnCloseSystemDialogs + @see #AndroidManifestActivity_finishOnTaskLaunch + @see #AndroidManifestActivity_hardwareAccelerated + @see #AndroidManifestActivity_icon + @see #AndroidManifestActivity_immersive + @see #AndroidManifestActivity_label + @see #AndroidManifestActivity_launchMode + @see #AndroidManifestActivity_logo + @see #AndroidManifestActivity_multiprocess + @see #AndroidManifestActivity_name + @see #AndroidManifestActivity_noHistory + @see #AndroidManifestActivity_parentActivityName + @see #AndroidManifestActivity_permission + @see #AndroidManifestActivity_process + @see #AndroidManifestActivity_screenOrientation + @see #AndroidManifestActivity_showOnLockScreen + @see #AndroidManifestActivity_singleUser + @see #AndroidManifestActivity_stateNotNeeded + @see #AndroidManifestActivity_taskAffinity + @see #AndroidManifestActivity_theme + @see #AndroidManifestActivity_uiOptions + @see #AndroidManifestActivity_windowSoftInputMode + */ + public static final int[] AndroidManifestActivity = { + 0x01010000, 0x01010001, 0x01010002, 0x01010003, + 0x01010006, 0x0101000e, 0x01010010, 0x01010011, + 0x01010012, 0x01010013, 0x01010014, 0x01010015, + 0x01010016, 0x01010017, 0x0101001d, 0x0101001e, + 0x0101001f, 0x01010020, 0x01010203, 0x01010204, + 0x0101022b, 0x0101022d, 0x010102a7, 0x010102be, + 0x010102c0, 0x010102d3, 0x01010398, 0x010103a7, + 0x010103bf, 0x010103c9, 0x01010480 + }; + /** +

+ @attr description + Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowTaskReparenting}. + @attr name android:allowTaskReparenting + */ + public static final int AndroidManifestActivity_allowTaskReparenting = 19; + /** +

+ @attr description + Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations. + +

Normally the system will reset a task (remove all activities from + the stack and reset the root activity) in certain situations when + the user re-selects that task from the home screen. Typically this + will be done if the user hasn't visited that task for a certain + amount of time, such as 30 minutes. + +

By setting this attribute, the user will always return to your + task in its last state, regardless of how they get there. This is + useful, for example, in an application like the web browser where there + is a lot of state (such as multiple open tabs) that the application + would not like to lose. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alwaysRetainTaskState}. + @attr name android:alwaysRetainTaskState + */ + public static final int AndroidManifestActivity_alwaysRetainTaskState = 18; + /** +

+ @attr description + Specify whether an activity's task should be cleared when it + is re-launched from the home screen. As a result, every time the + user starts the task, they will be brought to its root activity, + regardless of whether they used BACK or HOME to last leave it. + This flag only applies to activities that + are used to start the root of a new task. + +

An example of the use of this flag would be for the case where + a user launches activity A from home, and from there goes to + activity B. They now press home, and then return to activity A. + Normally they would see activity B, since that is what they were + last doing in A's task. However, if A has set this flag to true, + then upon going to the background all of the tasks on top of it (B + in this case) are removed, so when the user next returns to A they + will restart at its original activity. + +

When this option is used in conjunction with + {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the + clear. That is, all activities above the root activity of the + task will be removed: those that have an affinity will be moved + to the task they are associated with, otherwise they will simply + be dropped as described here. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clearTaskOnLaunch}. + @attr name android:clearTaskOnLaunch + */ + public static final int AndroidManifestActivity_clearTaskOnLaunch = 11; + /** +

+ @attr description + Specify one or more configuration changes that the activity will + handle itself. If not specified, the activity will be restarted + if any of these configuration changes happen in the system. Otherwise, + the activity will remain running and its + {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged} + method called with the new configuration. + +

Note that all of these configuration changes can impact the + resource values seen by the application, so you will generally need + to re-retrieve all resources (including view layouts, drawables, etc) + to correctly handle any configuration change. + +

These values must be kept in sync with those in + {@link android.content.pm.ActivityInfo} and + include/utils/ResourceTypes.h. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
mcc0x0001 The IMSI MCC has changed, that is a SIM has been detected and + updated the Mobile Country Code.
mnc0x0002 The IMSI MNC has changed, that is a SIM has been detected and + updated the Mobile Network Code.
locale0x0004 The locale has changed, that is the user has selected a new + language that text should be displayed in.
touchscreen0x0008 The touchscreen has changed. Should never normally happen.
keyboard0x0010 The keyboard type has changed, for example the user has plugged + in an external keyboard.
keyboardHidden0x0020 The keyboard or navigation accessibility has changed, for example + the user has slid the keyboard out to expose it. Note that + despite its name, this applied to any accessibility: keyboard + or navigation.
navigation0x0040 The navigation type has changed. Should never normally happen.
orientation0x0080 The screen orientation has changed, that is the user has + rotated the device.
screenLayout0x0100 The screen layout has changed. This might be caused by a + different display being activated.
uiMode0x0200 The global user interface mode has changed. For example, + going in or out of car mode, night mode changing, etc.
screenSize0x0400 The current available screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in the + currently available size, so will change when the user switches + between landscape and portrait.
smallestScreenSize0x0800 The physical screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in size + regardless of orientation, so will only change when the actual + physical screen size has changed such as switching to an external + display.
layoutDirection0x2000 The layout direction has changed. For example going from LTR to RTL.
fontScale0x40000000 The font scaling factor has changed, that is the user has + selected a new global font size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#configChanges}. + @attr name android:configChanges + */ + public static final int AndroidManifestActivity_configChanges = 16; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestActivity_description = 17; + /** +

+ @attr description + Specify whether the activity is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestActivity_enabled = 5; + /** +

+ @attr description + Indicates that an Activity should be excluded from the list of + recently launched activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#excludeFromRecents}. + @attr name android:excludeFromRecents + */ + public static final int AndroidManifestActivity_excludeFromRecents = 13; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestActivity_exported = 6; + /** +

+ @attr description + Specify whether an activity should be finished when a "close system + windows" request has been made. This happens, for example, when + the home key is pressed, when the device is locked, when a system + dialog showing recent applications is displayed, etc. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#finishOnCloseSystemDialogs}. + @attr name android:finishOnCloseSystemDialogs + */ + public static final int AndroidManifestActivity_finishOnCloseSystemDialogs = 22; + /** +

+ @attr description + Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen. + +

If both this option and {@link android.R.attr#allowTaskReparenting} are + specified, the finish trumps the affinity: the affinity will be + ignored and the activity simply finished. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#finishOnTaskLaunch}. + @attr name android:finishOnTaskLaunch + */ + public static final int AndroidManifestActivity_finishOnTaskLaunch = 10; + /** +

+ @attr description +

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+ + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hardwareAccelerated}. + @attr name android:hardwareAccelerated + */ + public static final int AndroidManifestActivity_hardwareAccelerated = 25; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestActivity_icon = 2; + /** +

+ @attr description + Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#immersive}. + @attr name android:immersive + */ + public static final int AndroidManifestActivity_immersive = 24; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestActivity_label = 1; + /** +

+ @attr description + Specify how an activity should be launched. See the + Tasks and Back + Stack document for important information on how these options impact + the behavior of your application. + +

If this attribute is not specified, standard launch + mode will be used. Note that the particular launch behavior can + be changed in some ways at runtime through the + {@link android.content.Intent} flags + {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}, + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and + {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
standard0 The default mode, which will usually create a new instance of + the activity when it is started, though this behavior may change + with the introduction of other options such as + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_NEW_TASK}.
singleTop1 If, when starting the activity, there is already an + instance of the same activity class in the foreground that is + interacting with the user, then + re-use that instance. This existing instance will receive a call to + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with + the new Intent that is being started.
singleTask2 If, when starting the activity, there is already a task running + that starts with this activity, then instead of starting a new + instance the current task is brought to the front. The existing + instance will receive a call to {@link android.app.Activity#onNewIntent + Activity.onNewIntent()} + with the new Intent that is being started, and with the + {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT + Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set. This is a superset + of the singleTop mode, where if there is already an instance + of the activity being started at the top of the stack, it will + receive the Intent as described there (without the + FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set). See the + Tasks and Back + Stack document for more details about tasks.
singleInstance3 Only allow one instance of this activity to ever be + running. This activity gets a unique task with only itself running + in it; if it is ever launched again with the same Intent, then that + task will be brought forward and its + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} + method called. If this + activity tries to start a new activity, that new activity will be + launched in a separate task. See the + Tasks and Back + Stack document for more details about tasks.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#launchMode}. + @attr name android:launchMode + */ + public static final int AndroidManifestActivity_launchMode = 14; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestActivity_logo = 23; + /** +

+ @attr description + Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#multiprocess}. + @attr name android:multiprocess + */ + public static final int AndroidManifestActivity_multiprocess = 9; + /** +

+ @attr description + Required name of the class implementing the activity, deriving from + {@link android.app.Activity}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestActivity_name = 3; + /** +

+ @attr description + Specify whether an activity should be kept in its history stack. + If this attribute is set, then as soon as the user navigates away + from the activity it will be finished and they will no longer be + able to return to it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#noHistory}. + @attr name android:noHistory + */ + public static final int AndroidManifestActivity_noHistory = 21; + /** +

+ @attr description + The name of the logical parent of the activity as it appears in the manifest. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#parentActivityName}. + @attr name android:parentActivityName + */ + public static final int AndroidManifestActivity_parentActivityName = 27; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestActivity_permission = 4; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestActivity_process = 7; + /** +

+ @attr description + Specify the orientation an activity should be run in. If not + specified, it will run in the current preferred orientation + of the screen. +

This attribute is supported by the {@code <activity>} + element. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
unspecified-1 No preference specified: let the system decide the best + orientation. This will either be the orientation selected + by the activity below, or the user's preferred orientation + if this activity is the bottom of a task. If the user + explicitly turned off sensor based orientation through settings + sensor based device rotation will be ignored. If not by default + sensor based orientation will be taken into account and the + orientation will changed based on how the user rotates the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}.
landscape0 Would like to have the screen in a landscape orientation: that + is, with the display wider than it is tall, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}.
portrait1 Would like to have the screen in a portrait orientation: that + is, with the display taller than it is wide, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}.
user2 Use the user's current preferred orientation of the handset. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}.
behind3 Keep the screen in the same orientation as whatever is behind + this activity. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}.
sensor4 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + Ignores user's setting to turn off sensor-based rotation. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}.
nosensor5 Always ignore orientation determined by orientation sensor: + the display will not rotate when the user moves the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}.
sensorLandscape6 Would like to have the screen in landscape orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}.
sensorPortrait7 Would like to have the screen in portrait orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}.
reverseLandscape8 Would like to have the screen in landscape orientation, turned in + the opposite direction from normal landscape. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}.
reversePortrait9 Would like to have the screen in portrait orientation, turned in + the opposite direction from normal portrait. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}.
fullSensor10 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + This allows any of the 4 possible rotations, regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}.
userLandscape11 Would like to have the screen in landscape orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}.
userPortrait12 Would like to have the screen in portrait orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}.
fullUser13 Respect the user's sensor-based rotation preference, but if + sensor-based rotation is enabled then allow the screen to rotate + in all 4 possible directions regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}.
locked14 Screen is locked to its current rotation, whatever that is. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenOrientation}. + @attr name android:screenOrientation + */ + public static final int AndroidManifestActivity_screenOrientation = 15; + /** +

+ @attr description + Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showOnLockScreen}. + @attr name android:showOnLockScreen + */ + public static final int AndroidManifestActivity_showOnLockScreen = 29; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestActivity_singleUser = 28; + /** +

+ @attr description + Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted. Generally you use this for activities + that do not store any state. When this flag is set, if for some reason + the activity is killed before it has a chance to save its state, + then the system will not remove it from the activity stack like + it normally would. Instead, the next time the user navigates to + it its {@link android.app.Activity#onCreate} method will be called + with a null icicle, just like it was starting for the first time. + +

This is used by the Home activity to make sure it does not get + removed if it crashes for some reason. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stateNotNeeded}. + @attr name android:stateNotNeeded + */ + public static final int AndroidManifestActivity_stateNotNeeded = 12; + /** +

+ @attr description + Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskAffinity}. + @attr name android:taskAffinity + */ + public static final int AndroidManifestActivity_taskAffinity = 8; + /** +

+ @attr description + The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#theme}. + @attr name android:theme + */ + public static final int AndroidManifestActivity_theme = 0; + /** +

+ @attr description + Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#uiOptions}. + @attr name android:uiOptions + */ + public static final int AndroidManifestActivity_uiOptions = 26; + /** +

+ @attr description + Specify the default soft-input mode for the main window of + this activity. A value besides "unspecified" here overrides + any value in the theme. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int AndroidManifestActivity_windowSoftInputMode = 20; + /** The activity-alias tag declares a new + name for an existing {@link #AndroidManifestActivity activity} + tag. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of an activity-alias, to specify the Intents + that it can handle. If none are specified, the activity can + only be started through direct specification of its class name. + The activity-alias tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestActivityAlias_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestActivityAlias_enabled android:enabled} Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestActivityAlias_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestActivityAlias_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestActivityAlias_label android:label} A user-legible name for the given item.
{@link #AndroidManifestActivityAlias_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestActivityAlias_name android:name} Required name of the class implementing the activity, deriving from + {@link android.app.Activity}.
{@link #AndroidManifestActivityAlias_parentActivityName android:parentActivityName} The name of the logical parent of the activity as it appears in the manifest.
{@link #AndroidManifestActivityAlias_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestActivityAlias_targetActivity android:targetActivity} The name of the activity this alias should launch.
+ @see #AndroidManifestActivityAlias_description + @see #AndroidManifestActivityAlias_enabled + @see #AndroidManifestActivityAlias_exported + @see #AndroidManifestActivityAlias_icon + @see #AndroidManifestActivityAlias_label + @see #AndroidManifestActivityAlias_logo + @see #AndroidManifestActivityAlias_name + @see #AndroidManifestActivityAlias_parentActivityName + @see #AndroidManifestActivityAlias_permission + @see #AndroidManifestActivityAlias_targetActivity + */ + public static final int[] AndroidManifestActivityAlias = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010020, 0x01010202, + 0x010102be, 0x010103a7 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestActivityAlias_description = 6; + /** +

+ @attr description + Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestActivityAlias_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestActivityAlias_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestActivityAlias_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestActivityAlias_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestActivityAlias_logo = 8; + /** +

+ @attr description + Required name of the class implementing the activity, deriving from + {@link android.app.Activity}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestActivityAlias_name = 2; + /** +

+ @attr description + The name of the logical parent of the activity as it appears in the manifest. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#parentActivityName}. + @attr name android:parentActivityName + */ + public static final int AndroidManifestActivityAlias_parentActivityName = 9; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestActivityAlias_permission = 3; + /** +

+ @attr description + The name of the activity this alias should launch. The activity + must be in the same manifest as the alias, and have been defined + in that manifest before the alias here. This must use a Java-style + naming convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetActivity}. + @attr name android:targetActivity + */ + public static final int AndroidManifestActivityAlias_targetActivity = 7; + /** The application tag describes application-level components + contained in the package, as well as general application + attributes. Many of the attributes you can supply here (such + as theme, label, icon, permission, process, taskAffinity, + and allowTaskReparenting) serve + as default values for the corresponding attributes of components + declared inside of the application. + +

Inside of this element you specify what the application contains, + using the elements {@link #AndroidManifestProvider provider}, + {@link #AndroidManifestService service}, + {@link #AndroidManifestReceiver receiver}, + {@link #AndroidManifestActivity activity}, + {@link #AndroidManifestActivityAlias activity-alias}, and + {@link #AndroidManifestUsesLibrary uses-library}. The application tag + appears as a child of the root {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestApplication_allowBackup android:allowBackup} Whether to allow the application to participate in the backup + and restore infrastructure.
{@link #AndroidManifestApplication_allowClearUserData android:allowClearUserData} Option to let applications specify that user data can/cannot be + cleared.
{@link #AndroidManifestApplication_allowTaskReparenting android:allowTaskReparenting} Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate.
{@link #AndroidManifestApplication_backupAgent android:backupAgent} The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage.
{@link #AndroidManifestApplication_debuggable android:debuggable} Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode.
{@link #AndroidManifestApplication_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestApplication_enabled android:enabled} Specify whether the components in this application are enabled or not (that is, can be + instantiated by the system).
{@link #AndroidManifestApplication_hardwareAccelerated android:hardwareAccelerated}

Flag indicating whether the application's rendering should be hardware + accelerated if possible.

{@link #AndroidManifestApplication_hasCode android:hasCode} Indicate whether this application contains code.
{@link #AndroidManifestApplication_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestApplication_killAfterRestore android:killAfterRestore} Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation.
{@link #AndroidManifestApplication_label android:label} A user-legible name for the given item.
{@link #AndroidManifestApplication_largeHeap android:largeHeap} Request that your application's processes be created with + a large Dalvik heap.
{@link #AndroidManifestApplication_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestApplication_manageSpaceActivity android:manageSpaceActivity} Name of activity to be launched for managing the application's space on the device.
{@link #AndroidManifestApplication_name android:name} An optional name of a class implementing the overall + {@link android.app.Application} for this package.
{@link #AndroidManifestApplication_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestApplication_persistent android:persistent} Flag to control special persistent mode of an application.
{@link #AndroidManifestApplication_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestApplication_requiredAccountType android:requiredAccountType} Declare that this application requires an account of a certain + type.
{@link #AndroidManifestApplication_requiredForAllUsers android:requiredForAllUsers} Flag to specify if this application needs to be present for all users.
{@link #AndroidManifestApplication_restoreAnyVersion android:restoreAnyVersion} Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device.
{@link #AndroidManifestApplication_restoreNeedsApplication android:restoreNeedsApplication} @deprecated This attribute is not used by the Android operating system.
{@link #AndroidManifestApplication_restrictedAccountType android:restrictedAccountType} Declare that this application requires access to restricted accounts of a certain + type.
{@link #AndroidManifestApplication_supportsRtl android:supportsRtl} Declare that your application will be able to deal with RTL (right to left) layouts.
{@link #AndroidManifestApplication_taskAffinity android:taskAffinity} Specify a task name that activities have an "affinity" to.
{@link #AndroidManifestApplication_testOnly android:testOnly} Option to indicate this application is only for testing purposes.
{@link #AndroidManifestApplication_theme android:theme} The overall theme to use for an activity.
{@link #AndroidManifestApplication_uiOptions android:uiOptions} Extra options for an activity's UI.
{@link #AndroidManifestApplication_vmSafeMode android:vmSafeMode} Flag indicating whether the application requests the VM to operate in + the safe mode.
+ @see #AndroidManifestApplication_allowBackup + @see #AndroidManifestApplication_allowClearUserData + @see #AndroidManifestApplication_allowTaskReparenting + @see #AndroidManifestApplication_backupAgent + @see #AndroidManifestApplication_debuggable + @see #AndroidManifestApplication_description + @see #AndroidManifestApplication_enabled + @see #AndroidManifestApplication_hardwareAccelerated + @see #AndroidManifestApplication_hasCode + @see #AndroidManifestApplication_icon + @see #AndroidManifestApplication_killAfterRestore + @see #AndroidManifestApplication_label + @see #AndroidManifestApplication_largeHeap + @see #AndroidManifestApplication_logo + @see #AndroidManifestApplication_manageSpaceActivity + @see #AndroidManifestApplication_name + @see #AndroidManifestApplication_permission + @see #AndroidManifestApplication_persistent + @see #AndroidManifestApplication_process + @see #AndroidManifestApplication_requiredAccountType + @see #AndroidManifestApplication_requiredForAllUsers + @see #AndroidManifestApplication_restoreAnyVersion + @see #AndroidManifestApplication_restoreNeedsApplication + @see #AndroidManifestApplication_restrictedAccountType + @see #AndroidManifestApplication_supportsRtl + @see #AndroidManifestApplication_taskAffinity + @see #AndroidManifestApplication_testOnly + @see #AndroidManifestApplication_theme + @see #AndroidManifestApplication_uiOptions + @see #AndroidManifestApplication_vmSafeMode + */ + public static final int[] AndroidManifestApplication = { + 0x01010000, 0x01010001, 0x01010002, 0x01010003, + 0x01010004, 0x01010005, 0x01010006, 0x0101000c, + 0x0101000d, 0x0101000e, 0x0101000f, 0x01010011, + 0x01010012, 0x01010020, 0x01010204, 0x01010272, + 0x0101027f, 0x01010280, 0x0101029c, 0x0101029d, + 0x010102b8, 0x010102ba, 0x010102be, 0x010102d3, + 0x0101035a, 0x01010398, 0x010103af, 0x010103d0, + 0x010103d5, 0x010103d6, 0x0101047e, 0x0101047f + }; + /** +

+ @attr description + Whether to allow the application to participate in the backup + and restore infrastructure. If this attribute is set to false, + no backup or restore of the application will ever be performed, even by a + full-system backup that would otherwise cause all application data to be saved + via adb. The default value of this attribute is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowBackup}. + @attr name android:allowBackup + */ + public static final int AndroidManifestApplication_allowBackup = 17; + /** +

+ @attr description + Option to let applications specify that user data can/cannot be + cleared. This flag is turned on by default. + This attribute is usable only by applications + included in the system image. Third-party apps cannot use it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowClearUserData}. + @attr name android:allowClearUserData + */ + public static final int AndroidManifestApplication_allowClearUserData = 5; + /** +

+ @attr description + Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowTaskReparenting}. + @attr name android:allowTaskReparenting + */ + public static final int AndroidManifestApplication_allowTaskReparenting = 14; + /** +

+ @attr description + The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backupAgent}. + @attr name android:backupAgent + */ + public static final int AndroidManifestApplication_backupAgent = 16; + /** +

+ @attr description + Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#debuggable}. + @attr name android:debuggable + */ + public static final int AndroidManifestApplication_debuggable = 10; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestApplication_description = 13; + /** +

+ @attr description + Specify whether the components in this application are enabled or not (that is, can be + instantiated by the system). + If "false", it overrides any component specific values (a value of "true" will not + override the component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestApplication_enabled = 9; + /** +

+ @attr description +

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+ + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hardwareAccelerated}. + @attr name android:hardwareAccelerated + */ + public static final int AndroidManifestApplication_hardwareAccelerated = 23; + /** +

+ @attr description + Indicate whether this application contains code. If set to false, + there is no code associated with it and thus the system will not + try to load its code when launching components. The default is true + for normal behavior. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hasCode}. + @attr name android:hasCode + */ + public static final int AndroidManifestApplication_hasCode = 7; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestApplication_icon = 2; + /** +

+ @attr description + Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation. + Single-package restore operations will never cause the application to + be shut down. Full-system restore operations typically only occur once, + when the phone is first set up. Third-party applications will not usually + need to use this attribute. + +

The default is true, which means that after the application + has finished processing its data during a full-system restore, it will be + terminated. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#killAfterRestore}. + @attr name android:killAfterRestore + */ + public static final int AndroidManifestApplication_killAfterRestore = 18; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestApplication_label = 1; + /** +

+ @attr description + Request that your application's processes be created with + a large Dalvik heap. This applies to all processes + created for the application. It only applies to the first + application loaded into a process; if using a sharedUserId + to allow multiple applications to use a process, they all must + use this option consistently or will get unpredictable results. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largeHeap}. + @attr name android:largeHeap + */ + public static final int AndroidManifestApplication_largeHeap = 24; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestApplication_logo = 22; + /** +

+ @attr description + Name of activity to be launched for managing the application's space on the device. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#manageSpaceActivity}. + @attr name android:manageSpaceActivity + */ + public static final int AndroidManifestApplication_manageSpaceActivity = 4; + /** +

+ @attr description + An optional name of a class implementing the overall + {@link android.app.Application} for this package. When the + process for your package is started, this class is instantiated + before any of the other application components. Note that this + is not required, and in fact most applications will probably + not need it. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestApplication_name = 3; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestApplication_permission = 6; + /** +

+ @attr description + Flag to control special persistent mode of an application. This should + not normally be used by applications; it requires that the system keep + your application running at all times. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistent}. + @attr name android:persistent + */ + public static final int AndroidManifestApplication_persistent = 8; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestApplication_process = 11; + /** +

+ @attr description + Declare that this application requires an account of a certain + type. The default value is null and indicates that the application can work without + any accounts. The type should correspond to the account authenticator type, such as + "com.google". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiredAccountType}. + @attr name android:requiredAccountType + */ + public static final int AndroidManifestApplication_requiredAccountType = 29; + /** +

+ @attr description + Flag to specify if this application needs to be present for all users. Only pre-installed + applications can request this feature. Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiredForAllUsers}. + @attr name android:requiredForAllUsers + */ + public static final int AndroidManifestApplication_requiredForAllUsers = 27; + /** +

+ @attr description + Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device. Setting + this attribute to true will permit the Backup Manager to + attempt restore even when a version mismatch suggests that the data are + incompatible. Use with caution! + +

The default value of this attribute is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restoreAnyVersion}. + @attr name android:restoreAnyVersion + */ + public static final int AndroidManifestApplication_restoreAnyVersion = 21; + /** +

+ @attr description + @deprecated This attribute is not used by the Android operating system. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restoreNeedsApplication}. + @attr name android:restoreNeedsApplication + */ + @Deprecated + public static final int AndroidManifestApplication_restoreNeedsApplication = 19; + /** +

+ @attr description + Declare that this application requires access to restricted accounts of a certain + type. The default value is null and restricted accounts won\'t be visible to this + application. The type should correspond to the account authenticator type, such as + "com.google". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restrictedAccountType}. + @attr name android:restrictedAccountType + */ + public static final int AndroidManifestApplication_restrictedAccountType = 28; + /** +

+ @attr description + Declare that your application will be able to deal with RTL (right to left) layouts. + If set to false (default value), your application will not care about RTL layouts. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#supportsRtl}. + @attr name android:supportsRtl + */ + public static final int AndroidManifestApplication_supportsRtl = 26; + /** +

+ @attr description + Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskAffinity}. + @attr name android:taskAffinity + */ + public static final int AndroidManifestApplication_taskAffinity = 12; + /** +

+ @attr description + Option to indicate this application is only for testing purposes. + For example, it may expose functionality or data outside of itself + that would cause a security hole, but is useful for testing. This + kind of application can not be installed without the + INSTALL_ALLOW_TEST flag, which means only through adb install. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#testOnly}. + @attr name android:testOnly + */ + public static final int AndroidManifestApplication_testOnly = 15; + /** +

+ @attr description + The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#theme}. + @attr name android:theme + */ + public static final int AndroidManifestApplication_theme = 0; + /** +

+ @attr description + Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#uiOptions}. + @attr name android:uiOptions + */ + public static final int AndroidManifestApplication_uiOptions = 25; + /** +

+ @attr description + Flag indicating whether the application requests the VM to operate in + the safe mode. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#vmSafeMode}. + @attr name android:vmSafeMode + */ + public static final int AndroidManifestApplication_vmSafeMode = 20; + /** Attributes that can be supplied in an AndroidManifest.xml + category tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag. + See {@link android.content.IntentFilter#addCategory} for + more information. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestCategory_name android:name} The name of category that is handled, using the Java-style + naming convention.
+ @see #AndroidManifestCategory_name + */ + public static final int[] AndroidManifestCategory = { + 0x01010003 + }; + /** +

+ @attr description + The name of category that is handled, using the Java-style + naming convention. For example, to support + {@link android.content.Intent#CATEGORY_LAUNCHER Intent.CATEGORY_LAUNCHER} + you would put android.intent.category.LAUNCHER here. + Custom actions should generally use a prefix matching the + package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestCategory_name = 0; + /** Attributes that can be supplied in an AndroidManifest.xml + screen tag, a child of compatible-screens, + which is itself a child of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestCompatibleScreensScreen_screenDensity android:screenDensity} Specifies a compatible screen density, as per the device + configuration screen density bins.
{@link #AndroidManifestCompatibleScreensScreen_screenSize android:screenSize} Specifies a compatible screen size, as per the device + configuration screen size bins.
+ @see #AndroidManifestCompatibleScreensScreen_screenDensity + @see #AndroidManifestCompatibleScreensScreen_screenSize + */ + public static final int[] AndroidManifestCompatibleScreensScreen = { + 0x010102ca, 0x010102cb + }; + /** +

+ @attr description + Specifies a compatible screen density, as per the device + configuration screen density bins. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ldpi120 A low density screen, approximately 120dpi.
mdpi160 A medium density screen, approximately 160dpi.
hdpi240 A high density screen, approximately 240dpi.
xhdpi320 An extra high density screen, approximately 320dpi.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenDensity}. + @attr name android:screenDensity + */ + public static final int AndroidManifestCompatibleScreensScreen_screenDensity = 1; + /** +

+ @attr description + Specifies a compatible screen size, as per the device + configuration screen size bins. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
small200 A small screen configuration, at least 240x320dp.
normal300 A normal screen configuration, at least 320x480dp.
large400 A large screen configuration, at least 400x530dp.
xlarge500 An extra large screen configuration, at least 600x800dp.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenSize}. + @attr name android:screenSize + */ + public static final int AndroidManifestCompatibleScreensScreen_screenSize = 0; + /** Attributes that can be supplied in an AndroidManifest.xml + data tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag, describing + the types of data that match. This tag can be specified multiple + times to supply multiple data options, as described in the + {@link android.content.IntentFilter} class. Note that all such + tags are adding options to the same IntentFilter so that, for example, + <data android:scheme="myscheme" android:host="me.com" /> + is equivalent to <data android:scheme="myscheme" /> + <data android:host="me.com" />. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestData_host android:host} Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}.
{@link #AndroidManifestData_mimeType android:mimeType} Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}.
{@link #AndroidManifestData_path android:path} Specify a URI path that must exactly match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestData_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestData_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
{@link #AndroidManifestData_port android:port} Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}.
{@link #AndroidManifestData_scheme android:scheme} Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}.
{@link #AndroidManifestData_ssp android:ssp} Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestData_sspPattern android:sspPattern} Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestData_sspPrefix android:sspPrefix} Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
+ @see #AndroidManifestData_host + @see #AndroidManifestData_mimeType + @see #AndroidManifestData_path + @see #AndroidManifestData_pathPattern + @see #AndroidManifestData_pathPrefix + @see #AndroidManifestData_port + @see #AndroidManifestData_scheme + @see #AndroidManifestData_ssp + @see #AndroidManifestData_sspPattern + @see #AndroidManifestData_sspPrefix + */ + public static final int[] AndroidManifestData = { + 0x01010026, 0x01010027, 0x01010028, 0x01010029, + 0x0101002a, 0x0101002b, 0x0101002c, 0x010103e3, + 0x010103e4, 0x010103e5 + }; + /** +

+ @attr description + Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. +

Note: host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + host names here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#host}. + @attr name android:host + */ + public static final int AndroidManifestData_host = 2; + /** +

+ @attr description + Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int AndroidManifestData_mimeType = 0; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestData_path = 4; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestData_pathPattern = 6; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestData_pathPrefix = 5; + /** +

+ @attr description + Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. If a host is supplied + but not a port, any port is matched. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#port}. + @attr name android:port + */ + public static final int AndroidManifestData_port = 3; + /** +

+ @attr description + Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}. +

Note: scheme matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + schemes here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scheme}. + @attr name android:scheme + */ + public static final int AndroidManifestData_scheme = 1; + /** +

+ @attr description + Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ssp}. + @attr name android:ssp + */ + public static final int AndroidManifestData_ssp = 7; + /** +

+ @attr description + Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sspPattern}. + @attr name android:sspPattern + */ + public static final int AndroidManifestData_sspPattern = 9; + /** +

+ @attr description + Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sspPrefix}. + @attr name android:sspPrefix + */ + public static final int AndroidManifestData_sspPrefix = 8; + /** Attributes that can be supplied in an AndroidManifest.xml + grant-uri-permission tag, a child of the + {@link #AndroidManifestProvider provider} tag, describing a specific + URI path that can be granted as a permission. This tag can be + specified multiple time to supply multiple paths. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestGrantUriPermission_path android:path} Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestGrantUriPermission_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestGrantUriPermission_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
+ @see #AndroidManifestGrantUriPermission_path + @see #AndroidManifestGrantUriPermission_pathPattern + @see #AndroidManifestGrantUriPermission_pathPrefix + */ + public static final int[] AndroidManifestGrantUriPermission = { + 0x0101002a, 0x0101002b, 0x0101002c + }; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestGrantUriPermission_path = 0; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestGrantUriPermission_pathPattern = 2; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestGrantUriPermission_pathPrefix = 1; + /** Attributes that can be supplied in an AndroidManifest.xml + instrumentation tag, a child of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestInstrumentation_functionalTest android:functionalTest} Flag indicating that an Instrumentation class should be run as a + functional test.
{@link #AndroidManifestInstrumentation_handleProfiling android:handleProfiling} Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running.
{@link #AndroidManifestInstrumentation_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestInstrumentation_label android:label} A user-legible name for the given item.
{@link #AndroidManifestInstrumentation_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestInstrumentation_name android:name} Required name of the class implementing the instrumentation, deriving from + {@link android.app.Instrumentation}.
{@link #AndroidManifestInstrumentation_targetPackage android:targetPackage} The name of the application package that an Instrumentation object + will run against.
+ @see #AndroidManifestInstrumentation_functionalTest + @see #AndroidManifestInstrumentation_handleProfiling + @see #AndroidManifestInstrumentation_icon + @see #AndroidManifestInstrumentation_label + @see #AndroidManifestInstrumentation_logo + @see #AndroidManifestInstrumentation_name + @see #AndroidManifestInstrumentation_targetPackage + */ + public static final int[] AndroidManifestInstrumentation = { + 0x01010001, 0x01010002, 0x01010003, 0x01010021, + 0x01010022, 0x01010023, 0x010102be + }; + /** +

+ @attr description + Flag indicating that an Instrumentation class should be run as a + functional test. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#functionalTest}. + @attr name android:functionalTest + */ + public static final int AndroidManifestInstrumentation_functionalTest = 5; + /** +

+ @attr description + Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running. + This allows it to target profiling data at a specific set of + operations. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#handleProfiling}. + @attr name android:handleProfiling + */ + public static final int AndroidManifestInstrumentation_handleProfiling = 4; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestInstrumentation_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestInstrumentation_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestInstrumentation_logo = 6; + /** +

+ @attr description + Required name of the class implementing the instrumentation, deriving from + {@link android.app.Instrumentation}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestInstrumentation_name = 2; + /** +

+ @attr description + The name of the application package that an Instrumentation object + will run against. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetPackage}. + @attr name android:targetPackage + */ + public static final int AndroidManifestInstrumentation_targetPackage = 3; + /** The intent-filter tag is used to construct an + {@link android.content.IntentFilter} object that will be used + to determine which component can handle a particular + {@link android.content.Intent} that has been given to the system. + It can be used as a child of the + {@link #AndroidManifestActivity activity}, + {@link #AndroidManifestReceiver receiver} and + {@link #AndroidManifestService service} + tags. + +

Zero or more {@link #AndroidManifestAction action}, + {@link #AndroidManifestCategory category}, and/or + {@link #AndroidManifestData data} tags should be + included inside to describe the contents of the filter. + +

The optional label and icon attributes here are used with + an activity to supply an alternative description of that activity + when it is being started through an Intent matching this filter. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AndroidManifestIntentFilter_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestIntentFilter_label android:label} A user-legible name for the given item.
{@link #AndroidManifestIntentFilter_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestIntentFilter_priority android:priority} Specify the relative importance or ability in handling a particular + Intent.
+ @see #AndroidManifestIntentFilter_icon + @see #AndroidManifestIntentFilter_label + @see #AndroidManifestIntentFilter_logo + @see #AndroidManifestIntentFilter_priority + */ + public static final int[] AndroidManifestIntentFilter = { + 0x01010001, 0x01010002, 0x0101001c, 0x010102be + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestIntentFilter_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestIntentFilter_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestIntentFilter_logo = 3; + /** +

+ @attr description + Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#priority}. + @attr name android:priority + */ + public static final int AndroidManifestIntentFilter_priority = 2; + /** The library tag declares that this apk is providing itself + as a shared library for other applications to use. It can only be used + with apks that are built in to the system image. Other apks can link to + it with the {@link #AndroidManifestUsesLibrary uses-library} tag. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestLibrary_name android:name} Required public name of the library, which other components and + packages will use when referring to this library.
+ @see #AndroidManifestLibrary_name + */ + public static final int[] AndroidManifestLibrary = { + 0x01010003 + }; + /** +

+ @attr description + Required public name of the library, which other components and + packages will use when referring to this library. This is a string using + Java-style scoping to ensure it is unique. The name should typically + be the same as the apk's package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestLibrary_name = 0; + /** The meta-data tag is used to attach additional + arbitrary data to an application component. The data can later + be retrieved programmatically from the + {@link android.content.pm.ComponentInfo#metaData + ComponentInfo.metaData} field. There is no meaning given to this + data by the system. You may supply the data through either the + value or resource attribute; if both + are given, then resource will be used. + +

It is highly recommended that you avoid supplying related data as + multiple separate meta-data entries. Instead, if you have complex + data to associate with a component, then use the resource + attribute to assign an XML resource that the client can parse to + retrieve the complete data. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestMetaData_name android:name} A unique name for the given item.
{@link #AndroidManifestMetaData_resource android:resource} Resource identifier to assign to this piece of named meta-data.
{@link #AndroidManifestMetaData_value android:value} Concrete value to assign to this piece of named meta-data.
+ @see #AndroidManifestMetaData_name + @see #AndroidManifestMetaData_resource + @see #AndroidManifestMetaData_value + */ + public static final int[] AndroidManifestMetaData = { + 0x01010003, 0x01010024, 0x01010025 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestMetaData_name = 0; + /** +

+ @attr description + Resource identifier to assign to this piece of named meta-data. + The resource identifier can later be retrieved from the meta data + Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#resource}. + @attr name android:resource + */ + public static final int AndroidManifestMetaData_resource = 2; + /** +

+ @attr description + Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int AndroidManifestMetaData_value = 1; + /** Private tag to declare the original package name that this package is + based on. Only used for packages installed in the system image. If + given, and different than the actual package name, and the given + original package was previously installed on the device but the new + one was not, then the data for the old one will be renamed to be + for the new package. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestOriginalPackage_name android:name} A unique name for the given item.
+ @see #AndroidManifestOriginalPackage_name + */ + public static final int[] AndroidManifestOriginalPackage = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestOriginalPackage_name = 0; + /** Attributes relating to a package verifier. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestPackageVerifier_name android:name} Specifies the Java-style package name that defines this + package verifier.
{@link #AndroidManifestPackageVerifier_publicKey android:publicKey} The Base64 encoded public key of the package verifier's + signature.
+ @see #AndroidManifestPackageVerifier_name + @see #AndroidManifestPackageVerifier_publicKey + */ + public static final int[] AndroidManifestPackageVerifier = { + 0x01010003, 0x010103a6 + }; + /** +

+ @attr description + Specifies the Java-style package name that defines this + package verifier. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPackageVerifier_name = 0; + /** +

+ @attr description + The Base64 encoded public key of the package verifier's + signature. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#publicKey}. + @attr name android:publicKey + */ + public static final int AndroidManifestPackageVerifier_publicKey = 1; + /** Attributes that can be supplied in an AndroidManifest.xml + path-permission tag, a child of the + {@link #AndroidManifestProvider provider} tag, describing a permission + that allows access to a specific path in the provider. This tag can be + specified multiple time to supply multiple paths. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPathPermission_path android:path} Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestPathPermission_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestPathPermission_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
{@link #AndroidManifestPathPermission_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestPathPermission_readPermission android:readPermission} A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}.
{@link #AndroidManifestPathPermission_writePermission android:writePermission} A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}.
+ @see #AndroidManifestPathPermission_path + @see #AndroidManifestPathPermission_pathPattern + @see #AndroidManifestPathPermission_pathPrefix + @see #AndroidManifestPathPermission_permission + @see #AndroidManifestPathPermission_readPermission + @see #AndroidManifestPathPermission_writePermission + */ + public static final int[] AndroidManifestPathPermission = { + 0x01010006, 0x01010007, 0x01010008, 0x0101002a, + 0x0101002b, 0x0101002c + }; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestPathPermission_path = 3; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestPathPermission_pathPattern = 5; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestPathPermission_pathPrefix = 4; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestPathPermission_permission = 0; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#readPermission}. + @attr name android:readPermission + */ + public static final int AndroidManifestPathPermission_readPermission = 1; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#writePermission}. + @attr name android:writePermission + */ + public static final int AndroidManifestPathPermission_writePermission = 2; + /** The permission tag declares a security permission that can be + used to control access from other packages to specific components or + features in your package (or other packages). See the + Security and Permissions + document for more information on permissions. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermission_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestPermission_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermission_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermission_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermission_name android:name} Required public name of the permission, which other components and + packages will use when referring to this permission.
{@link #AndroidManifestPermission_permissionFlags android:permissionFlags} Flags indicating more context for a permission.
{@link #AndroidManifestPermission_permissionGroup android:permissionGroup} Specified the name of a group that this permission is associated + with.
{@link #AndroidManifestPermission_protectionLevel android:protectionLevel} Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it.
+ @see #AndroidManifestPermission_description + @see #AndroidManifestPermission_icon + @see #AndroidManifestPermission_label + @see #AndroidManifestPermission_logo + @see #AndroidManifestPermission_name + @see #AndroidManifestPermission_permissionFlags + @see #AndroidManifestPermission_permissionGroup + @see #AndroidManifestPermission_protectionLevel + */ + public static final int[] AndroidManifestPermission = { + 0x01010001, 0x01010002, 0x01010003, 0x01010009, + 0x0101000a, 0x01010020, 0x010102be, 0x010103c7 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestPermission_description = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermission_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermission_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermission_logo = 6; + /** +

+ @attr description + Required public name of the permission, which other components and + packages will use when referring to this permission. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermission_name = 2; + /** +

+ @attr description + Flags indicating more context for a permission. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
costsMoney0x0001 Set to indicate that this permission allows an operation that + may cost the user money. Such permissions may be highlighted + when shown to the user with this additional information.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionFlags}. + @attr name android:permissionFlags + */ + public static final int AndroidManifestPermission_permissionFlags = 7; + /** +

+ @attr description + Specified the name of a group that this permission is associated + with. The group must have been defined with the + {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionGroup}. + @attr name android:permissionGroup + */ + public static final int AndroidManifestPermission_permissionGroup = 4; + /** +

+ @attr description + Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it. {@link + android.Manifest.permission Standard permissions} have a predefined and + permanent protectionLevel. If you are creating a custom permission in an + application, you can define a protectionLevel attribute with one of the + values listed below. If no protectionLevel is defined for a custom + permission, the system assigns the default ("normal"). + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
normal0 A lower-risk permission that gives an application access to isolated + application-level features, with minimal risk to other applications, + the system, or the user. The system automatically grants this type + of permission to a requesting application at installation, without + asking for the user's explicit approval (though the user always + has the option to review these permissions before installing).
dangerous1 A higher-risk permission that would give a requesting application + access to private user data or control over the device that can + negatively impact the user. Because this type of permission + introduces potential risk, the system may not automatically + grant it to the requesting application. For example, any dangerous + permissions requested by an application may be displayed to the + user and require confirmation before proceeding, or some other + approach may be taken to avoid the user automatically allowing + the use of such facilities.
signature2 A permission that the system is to grant only if the requesting + application is signed with the same certificate as the application + that declared the permission. If the certificates match, the system + automatically grants the permission without notifying the user or + asking for the user's explicit approval.
signatureOrSystem3 A permission that the system is to grant only to packages in the + Android system image or that are signed with the same + certificates. Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
system0x10 Additional flag from base permission type: this permission can also + be granted to any applications installed on the system image. + Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission flag is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
development0x20 Additional flag from base permission type: this permission can also + (optionally) be granted to development applications.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#protectionLevel}. + @attr name android:protectionLevel + */ + public static final int AndroidManifestPermission_protectionLevel = 3; + /** The permission-group tag declares a logical grouping of + related permissions. + +

Note that this tag does not declare a permission itself, only + a namespace in which further permissions can be placed. See + the {@link #AndroidManifestPermission <permission>} tag for + more information. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermissionGroup_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestPermissionGroup_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermissionGroup_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermissionGroup_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermissionGroup_name android:name} Required public name of the permission group, permissions will use + to specify the group they are in.
{@link #AndroidManifestPermissionGroup_permissionGroupFlags android:permissionGroupFlags} Flags indicating more context for a permission group.
{@link #AndroidManifestPermissionGroup_priority android:priority} Specify the relative importance or ability in handling a particular + Intent.
+ @see #AndroidManifestPermissionGroup_description + @see #AndroidManifestPermissionGroup_icon + @see #AndroidManifestPermissionGroup_label + @see #AndroidManifestPermissionGroup_logo + @see #AndroidManifestPermissionGroup_name + @see #AndroidManifestPermissionGroup_permissionGroupFlags + @see #AndroidManifestPermissionGroup_priority + */ + public static final int[] AndroidManifestPermissionGroup = { + 0x01010001, 0x01010002, 0x01010003, 0x0101001c, + 0x01010020, 0x010102be, 0x010103c5 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestPermissionGroup_description = 4; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermissionGroup_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermissionGroup_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermissionGroup_logo = 5; + /** +

+ @attr description + Required public name of the permission group, permissions will use + to specify the group they are in. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermissionGroup_name = 2; + /** +

+ @attr description + Flags indicating more context for a permission group. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
personalInfo0x0001 Set to indicate that this permission group contains permissions + protecting access to some information that is considered + personal to the user (such as contacts, e-mails, etc).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionGroupFlags}. + @attr name android:permissionGroupFlags + */ + public static final int AndroidManifestPermissionGroup_permissionGroupFlags = 6; + /** +

+ @attr description + Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#priority}. + @attr name android:priority + */ + public static final int AndroidManifestPermissionGroup_priority = 3; + /** The permission-tree tag declares the base of a tree of + permission values: it declares that this package has ownership of + the given permission name, as well as all names underneath it + (separated by '.'). This allows you to use the + {@link android.content.pm.PackageManager#addPermission + PackageManager.addPermission()} method to dynamically add new + permissions under this tree. + +

Note that this tag does not declare a permission itself, only + a namespace in which further permissions can be placed. See + the {@link #AndroidManifestPermission <permission>} tag for + more information. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermissionTree_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermissionTree_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermissionTree_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermissionTree_name android:name} Required public name of the permission tree, which is the base name + of all permissions under it.
+ @see #AndroidManifestPermissionTree_icon + @see #AndroidManifestPermissionTree_label + @see #AndroidManifestPermissionTree_logo + @see #AndroidManifestPermissionTree_name + */ + public static final int[] AndroidManifestPermissionTree = { + 0x01010001, 0x01010002, 0x01010003, 0x010102be + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermissionTree_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermissionTree_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermissionTree_logo = 3; + /** +

+ @attr description + Required public name of the permission tree, which is the base name + of all permissions under it. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". A permission tree name + must have more than two segments in its path; that is, + "com.me.foo" is okay, but not "com.me" or "com". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermissionTree_name = 2; + /** Private tag to declare system protected broadcast actions. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestProtectedBroadcast_name android:name} A unique name for the given item.
+ @see #AndroidManifestProtectedBroadcast_name + */ + public static final int[] AndroidManifestProtectedBroadcast = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestProtectedBroadcast_name = 0; + /** The provider tag declares a + {@link android.content.ContentProvider} class that is available + as part of the package's application components, supplying structured + access to data managed by the application. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestProvider_authorities android:authorities} Specify the authorities under which this content provider can be + found.
{@link #AndroidManifestProvider_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestProvider_enabled android:enabled} Specify whether this provider is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestProvider_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestProvider_grantUriPermissions android:grantUriPermissions} If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission.
{@link #AndroidManifestProvider_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestProvider_initOrder android:initOrder} Specify the order in which content providers hosted by a process + are instantiated when that process is created.
{@link #AndroidManifestProvider_label android:label} A user-legible name for the given item.
{@link #AndroidManifestProvider_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestProvider_multiprocess android:multiprocess} Specify whether a component is allowed to have multiple instances + of itself running in different processes.
{@link #AndroidManifestProvider_name android:name} Required name of the class implementing the provider, deriving from + {@link android.content.ContentProvider}.
{@link #AndroidManifestProvider_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestProvider_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestProvider_readPermission android:readPermission} A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}.
{@link #AndroidManifestProvider_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestProvider_syncable android:syncable} Flag indicating whether this content provider would like to + participate in data synchronization.
{@link #AndroidManifestProvider_writePermission android:writePermission} A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}.
+ @see #AndroidManifestProvider_authorities + @see #AndroidManifestProvider_description + @see #AndroidManifestProvider_enabled + @see #AndroidManifestProvider_exported + @see #AndroidManifestProvider_grantUriPermissions + @see #AndroidManifestProvider_icon + @see #AndroidManifestProvider_initOrder + @see #AndroidManifestProvider_label + @see #AndroidManifestProvider_logo + @see #AndroidManifestProvider_multiprocess + @see #AndroidManifestProvider_name + @see #AndroidManifestProvider_permission + @see #AndroidManifestProvider_process + @see #AndroidManifestProvider_readPermission + @see #AndroidManifestProvider_singleUser + @see #AndroidManifestProvider_syncable + @see #AndroidManifestProvider_writePermission + */ + public static final int[] AndroidManifestProvider = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x01010007, 0x01010008, 0x0101000e, 0x01010010, + 0x01010011, 0x01010013, 0x01010018, 0x01010019, + 0x0101001a, 0x0101001b, 0x01010020, 0x010102be, + 0x010103bf + }; + /** +

+ @attr description + Specify the authorities under which this content provider can be + found. Multiple authorities may be supplied by separating them + with a semicolon. Authority names should use a Java-style naming + convention (such as com.google.provider.MyProvider) + in order to avoid conflicts. Typically this name is the same + as the class implementation describing the provider's data structure. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#authorities}. + @attr name android:authorities + */ + public static final int AndroidManifestProvider_authorities = 10; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestProvider_description = 14; + /** +

+ @attr description + Specify whether this provider is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestProvider_enabled = 6; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestProvider_exported = 7; + /** +

+ @attr description + If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission. If you are supporting this feature, you must be + sure to call {@link android.content.Context#revokeUriPermission + Context.revokeUriPermission} when URIs are deleted from your + provider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#grantUriPermissions}. + @attr name android:grantUriPermissions + */ + public static final int AndroidManifestProvider_grantUriPermissions = 13; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestProvider_icon = 1; + /** +

+ @attr description + Specify the order in which content providers hosted by a process + are instantiated when that process is created. Not needed unless + you have providers with dependencies between each other, to make + sure that they are created in the order needed by those dependencies. + The value is a simple integer, with higher numbers being + initialized first. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initOrder}. + @attr name android:initOrder + */ + public static final int AndroidManifestProvider_initOrder = 12; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestProvider_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestProvider_logo = 15; + /** +

+ @attr description + Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#multiprocess}. + @attr name android:multiprocess + */ + public static final int AndroidManifestProvider_multiprocess = 9; + /** +

+ @attr description + Required name of the class implementing the provider, deriving from + {@link android.content.ContentProvider}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyProvider); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestProvider_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestProvider_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestProvider_process = 8; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#readPermission}. + @attr name android:readPermission + */ + public static final int AndroidManifestProvider_readPermission = 4; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestProvider_singleUser = 16; + /** +

+ @attr description + Flag indicating whether this content provider would like to + participate in data synchronization. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#syncable}. + @attr name android:syncable + */ + public static final int AndroidManifestProvider_syncable = 11; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#writePermission}. + @attr name android:writePermission + */ + public static final int AndroidManifestProvider_writePermission = 5; + /** The receiver tag declares an + {@link android.content.BroadcastReceiver} class that is available + as part of the package's application components, allowing the + application to receive actions or data broadcast by other + applications even if it is not currently running. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of a receiver, to specify the Intents + it will receive. If none are specified, the receiver will only + be run when an Intent is broadcast that is directed at its specific + class name. The receiver tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestReceiver_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestReceiver_enabled android:enabled} Specify whether the receiver is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestReceiver_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestReceiver_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestReceiver_label android:label} A user-legible name for the given item.
{@link #AndroidManifestReceiver_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestReceiver_name android:name} Required name of the class implementing the receiver, deriving from + {@link android.content.BroadcastReceiver}.
{@link #AndroidManifestReceiver_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestReceiver_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestReceiver_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
+ @see #AndroidManifestReceiver_description + @see #AndroidManifestReceiver_enabled + @see #AndroidManifestReceiver_exported + @see #AndroidManifestReceiver_icon + @see #AndroidManifestReceiver_label + @see #AndroidManifestReceiver_logo + @see #AndroidManifestReceiver_name + @see #AndroidManifestReceiver_permission + @see #AndroidManifestReceiver_process + @see #AndroidManifestReceiver_singleUser + */ + public static final int[] AndroidManifestReceiver = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010011, 0x01010020, + 0x010102be, 0x010103bf + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestReceiver_description = 7; + /** +

+ @attr description + Specify whether the receiver is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestReceiver_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestReceiver_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestReceiver_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestReceiver_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestReceiver_logo = 8; + /** +

+ @attr description + Required name of the class implementing the receiver, deriving from + {@link android.content.BroadcastReceiver}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyReceiver); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestReceiver_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestReceiver_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestReceiver_process = 6; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestReceiver_singleUser = 9; + /** The service tag declares a + {@link android.app.Service} class that is available + as part of the package's application components, implementing + long-running background operations or a rich communication API + that can be called by other packages. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of a service, to specify the Intents + that can connect with it. If none are specified, the service can + only be accessed by direct specification of its class name. + The service tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestService_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestService_enabled android:enabled} Specify whether the service is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestService_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestService_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestService_isolatedProcess android:isolatedProcess} If set to true, this service will run under a special process + that is isolated from the rest of the system.
{@link #AndroidManifestService_label android:label} A user-legible name for the given item.
{@link #AndroidManifestService_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestService_name android:name} Required name of the class implementing the service, deriving from + {@link android.app.Service}.
{@link #AndroidManifestService_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestService_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestService_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestService_stopWithTask android:stopWithTask} If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application.
+ @see #AndroidManifestService_description + @see #AndroidManifestService_enabled + @see #AndroidManifestService_exported + @see #AndroidManifestService_icon + @see #AndroidManifestService_isolatedProcess + @see #AndroidManifestService_label + @see #AndroidManifestService_logo + @see #AndroidManifestService_name + @see #AndroidManifestService_permission + @see #AndroidManifestService_process + @see #AndroidManifestService_singleUser + @see #AndroidManifestService_stopWithTask + */ + public static final int[] AndroidManifestService = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010011, 0x01010020, + 0x010102be, 0x0101036a, 0x010103a9, 0x010103bf + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestService_description = 7; + /** +

+ @attr description + Specify whether the service is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestService_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestService_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestService_icon = 1; + /** +

+ @attr description + If set to true, this service will run under a special process + that is isolated from the rest of the system. The only communication + with it is through the Service API (binding and starting). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isolatedProcess}. + @attr name android:isolatedProcess + */ + public static final int AndroidManifestService_isolatedProcess = 10; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestService_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestService_logo = 8; + /** +

+ @attr description + Required name of the class implementing the service, deriving from + {@link android.app.Service}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyService); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestService_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestService_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestService_process = 6; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestService_singleUser = 11; + /** +

+ @attr description + If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application. The default is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stopWithTask}. + @attr name android:stopWithTask + */ + public static final int AndroidManifestService_stopWithTask = 9; + /** The input-type tag is a child of the supports-input tag, which + is itself a child of the root {@link #AndroidManifest manifest} tag. Each + input-type tag specifices the name of a specific input device type. When + grouped with the other elements of the parent supports-input tag it defines + a collection of input devices, which when all used together, are considered a supported + input mechanism for the application. There may be multiple supports-input + tags defined, each containing a different combination of input device types. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestSupportsInputInputType_name android:name} Specifices the name of the input device type
+ @see #AndroidManifestSupportsInputInputType_name + */ + public static final int[] AndroidManifestSupportsInputInputType = { + 0x01010003 + }; + /** +

+ @attr description + Specifices the name of the input device type + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestSupportsInputInputType_name = 0; + /** The supports-screens specifies the screen dimensions an + application supports. By default a modern application supports all + screen sizes and must explicitly disable certain screen sizes here; + older applications are assumed to only support the traditional normal + (HVGA) screen size. Note that screen size is a separate axis from + density, and is determined as the available pixels to an application + after density scaling has been applied. + +

This appears as a child tag of the + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestSupportsScreens_anyDensity android:anyDensity} Indicates whether the application can accommodate any screen + density.
{@link #AndroidManifestSupportsScreens_compatibleWidthLimitDp android:compatibleWidthLimitDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with.
{@link #AndroidManifestSupportsScreens_largeScreens android:largeScreens} Indicates whether the application supports larger screen form-factors.
{@link #AndroidManifestSupportsScreens_largestWidthLimitDp android:largestWidthLimitDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with.
{@link #AndroidManifestSupportsScreens_normalScreens android:normalScreens} Indicates whether an application supports the normal screen + form-factors.
{@link #AndroidManifestSupportsScreens_requiresSmallestWidthDp android:requiresSmallestWidthDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with.
{@link #AndroidManifestSupportsScreens_resizeable android:resizeable} Indicates whether the application can resize itself to newer + screen sizes.
{@link #AndroidManifestSupportsScreens_smallScreens android:smallScreens} Indicates whether the application supports smaller screen form-factors.
{@link #AndroidManifestSupportsScreens_xlargeScreens android:xlargeScreens} Indicates whether the application supports extra large screen form-factors.
+ @see #AndroidManifestSupportsScreens_anyDensity + @see #AndroidManifestSupportsScreens_compatibleWidthLimitDp + @see #AndroidManifestSupportsScreens_largeScreens + @see #AndroidManifestSupportsScreens_largestWidthLimitDp + @see #AndroidManifestSupportsScreens_normalScreens + @see #AndroidManifestSupportsScreens_requiresSmallestWidthDp + @see #AndroidManifestSupportsScreens_resizeable + @see #AndroidManifestSupportsScreens_smallScreens + @see #AndroidManifestSupportsScreens_xlargeScreens + */ + public static final int[] AndroidManifestSupportsScreens = { + 0x0101026c, 0x01010284, 0x01010285, 0x01010286, + 0x0101028d, 0x010102bf, 0x01010364, 0x01010365, + 0x01010366 + }; + /** +

+ @attr description + Indicates whether the application can accommodate any screen + density. Older applications are assumed to not be able to, + new ones able to. You can explicitly supply your abilities + here. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#anyDensity}. + @attr name android:anyDensity + */ + public static final int AndroidManifestSupportsScreens_anyDensity = 0; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application is designed for. If this value is smaller than + the "smallest screen width" of the device it is running on, the user + is offered to run it in a compatibility mode that emulates a + smaller screen and zooms it to fit the screen. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for compatibleWidthLimitDp is larger than 320. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#compatibleWidthLimitDp}. + @attr name android:compatibleWidthLimitDp + */ + public static final int AndroidManifestSupportsScreens_compatibleWidthLimitDp = 7; + /** +

+ @attr description + Indicates whether the application supports larger screen form-factors. + A large screen is defined as a screen that is significantly larger + than a normal phone screen, and thus may require some special care + on the application's part to make good use of it. An example would + be a VGA normal density screen, though even larger screens + are certainly possible. An application that does not support + large screens will be placed as a postage stamp on such a + screen, so that it retains the dimensions it was originally + designed for. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largeScreens}. + @attr name android:largeScreens + */ + public static final int AndroidManifestSupportsScreens_largeScreens = 3; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can work well on. If this value is smaller than + the "smallest screen width" of the device it is running on, the + application will be forced in to screen compatibility mode with + no way for the user to turn it off. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for largestWidthLimitDp is larger than 320. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largestWidthLimitDp}. + @attr name android:largestWidthLimitDp + */ + public static final int AndroidManifestSupportsScreens_largestWidthLimitDp = 8; + /** +

+ @attr description + Indicates whether an application supports the normal screen + form-factors. Traditionally this is an HVGA normal density + screen, but WQVGA low density and WVGA high density are also + considered to be normal. This attribute is true by default, + and applications currently should leave it that way. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#normalScreens}. + @attr name android:normalScreens + */ + public static final int AndroidManifestSupportsScreens_normalScreens = 2; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with. This attribute provides the required minimum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can run on. For example, a typical phone + screen is 320, a 7" tablet 600, and a 10" tablet 720. If the + smallest screen width of the device is below the value supplied here, + then the application is considered incompatible with that device. + If not supplied, then any old smallScreens, normalScreens, largeScreens, + or xlargeScreens attributes will be used instead. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiresSmallestWidthDp}. + @attr name android:requiresSmallestWidthDp + */ + public static final int AndroidManifestSupportsScreens_requiresSmallestWidthDp = 6; + /** +

+ @attr description + Indicates whether the application can resize itself to newer + screen sizes. This is mostly used to distinguish between old + applications that may not be compatible with newly introduced + screen sizes and newer applications that should be; it will be + set for you automatically based on whether you are targeting + a newer platform that supports more screens. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#resizeable}. + @attr name android:resizeable + */ + public static final int AndroidManifestSupportsScreens_resizeable = 4; + /** +

+ @attr description + Indicates whether the application supports smaller screen form-factors. + A small screen is defined as one with a smaller aspect ratio than + the traditional HVGA screen; that is, for a portrait screen, less + tall than an HVGA screen. In practice, this means a QVGA low + density or VGA high density screen. An application that does + not support small screens will not be available for + small screen devices, since there is little the platform can do + to make such an application work on a smaller screen. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smallScreens}. + @attr name android:smallScreens + */ + public static final int AndroidManifestSupportsScreens_smallScreens = 1; + /** +

+ @attr description + Indicates whether the application supports extra large screen form-factors. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#xlargeScreens}. + @attr name android:xlargeScreens + */ + public static final int AndroidManifestSupportsScreens_xlargeScreens = 5; + /** The uses-configuration tag specifies + a specific hardware configuration value used by the application. + For example an application might specify that it requires + a physical keyboard or a particular navigation method like + trackball. Multiple such attribute values can be specified by the + application. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesConfiguration_reqFiveWayNav android:reqFiveWayNav} Application's requirement for five way navigation
{@link #AndroidManifestUsesConfiguration_reqHardKeyboard android:reqHardKeyboard} Application's requirement for a hard keyboard
{@link #AndroidManifestUsesConfiguration_reqKeyboardType android:reqKeyboardType} The input method preferred by an application.
{@link #AndroidManifestUsesConfiguration_reqNavigation android:reqNavigation} The navigation device preferred by an application.
{@link #AndroidManifestUsesConfiguration_reqTouchScreen android:reqTouchScreen} The type of touch screen used by an application.
+ @see #AndroidManifestUsesConfiguration_reqFiveWayNav + @see #AndroidManifestUsesConfiguration_reqHardKeyboard + @see #AndroidManifestUsesConfiguration_reqKeyboardType + @see #AndroidManifestUsesConfiguration_reqNavigation + @see #AndroidManifestUsesConfiguration_reqTouchScreen + */ + public static final int[] AndroidManifestUsesConfiguration = { + 0x01010227, 0x01010228, 0x01010229, 0x0101022a, + 0x01010232 + }; + /** +

+ @attr description + Application's requirement for five way navigation + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqFiveWayNav}. + @attr name android:reqFiveWayNav + */ + public static final int AndroidManifestUsesConfiguration_reqFiveWayNav = 4; + /** +

+ @attr description + Application's requirement for a hard keyboard + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqHardKeyboard}. + @attr name android:reqHardKeyboard + */ + public static final int AndroidManifestUsesConfiguration_reqHardKeyboard = 2; + /** +

+ @attr description + The input method preferred by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
nokeys1
qwerty2
twelvekey3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqKeyboardType}. + @attr name android:reqKeyboardType + */ + public static final int AndroidManifestUsesConfiguration_reqKeyboardType = 1; + /** +

+ @attr description + The navigation device preferred by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
undefined0
nonav1
dpad2
trackball3
wheel4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqNavigation}. + @attr name android:reqNavigation + */ + public static final int AndroidManifestUsesConfiguration_reqNavigation = 3; + /** +

+ @attr description + The type of touch screen used by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
notouch1
stylus2
finger3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqTouchScreen}. + @attr name android:reqTouchScreen + */ + public static final int AndroidManifestUsesConfiguration_reqTouchScreen = 0; + /** The uses-feature tag specifies + a specific feature used by the application. + For example an application might specify that it requires + specific version of OpenGL. Multiple such attribute + values can be specified by the application. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesFeature_glEsVersion android:glEsVersion} The GLES driver version number needed by an application.
{@link #AndroidManifestUsesFeature_name android:name} The name of the feature that is being used.
{@link #AndroidManifestUsesFeature_required android:required} Specify whether this feature is required for the application.
+ @see #AndroidManifestUsesFeature_glEsVersion + @see #AndroidManifestUsesFeature_name + @see #AndroidManifestUsesFeature_required + */ + public static final int[] AndroidManifestUsesFeature = { + 0x01010003, 0x01010281, 0x0101028e + }; + /** +

+ @attr description + The GLES driver version number needed by an application. + The higher 16 bits represent the major number and the lower 16 bits + represent the minor number. For example for GL 1.2 referring to + 0x00000102, the actual value should be set as 0x00010002. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#glEsVersion}. + @attr name android:glEsVersion + */ + public static final int AndroidManifestUsesFeature_glEsVersion = 1; + /** +

+ @attr description + The name of the feature that is being used. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesFeature_name = 0; + /** +

+ @attr description + Specify whether this feature is required for the application. + The default is true, meaning the application requires the + feature, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + not impose a restriction on where the application can be + installed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#required}. + @attr name android:required + */ + public static final int AndroidManifestUsesFeature_required = 2; + /** The uses-libraries specifies a shared library that this + package requires to be linked against. Specifying this flag tells the + system to include this library's code in your class loader. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestUsesLibrary_name android:name} Required name of the library you use.
{@link #AndroidManifestUsesLibrary_required android:required} Specify whether this library is required for the application.
+ @see #AndroidManifestUsesLibrary_name + @see #AndroidManifestUsesLibrary_required + */ + public static final int[] AndroidManifestUsesLibrary = { + 0x01010003, 0x0101028e + }; + /** +

+ @attr description + Required name of the library you use. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesLibrary_name = 0; + /** +

+ @attr description + Specify whether this library is required for the application. + The default is true, meaning the application requires the + library, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + allow the application to be installed even if the library + doesn't exist, and you will need to check for its presence + dynamically at runtime. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#required}. + @attr name android:required + */ + public static final int AndroidManifestUsesLibrary_required = 1; + /** The uses-permission tag requests a + {@link #AndroidManifestPermission <permission>} that the containing + package must be granted in order for it to operate correctly. + See the Security and Permissions + document for more information on permissions. Also available is a + {@link android.Manifest.permission list of permissions} included + with the base platform. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. + Specify whether this permission is required for the application. + The default is true, meaning the application requires the + permission, and it must always be granted when it is installed. + If you set this to false, then in some cases the application may + be installed with it being granted the permission, and it will + need to request the permission later if it needs it. + + +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestUsesPermission_maxSdkVersion android:maxSdkVersion} Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission.
{@link #AndroidManifestUsesPermission_name android:name} Required name of the permission you use, as published with the + corresponding name attribute of a + {@link android.R.styleable#AndroidManifestPermission <permission>} + tag; often this is one of the {@link android.Manifest.permission standard + system permissions}.
+ @see #AndroidManifestUsesPermission_maxSdkVersion + @see #AndroidManifestUsesPermission_name + */ + public static final int[] AndroidManifestUsesPermission = { + 0x01010003, 0x01010271 + }; + /** +

+ @attr description + Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission. When running on a version + of Android higher than the number given here, the permission will not + be requested. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxSdkVersion}. + @attr name android:maxSdkVersion + */ + public static final int AndroidManifestUsesPermission_maxSdkVersion = 1; + /** +

+ @attr description + Required name of the permission you use, as published with the + corresponding name attribute of a + {@link android.R.styleable#AndroidManifestPermission <permission>} + tag; often this is one of the {@link android.Manifest.permission standard + system permissions}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesPermission_name = 0; + /** The uses-sdk tag describes the SDK features that the + containing package must be running on to operate correctly. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesSdk_maxSdkVersion android:maxSdkVersion} This is the maximum SDK version number that an application works + on.
{@link #AndroidManifestUsesSdk_minSdkVersion android:minSdkVersion} This is the minimum SDK version number that the application + requires.
{@link #AndroidManifestUsesSdk_targetSdkVersion android:targetSdkVersion} This is the SDK version number that the application is targeting.
+ @see #AndroidManifestUsesSdk_maxSdkVersion + @see #AndroidManifestUsesSdk_minSdkVersion + @see #AndroidManifestUsesSdk_targetSdkVersion + */ + public static final int[] AndroidManifestUsesSdk = { + 0x0101020c, 0x01010270, 0x01010271 + }; + /** +

+ @attr description + This is the maximum SDK version number that an application works + on. You can use this to ensure your application is filtered out + of later versions of the platform when you know you have + incompatibility with them. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxSdkVersion}. + @attr name android:maxSdkVersion + */ + public static final int AndroidManifestUsesSdk_maxSdkVersion = 2; + /** +

+ @attr description + This is the minimum SDK version number that the application + requires. This number is an abstract integer, from the list + in {@link android.os.Build.VERSION_CODES} If + not supplied, the application will work on any SDK. This + may also be string (such as "Donut") if the application was built + against a development branch, in which case it will only work against + the development builds. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minSdkVersion}. + @attr name android:minSdkVersion + */ + public static final int AndroidManifestUsesSdk_minSdkVersion = 0; + /** +

+ @attr description + This is the SDK version number that the application is targeting. + It is able to run on older versions (down to minSdkVersion), but + was explicitly tested to work with the version specified here. + Specifying this version allows the platform to disable compatibility + code that are not required or enable newer features that are not + available to older applications. This may also be a string + (such as "Donut") if this is built against a development + branch, in which case minSdkVersion is also forced to be that + string. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetSdkVersion}. + @attr name android:targetSdkVersion + */ + public static final int AndroidManifestUsesSdk_targetSdkVersion = 1; + /** Attributes that can be used with a AnimatedRotateDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AnimatedRotateDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #AnimatedRotateDrawable_pivotX android:pivotX}
{@link #AnimatedRotateDrawable_pivotY android:pivotY}
{@link #AnimatedRotateDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #AnimatedRotateDrawable_drawable + @see #AnimatedRotateDrawable_pivotX + @see #AnimatedRotateDrawable_pivotY + @see #AnimatedRotateDrawable_visible + */ + public static final int[] AnimatedRotateDrawable = { + 0x01010194, 0x01010199, 0x010101b5, 0x010101b6, + 0x0101044a, 0x0101044b + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int AnimatedRotateDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int AnimatedRotateDrawable_pivotX = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int AnimatedRotateDrawable_pivotY = 3; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int AnimatedRotateDrawable_visible = 0; + /** Attributes that can be used with a Animation. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #Animation_background android:background} Special background behind animation.
{@link #Animation_detachWallpaper android:detachWallpaper} Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it.
{@link #Animation_duration android:duration} Amount of time (in milliseconds) for the animation to run.
{@link #Animation_fillAfter android:fillAfter} When set to true, the animation transformation is applied after the animation is + over.
{@link #Animation_fillBefore android:fillBefore} When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started.
{@link #Animation_fillEnabled android:fillEnabled} When set to true, the value of fillBefore is taken into account.
{@link #Animation_interpolator android:interpolator} Defines the interpolator used to smooth the animation movement in time.
{@link #Animation_repeatCount android:repeatCount} Defines how many times the animation should repeat.
{@link #Animation_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #Animation_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
{@link #Animation_zAdjustment android:zAdjustment} Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation.
+ @see #Animation_background + @see #Animation_detachWallpaper + @see #Animation_duration + @see #Animation_fillAfter + @see #Animation_fillBefore + @see #Animation_fillEnabled + @see #Animation_interpolator + @see #Animation_repeatCount + @see #Animation_repeatMode + @see #Animation_startOffset + @see #Animation_zAdjustment + */ + public static final int[] Animation = { + 0x010100d4, 0x01010141, 0x01010198, 0x010101bc, + 0x010101bd, 0x010101be, 0x010101bf, 0x010101c0, + 0x010101c1, 0x0101024f, 0x010102a6 + }; + /** +

+ @attr description + Special background behind animation. Only for use with window + animations. Can only be a color, and only black. If 0, the + default, there is no background. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int Animation_background = 0; + /** +

+ @attr description + Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detachWallpaper}. + @attr name android:detachWallpaper + */ + public static final int Animation_detachWallpaper = 10; + /** +

+ @attr description + Amount of time (in milliseconds) for the animation to run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Animation_duration = 2; + /** +

+ @attr description + When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillAfter}. + @attr name android:fillAfter + */ + public static final int Animation_fillAfter = 4; + /** +

+ @attr description + When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillBefore}. + @attr name android:fillBefore + */ + public static final int Animation_fillBefore = 3; + /** +

+ @attr description + When set to true, the value of fillBefore is taken into account. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillEnabled}. + @attr name android:fillEnabled + */ + public static final int Animation_fillEnabled = 9; + /** +

+ @attr description + Defines the interpolator used to smooth the animation movement in time. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Animation_interpolator = 1; + /** +

+ @attr description + Defines how many times the animation should repeat. The default value is 0. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatCount}. + @attr name android:repeatCount + */ + public static final int Animation_repeatCount = 6; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int Animation_repeatMode = 7; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int Animation_startOffset = 5; + /** +

+ @attr description + Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation. The default value is normal. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 The content being animated be kept in its current Z order.
top1 The content being animated is forced on top of all other + content for the duration of the animation.
bottom-1 The content being animated is forced under all other + content for the duration of the animation.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#zAdjustment}. + @attr name android:zAdjustment + */ + public static final int Animation_zAdjustment = 8; + /** Drawable used to render several animated frames. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AnimationDrawable_oneshot android:oneshot} If true, the animation will only run a single time and then + stop.
{@link #AnimationDrawable_variablePadding android:variablePadding} If true, allows the drawable's padding to change based on the + current state that is selected.
{@link #AnimationDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #AnimationDrawable_oneshot + @see #AnimationDrawable_variablePadding + @see #AnimationDrawable_visible + */ + public static final int[] AnimationDrawable = { + 0x01010194, 0x01010195, 0x01010197 + }; + /** +

+ @attr description + If true, the animation will only run a single time and then + stop. If false (the default), it will continually run, + restarting at the first frame after the last has finished. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#oneshot}. + @attr name android:oneshot + */ + public static final int AnimationDrawable_oneshot = 2; + /** +

+ @attr description + If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#variablePadding}. + @attr name android:variablePadding + */ + public static final int AnimationDrawable_variablePadding = 1; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int AnimationDrawable_visible = 0; + /** Represents a single frame inside an AnimationDrawable. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AnimationDrawableItem_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #AnimationDrawableItem_duration android:duration} Amount of time (in milliseconds) to display this frame.
+ @see #AnimationDrawableItem_drawable + @see #AnimationDrawableItem_duration + */ + public static final int[] AnimationDrawableItem = { + 0x01010198, 0x01010199 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int AnimationDrawableItem_drawable = 1; + /** +

+ @attr description + Amount of time (in milliseconds) to display this frame. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int AnimationDrawableItem_duration = 0; + /** Attributes that can be used with a AnimationSet. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AnimationSet_duration android:duration} Amount of time (in milliseconds) to display this frame.
{@link #AnimationSet_fillAfter android:fillAfter} When set to true, the animation transformation is applied after the animation is + over.
{@link #AnimationSet_fillBefore android:fillBefore} When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started.
{@link #AnimationSet_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #AnimationSet_shareInterpolator android:shareInterpolator}
{@link #AnimationSet_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
+ @see #AnimationSet_duration + @see #AnimationSet_fillAfter + @see #AnimationSet_fillBefore + @see #AnimationSet_repeatMode + @see #AnimationSet_shareInterpolator + @see #AnimationSet_startOffset + */ + public static final int[] AnimationSet = { + 0x01010198, 0x010101bb, 0x010101bc, 0x010101bd, + 0x010101be, 0x010101c0 + }; + /** +

+ @attr description + Amount of time (in milliseconds) to display this frame. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int AnimationSet_duration = 0; + /** +

+ @attr description + When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillAfter}. + @attr name android:fillAfter + */ + public static final int AnimationSet_fillAfter = 3; + /** +

+ @attr description + When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillBefore}. + @attr name android:fillBefore + */ + public static final int AnimationSet_fillBefore = 2; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int AnimationSet_repeatMode = 5; + /** +

This symbol is the offset where the {@link android.R.attr#shareInterpolator} + attribute's value can be found in the {@link #AnimationSet} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:shareInterpolator + */ + public static final int AnimationSet_shareInterpolator = 1; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int AnimationSet_startOffset = 4; + /** Attributes that can be used with a Animator. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Animator_duration android:duration} Amount of time (in milliseconds) for the animation to run.
{@link #Animator_interpolator android:interpolator} Defines the interpolator used to smooth the animation movement in time.
{@link #Animator_repeatCount android:repeatCount} Defines how many times the animation should repeat.
{@link #Animator_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #Animator_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
{@link #Animator_valueFrom android:valueFrom} Value the animation starts from.
{@link #Animator_valueTo android:valueTo} Value the animation animates to.
{@link #Animator_valueType android:valueType} The type of valueFrom and valueTo.
+ @see #Animator_duration + @see #Animator_interpolator + @see #Animator_repeatCount + @see #Animator_repeatMode + @see #Animator_startOffset + @see #Animator_valueFrom + @see #Animator_valueTo + @see #Animator_valueType + */ + public static final int[] Animator = { + 0x01010141, 0x01010198, 0x010101be, 0x010101bf, + 0x010101c0, 0x010102de, 0x010102df, 0x010102e0 + }; + /** +

+ @attr description + Amount of time (in milliseconds) for the animation to run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Animator_duration = 1; + /** +

+ @attr description + Defines the interpolator used to smooth the animation movement in time. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Animator_interpolator = 0; + /** +

+ @attr description + Defines how many times the animation should repeat. The default value is 0. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatCount}. + @attr name android:repeatCount + */ + public static final int Animator_repeatCount = 3; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int Animator_repeatMode = 4; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int Animator_startOffset = 2; + /** +

+ @attr description + Value the animation starts from. + + +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueFrom}. + @attr name android:valueFrom + */ + public static final int Animator_valueFrom = 5; + /** +

+ @attr description + Value the animation animates to. + + +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueTo}. + @attr name android:valueTo + */ + public static final int Animator_valueTo = 6; + /** +

+ @attr description + The type of valueFrom and valueTo. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floatType0 valueFrom and valueTo are floats. This is the default value is valueType is + unspecified. Note that if either valueFrom or valueTo represent colors + (beginning with "#"), then this attribute is ignored and the color values are + interpreted as integers.
intType1 valueFrom and valueTo are integers.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueType}. + @attr name android:valueType + */ + public static final int Animator_valueType = 7; + /** Attributes that can be used with a AnimatorSet. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AnimatorSet_ordering android:ordering} Name of the property being animated.
+ @see #AnimatorSet_ordering + */ + public static final int[] AnimatorSet = { + 0x010102e2 + }; + /** +

+ @attr description + Name of the property being animated. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child animations should be played together.
sequentially1 child animations should be played sequentially, in the same order as the xml.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ordering}. + @attr name android:ordering + */ + public static final int AnimatorSet_ordering = 0; + /** Attributes that can be used with a AnticipateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AnticipateInterpolator_tension android:tension} This is the amount of tension.
+ @see #AnticipateInterpolator_tension + */ + public static final int[] AnticipateInterpolator = { + 0x0101026a + }; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int AnticipateInterpolator_tension = 0; + /** Attributes that can be used with a AnticipateOvershootInterpolator. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AnticipateOvershootInterpolator_extraTension android:extraTension} This is the amount by which to multiply the tension.
{@link #AnticipateOvershootInterpolator_tension android:tension} This is the amount of tension.
+ @see #AnticipateOvershootInterpolator_extraTension + @see #AnticipateOvershootInterpolator_tension + */ + public static final int[] AnticipateOvershootInterpolator = { + 0x0101026a, 0x0101026b + }; + /** +

+ @attr description + This is the amount by which to multiply the tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#extraTension}. + @attr name android:extraTension + */ + public static final int AnticipateOvershootInterpolator_extraTension = 1; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int AnticipateOvershootInterpolator_tension = 0; + /** Use appwidget-provider as the root tag of the XML resource that + describes an AppWidget provider. See {@link android.appwidget android.appwidget} + package for more info. + +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AppWidgetProviderInfo_autoAdvanceViewId android:autoAdvanceViewId} The view id of the AppWidget subview which should be auto-advanced.
{@link #AppWidgetProviderInfo_configure android:configure} A class name in the AppWidget's package to be launched to configure.
{@link #AppWidgetProviderInfo_initialKeyguardLayout android:initialKeyguardLayout} A resource id of a layout.
{@link #AppWidgetProviderInfo_initialLayout android:initialLayout} A resource id of a layout.
{@link #AppWidgetProviderInfo_minHeight android:minHeight} Minimum height of the AppWidget.
{@link #AppWidgetProviderInfo_minResizeHeight android:minResizeHeight} Minimum height that the AppWidget can be resized to.
{@link #AppWidgetProviderInfo_minResizeWidth android:minResizeWidth} Minimum width that the AppWidget can be resized to.
{@link #AppWidgetProviderInfo_minWidth android:minWidth} Minimum width of the AppWidget.
{@link #AppWidgetProviderInfo_previewImage android:previewImage} A preview of what the AppWidget will look like after it's configured.
{@link #AppWidgetProviderInfo_resizeMode android:resizeMode} Optional parameter which indicates if and how this widget can be + resized.
{@link #AppWidgetProviderInfo_updatePeriodMillis android:updatePeriodMillis} Update period in milliseconds, or 0 if the AppWidget will update itself.
{@link #AppWidgetProviderInfo_widgetCategory android:widgetCategory} Optional parameter which indicates where this widget can be shown, + ie.
+ @see #AppWidgetProviderInfo_autoAdvanceViewId + @see #AppWidgetProviderInfo_configure + @see #AppWidgetProviderInfo_initialKeyguardLayout + @see #AppWidgetProviderInfo_initialLayout + @see #AppWidgetProviderInfo_minHeight + @see #AppWidgetProviderInfo_minResizeHeight + @see #AppWidgetProviderInfo_minResizeWidth + @see #AppWidgetProviderInfo_minWidth + @see #AppWidgetProviderInfo_previewImage + @see #AppWidgetProviderInfo_resizeMode + @see #AppWidgetProviderInfo_updatePeriodMillis + @see #AppWidgetProviderInfo_widgetCategory + */ + public static final int[] AppWidgetProviderInfo = { + 0x0101013f, 0x01010140, 0x01010250, 0x01010251, + 0x0101025d, 0x010102da, 0x0101030f, 0x01010363, + 0x01010395, 0x01010396, 0x010103c2, 0x010103c4 + }; + /** +

+ @attr description + The view id of the AppWidget subview which should be auto-advanced. + by the widget's host. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoAdvanceViewId}. + @attr name android:autoAdvanceViewId + */ + public static final int AppWidgetProviderInfo_autoAdvanceViewId = 6; + /** +

+ @attr description + A class name in the AppWidget's package to be launched to configure. + If not supplied, then no activity will be launched. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#configure}. + @attr name android:configure + */ + public static final int AppWidgetProviderInfo_configure = 4; + /** +

+ @attr description + A resource id of a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initialKeyguardLayout}. + @attr name android:initialKeyguardLayout + */ + public static final int AppWidgetProviderInfo_initialKeyguardLayout = 10; + /** +

+ @attr description + A resource id of a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initialLayout}. + @attr name android:initialLayout + */ + public static final int AppWidgetProviderInfo_initialLayout = 3; + /** +

+ @attr description + Minimum height of the AppWidget. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int AppWidgetProviderInfo_minHeight = 1; + /** +

+ @attr description + Minimum height that the AppWidget can be resized to. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minResizeHeight}. + @attr name android:minResizeHeight + */ + public static final int AppWidgetProviderInfo_minResizeHeight = 9; + /** +

+ @attr description + Minimum width that the AppWidget can be resized to. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minResizeWidth}. + @attr name android:minResizeWidth + */ + public static final int AppWidgetProviderInfo_minResizeWidth = 8; + /** +

+ @attr description + Minimum width of the AppWidget. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int AppWidgetProviderInfo_minWidth = 0; + /** +

+ @attr description + A preview of what the AppWidget will look like after it's configured. + If not supplied, the AppWidget's icon will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#previewImage}. + @attr name android:previewImage + */ + public static final int AppWidgetProviderInfo_previewImage = 5; + /** +

+ @attr description + Optional parameter which indicates if and how this widget can be + resized. Supports combined values using | operator. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x0
horizontal0x1
vertical0x2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#resizeMode}. + @attr name android:resizeMode + */ + public static final int AppWidgetProviderInfo_resizeMode = 7; + /** +

+ @attr description + Update period in milliseconds, or 0 if the AppWidget will update itself. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#updatePeriodMillis}. + @attr name android:updatePeriodMillis + */ + public static final int AppWidgetProviderInfo_updatePeriodMillis = 2; + /** +

+ @attr description + Optional parameter which indicates where this widget can be shown, + ie. home screen, keyguard or both. + resized. Supports combined values using | operator. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
home_screen0x1
keyguard0x2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#widgetCategory}. + @attr name android:widgetCategory + */ + public static final int AppWidgetProviderInfo_widgetCategory = 11; + /** Attributes that can be used with a AutoCompleteTextView. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AutoCompleteTextView_completionHint android:completionHint} Defines the hint displayed in the drop down menu.
{@link #AutoCompleteTextView_completionHintView android:completionHintView} Defines the hint view displayed in the drop down menu.
{@link #AutoCompleteTextView_completionThreshold android:completionThreshold} Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu.
{@link #AutoCompleteTextView_dropDownAnchor android:dropDownAnchor} View to anchor the auto-complete dropdown to.
{@link #AutoCompleteTextView_dropDownHeight android:dropDownHeight} Specifies the basic height of the dropdown.
{@link #AutoCompleteTextView_dropDownHorizontalOffset android:dropDownHorizontalOffset} Amount of pixels by which the drop down should be offset horizontally.
{@link #AutoCompleteTextView_dropDownSelector android:dropDownSelector} Selector in a drop down list.
{@link #AutoCompleteTextView_dropDownVerticalOffset android:dropDownVerticalOffset} Amount of pixels by which the drop down should be offset vertically.
{@link #AutoCompleteTextView_dropDownWidth android:dropDownWidth} Specifies the basic width of the dropdown.
{@link #AutoCompleteTextView_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
+ @see #AutoCompleteTextView_completionHint + @see #AutoCompleteTextView_completionHintView + @see #AutoCompleteTextView_completionThreshold + @see #AutoCompleteTextView_dropDownAnchor + @see #AutoCompleteTextView_dropDownHeight + @see #AutoCompleteTextView_dropDownHorizontalOffset + @see #AutoCompleteTextView_dropDownSelector + @see #AutoCompleteTextView_dropDownVerticalOffset + @see #AutoCompleteTextView_dropDownWidth + @see #AutoCompleteTextView_inputType + */ + public static final int[] AutoCompleteTextView = { + 0x01010172, 0x01010173, 0x01010174, 0x01010175, + 0x01010220, 0x01010262, 0x01010263, 0x01010283, + 0x010102ac, 0x010102ad + }; + /** +

+ @attr description + Defines the hint displayed in the drop down menu. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionHint}. + @attr name android:completionHint + */ + public static final int AutoCompleteTextView_completionHint = 0; + /** +

+ @attr description + Defines the hint view displayed in the drop down menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionHintView}. + @attr name android:completionHintView + */ + public static final int AutoCompleteTextView_completionHintView = 1; + /** +

+ @attr description + Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionThreshold}. + @attr name android:completionThreshold + */ + public static final int AutoCompleteTextView_completionThreshold = 2; + /** +

+ @attr description + View to anchor the auto-complete dropdown to. If not specified, the text view itself + is used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownAnchor}. + @attr name android:dropDownAnchor + */ + public static final int AutoCompleteTextView_dropDownAnchor = 6; + /** +

+ @attr description + Specifies the basic height of the dropdown. Its value may + be a dimension (such as "12dip") for a constant height, + fill_parent or match_parent to fill the height of the + screen, or wrap_content to match the height of + the content of the drop down. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fit the height of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the height of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the height of the content.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHeight}. + @attr name android:dropDownHeight + */ + public static final int AutoCompleteTextView_dropDownHeight = 7; + /** +

+ @attr description + Amount of pixels by which the drop down should be offset horizontally. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHorizontalOffset}. + @attr name android:dropDownHorizontalOffset + */ + public static final int AutoCompleteTextView_dropDownHorizontalOffset = 8; + /** +

+ @attr description + Selector in a drop down list. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSelector}. + @attr name android:dropDownSelector + */ + public static final int AutoCompleteTextView_dropDownSelector = 3; + /** +

+ @attr description + Amount of pixels by which the drop down should be offset vertically. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownVerticalOffset}. + @attr name android:dropDownVerticalOffset + */ + public static final int AutoCompleteTextView_dropDownVerticalOffset = 9; + /** +

+ @attr description + Specifies the basic width of the dropdown. Its value may + be a dimension (such as "12dip") for a constant width, + fill_parent or match_parent to match the width of the + screen, or wrap_content to match the width of + the anchored view. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownWidth}. + @attr name android:dropDownWidth + */ + public static final int AutoCompleteTextView_dropDownWidth = 5; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int AutoCompleteTextView_inputType = 4; + /** Drawable used to draw bitmaps. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #BitmapDrawable_antialias android:antialias} Enables or disables antialiasing.
{@link #BitmapDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #BitmapDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #BitmapDrawable_filter android:filter} Enables or disables bitmap filtering.
{@link #BitmapDrawable_gravity android:gravity} Defines the gravity for the bitmap.
{@link #BitmapDrawable_mipMap android:mipMap} Enables or disables the mipmap hint.
{@link #BitmapDrawable_src android:src} Identifier of the bitmap file.
{@link #BitmapDrawable_tileMode android:tileMode} Defines the tile mode.
+ @see #BitmapDrawable_antialias + @see #BitmapDrawable_autoMirrored + @see #BitmapDrawable_dither + @see #BitmapDrawable_filter + @see #BitmapDrawable_gravity + @see #BitmapDrawable_mipMap + @see #BitmapDrawable_src + @see #BitmapDrawable_tileMode + */ + public static final int[] BitmapDrawable = { + 0x010100af, 0x01010119, 0x0101011a, 0x0101011b, + 0x0101011c, 0x01010201, 0x010103cd, 0x010103ea + }; + /** +

+ @attr description + Enables or disables antialiasing. Antialiasing can be used to smooth the + edges of a bitmap when rotated. Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#antialias}. + @attr name android:antialias + */ + public static final int BitmapDrawable_antialias = 2; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int BitmapDrawable_autoMirrored = 7; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). Default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int BitmapDrawable_dither = 4; + /** +

+ @attr description + Enables or disables bitmap filtering. Filtering is used when the bitmap is + shrunk or stretched to smooth its apperance. Default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#filter}. + @attr name android:filter + */ + public static final int BitmapDrawable_filter = 3; + /** +

+ @attr description + Defines the gravity for the bitmap. The gravity indicates where to position + the drawable in its container if the bitmap is smaller than the container. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int BitmapDrawable_gravity = 0; + /** +

+ @attr description + Enables or disables the mipmap hint. See + {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information. + Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mipMap}. + @attr name android:mipMap + */ + public static final int BitmapDrawable_mipMap = 6; + /** +

+ @attr description + Identifier of the bitmap file. This attribute is mandatory. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int BitmapDrawable_src = 1; + /** +

+ @attr description + Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. + Gravity is ignored when the tile mode is enabled. Default value is "disabled". + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
disabled-1 Do not tile the bitmap. This is the default value.
clamp0 Replicates the edge color.
repeat1 Repeats the bitmap in both direction.
mirror2 Repeats the shader's image horizontally and vertically, alternating + mirror images so that adjacent images always seam.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#tileMode}. + @attr name android:tileMode + */ + public static final int BitmapDrawable_tileMode = 5; + /** Attributes that can be used with a Button. + */ + public static final int[] Button = { + + }; + /** Attributes that can be used with a CalendarView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #CalendarView_dateTextAppearance android:dateTextAppearance} The text appearance for the calendar dates.
{@link #CalendarView_firstDayOfWeek android:firstDayOfWeek} The first day of week according to {@link java.util.Calendar}.
{@link #CalendarView_focusedMonthDateColor android:focusedMonthDateColor} The color for the dates of the focused month.
{@link #CalendarView_maxDate android:maxDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #CalendarView_minDate android:minDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #CalendarView_selectedDateVerticalBar android:selectedDateVerticalBar} Drawable for the vertical bar shown at the beginning and at the end of the selected date.
{@link #CalendarView_selectedWeekBackgroundColor android:selectedWeekBackgroundColor} The background color for the selected week.
{@link #CalendarView_showWeekNumber android:showWeekNumber} Whether do show week numbers.
{@link #CalendarView_shownWeekCount android:shownWeekCount} The number of weeks to be shown.
{@link #CalendarView_unfocusedMonthDateColor android:unfocusedMonthDateColor} The color for the dates of an unfocused month.
{@link #CalendarView_weekDayTextAppearance android:weekDayTextAppearance} The text appearance for the week day abbreviation of the calendar header.
{@link #CalendarView_weekNumberColor android:weekNumberColor} The color for the week numbers.
{@link #CalendarView_weekSeparatorLineColor android:weekSeparatorLineColor} The color for the separator line between weeks.
+ @see #CalendarView_dateTextAppearance + @see #CalendarView_firstDayOfWeek + @see #CalendarView_focusedMonthDateColor + @see #CalendarView_maxDate + @see #CalendarView_minDate + @see #CalendarView_selectedDateVerticalBar + @see #CalendarView_selectedWeekBackgroundColor + @see #CalendarView_showWeekNumber + @see #CalendarView_shownWeekCount + @see #CalendarView_unfocusedMonthDateColor + @see #CalendarView_weekDayTextAppearance + @see #CalendarView_weekNumberColor + @see #CalendarView_weekSeparatorLineColor + */ + public static final int[] CalendarView = { + 0x0101033d, 0x0101033e, 0x0101033f, 0x01010340, + 0x01010341, 0x01010342, 0x01010343, 0x01010344, + 0x01010345, 0x01010346, 0x01010347, 0x01010348, + 0x01010349 + }; + /** +

+ @attr description + The text appearance for the calendar dates. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dateTextAppearance}. + @attr name android:dateTextAppearance + */ + public static final int CalendarView_dateTextAppearance = 12; + /** +

+ @attr description + The first day of week according to {@link java.util.Calendar}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#firstDayOfWeek}. + @attr name android:firstDayOfWeek + */ + public static final int CalendarView_firstDayOfWeek = 0; + /** +

+ @attr description + The color for the dates of the focused month. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusedMonthDateColor}. + @attr name android:focusedMonthDateColor + */ + public static final int CalendarView_focusedMonthDateColor = 6; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxDate}. + @attr name android:maxDate + */ + public static final int CalendarView_maxDate = 3; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minDate}. + @attr name android:minDate + */ + public static final int CalendarView_minDate = 2; + /** +

+ @attr description + Drawable for the vertical bar shown at the beginning and at the end of the selected date. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectedDateVerticalBar}. + @attr name android:selectedDateVerticalBar + */ + public static final int CalendarView_selectedDateVerticalBar = 10; + /** +

+ @attr description + The background color for the selected week. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectedWeekBackgroundColor}. + @attr name android:selectedWeekBackgroundColor + */ + public static final int CalendarView_selectedWeekBackgroundColor = 5; + /** +

+ @attr description + Whether do show week numbers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showWeekNumber}. + @attr name android:showWeekNumber + */ + public static final int CalendarView_showWeekNumber = 1; + /** +

+ @attr description + The number of weeks to be shown. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shownWeekCount}. + @attr name android:shownWeekCount + */ + public static final int CalendarView_shownWeekCount = 4; + /** +

+ @attr description + The color for the dates of an unfocused month. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#unfocusedMonthDateColor}. + @attr name android:unfocusedMonthDateColor + */ + public static final int CalendarView_unfocusedMonthDateColor = 7; + /** +

+ @attr description + The text appearance for the week day abbreviation of the calendar header. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekDayTextAppearance}. + @attr name android:weekDayTextAppearance + */ + public static final int CalendarView_weekDayTextAppearance = 11; + /** +

+ @attr description + The color for the week numbers. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekNumberColor}. + @attr name android:weekNumberColor + */ + public static final int CalendarView_weekNumberColor = 8; + /** +

+ @attr description + The color for the separator line between weeks. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekSeparatorLineColor}. + @attr name android:weekSeparatorLineColor + */ + public static final int CalendarView_weekSeparatorLineColor = 9; + /** Base attributes available to CheckBoxPreference. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #CheckBoxPreference_disableDependentsState android:disableDependentsState} The state (true for on, or false for off) that causes dependents to be disabled.
{@link #CheckBoxPreference_summaryOff android:summaryOff} The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked.
{@link #CheckBoxPreference_summaryOn android:summaryOn} The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked.
+ @see #CheckBoxPreference_disableDependentsState + @see #CheckBoxPreference_summaryOff + @see #CheckBoxPreference_summaryOn + */ + public static final int[] CheckBoxPreference = { + 0x010101ef, 0x010101f0, 0x010101f1 + }; + /** +

+ @attr description + The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disableDependentsState}. + @attr name android:disableDependentsState + */ + public static final int CheckBoxPreference_disableDependentsState = 2; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOff}. + @attr name android:summaryOff + */ + public static final int CheckBoxPreference_summaryOff = 1; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOn}. + @attr name android:summaryOn + */ + public static final int CheckBoxPreference_summaryOn = 0; + /** Attributes that can be used with a CheckedTextView. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #CheckedTextView_checkMark android:checkMark} Drawable used for the check mark graphic.
{@link #CheckedTextView_checked android:checked} Indicates the initial checked state of this text.
+ @see #CheckedTextView_checkMark + @see #CheckedTextView_checked + */ + public static final int[] CheckedTextView = { + 0x01010106, 0x01010108 + }; + /** +

+ @attr description + Drawable used for the check mark graphic. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkMark}. + @attr name android:checkMark + */ + public static final int CheckedTextView_checkMark = 1; + /** +

+ @attr description + Indicates the initial checked state of this text. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int CheckedTextView_checked = 0; + /** Attributes that can be used with a Chronometer. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Chronometer_format android:format} Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form.
+ @see #Chronometer_format + */ + public static final int[] Chronometer = { + 0x01010105 + }; + /** +

+ @attr description + Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form. + If no format string is specified, the Chronometer will simply display + "MM:SS" or "H:MM:SS". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format}. + @attr name android:format + */ + public static final int Chronometer_format = 0; + /** Attributes that can be used with a ClipDrawable. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ClipDrawable_clipOrientation android:clipOrientation} The orientation for the clip.
{@link #ClipDrawable_drawable android:drawable} Reference to a drawable resource to draw with the specified scale.
{@link #ClipDrawable_gravity android:gravity} Specifies where to clip within the drawable.
+ @see #ClipDrawable_clipOrientation + @see #ClipDrawable_drawable + @see #ClipDrawable_gravity + */ + public static final int[] ClipDrawable = { + 0x010100af, 0x01010199, 0x0101020a + }; + /** +

+ @attr description + The orientation for the clip. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal1 Clip the drawable horizontally.
vertical2 Clip the drawable vertically.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipOrientation}. + @attr name android:clipOrientation + */ + public static final int ClipDrawable_clipOrientation = 2; + /** +

+ @attr description + Reference to a drawable resource to draw with the specified scale. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int ClipDrawable_drawable = 1; + /** +

+ @attr description + Specifies where to clip within the drawable. The default value is + left. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int ClipDrawable_gravity = 0; + /** Drawable used to draw a single color. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ColorDrawable_color android:color} The color to use.
+ @see #ColorDrawable_color + */ + public static final int[] ColorDrawable = { + 0x010101a5 + }; + /** +

+ @attr description + The color to use. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int ColorDrawable_color = 0; + /** Attributes that can be used with a CompoundButton. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #CompoundButton_button android:button} Drawable used for the button graphic (e.
{@link #CompoundButton_checked android:checked} Indicates the initial checked state of this button.
+ @see #CompoundButton_button + @see #CompoundButton_checked + */ + public static final int[] CompoundButton = { + 0x01010106, 0x01010107 + }; + /** +

+ @attr description + Drawable used for the button graphic (e.g. checkbox, radio button, etc). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#button}. + @attr name android:button + */ + public static final int CompoundButton_button = 1; + /** +

+ @attr description + Indicates the initial checked state of this button. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int CompoundButton_checked = 0; + /** Maps a specific contact data MIME-type to styling information. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #ContactsDataKind_allContactsName android:allContactsName} Resource representing the term "All Contacts" (e.
{@link #ContactsDataKind_detailColumn android:detailColumn} Column in data table that contains details for this data.
{@link #ContactsDataKind_detailSocialSummary android:detailSocialSummary} Flag indicating that detail should be built from SocialProvider.
{@link #ContactsDataKind_icon android:icon} Icon used to represent data of this kind.
{@link #ContactsDataKind_mimeType android:mimeType} Mime-type handled by this mapping.
{@link #ContactsDataKind_summaryColumn android:summaryColumn} Column in data table that summarizes this data.
+ @see #ContactsDataKind_allContactsName + @see #ContactsDataKind_detailColumn + @see #ContactsDataKind_detailSocialSummary + @see #ContactsDataKind_icon + @see #ContactsDataKind_mimeType + @see #ContactsDataKind_summaryColumn + */ + public static final int[] ContactsDataKind = { + 0x01010002, 0x01010026, 0x010102a2, 0x010102a3, + 0x010102a4, 0x010102cc + }; + /** +

+ @attr description + Resource representing the term "All Contacts" (e.g. "All Friends" or + "All connections"). Optional (Default is "All Contacts"). + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allContactsName}. + @attr name android:allContactsName + */ + public static final int ContactsDataKind_allContactsName = 5; + /** +

+ @attr description + Column in data table that contains details for this data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailColumn}. + @attr name android:detailColumn + */ + public static final int ContactsDataKind_detailColumn = 3; + /** +

+ @attr description + Flag indicating that detail should be built from SocialProvider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailSocialSummary}. + @attr name android:detailSocialSummary + */ + public static final int ContactsDataKind_detailSocialSummary = 4; + /** +

+ @attr description + Icon used to represent data of this kind. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int ContactsDataKind_icon = 0; + /** +

+ @attr description + Mime-type handled by this mapping. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int ContactsDataKind_mimeType = 1; + /** +

+ @attr description + Column in data table that summarizes this data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryColumn}. + @attr name android:summaryColumn + */ + public static final int ContactsDataKind_summaryColumn = 2; + /** Attributes that can be used with a CycleInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #CycleInterpolator_cycles android:cycles}
+ @see #CycleInterpolator_cycles + */ + public static final int[] CycleInterpolator = { + 0x010101d4 + }; + /** +

This symbol is the offset where the {@link android.R.attr#cycles} + attribute's value can be found in the {@link #CycleInterpolator} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:cycles + */ + public static final int CycleInterpolator_cycles = 0; + /** Attributes that can be used with a DatePicker. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #DatePicker_calendarViewShown android:calendarViewShown} Whether the calendar view is shown.
{@link #DatePicker_endYear android:endYear} The last year (inclusive), for example "2010".
{@link #DatePicker_maxDate android:maxDate} The maximal date shown by this calendar view in mm/dd/yyyy format.
{@link #DatePicker_minDate android:minDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #DatePicker_spinnersShown android:spinnersShown} Whether the spinners are shown.
{@link #DatePicker_startYear android:startYear} The first year (inclusive), for example "1940".
+ @see #DatePicker_calendarViewShown + @see #DatePicker_endYear + @see #DatePicker_maxDate + @see #DatePicker_minDate + @see #DatePicker_spinnersShown + @see #DatePicker_startYear + */ + public static final int[] DatePicker = { + 0x0101017c, 0x0101017d, 0x0101033f, 0x01010340, + 0x0101034b, 0x0101034c, 0x0101043c + }; + /** +

+ @attr description + Whether the calendar view is shown. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#calendarViewShown}. + @attr name android:calendarViewShown + */ + public static final int DatePicker_calendarViewShown = 5; + /** +

+ @attr description + The last year (inclusive), for example "2010". + {@deprecated Use maxDate instead.} + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#endYear}. + @attr name android:endYear + */ + @Deprecated + public static final int DatePicker_endYear = 1; + /** +

+ @attr description + The maximal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxDate}. + @attr name android:maxDate + */ + public static final int DatePicker_maxDate = 3; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minDate}. + @attr name android:minDate + */ + public static final int DatePicker_minDate = 2; + /** +

+ @attr description + Whether the spinners are shown. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnersShown}. + @attr name android:spinnersShown + */ + public static final int DatePicker_spinnersShown = 4; + /** +

+ @attr description + The first year (inclusive), for example "1940". + {@deprecated Use minDate instead.} + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startYear}. + @attr name android:startYear + */ + @Deprecated + public static final int DatePicker_startYear = 0; + /** Attributes that can be used with a DecelerateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #DecelerateInterpolator_factor android:factor} This is the amount of acceleration to add when easing out.
+ @see #DecelerateInterpolator_factor + */ + public static final int[] DecelerateInterpolator = { + 0x010101d3 + }; + /** +

+ @attr description + This is the amount of acceleration to add when easing out. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#factor}. + @attr name android:factor + */ + public static final int DecelerateInterpolator_factor = 0; + /** Use device-admin as the root tag of the XML resource that + describes a + {@link android.app.admin.DeviceAdminReceiver}, which is + referenced from its + {@link android.app.admin.DeviceAdminReceiver#DEVICE_ADMIN_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #DeviceAdmin_visible android:visible} Control whether the admin is visible to the user, even when it + is not enabled.
+ @see #DeviceAdmin_visible + */ + public static final int[] DeviceAdmin = { + 0x01010194 + }; + /** +

+ @attr description + Control whether the admin is visible to the user, even when it + is not enabled. This is true by default. You may want to make + it false if your admin does not make sense to be turned on + unless some explicit action happens in your app. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int DeviceAdmin_visible = 0; + /** Base attributes available to DialogPreference. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #DialogPreference_dialogIcon android:dialogIcon} The icon for the dialog.
{@link #DialogPreference_dialogLayout android:dialogLayout} A layout to be used as the content View for the dialog.
{@link #DialogPreference_dialogMessage android:dialogMessage} The message in the dialog.
{@link #DialogPreference_dialogTitle android:dialogTitle} The title in the dialog.
{@link #DialogPreference_negativeButtonText android:negativeButtonText} The negative button text for the dialog.
{@link #DialogPreference_positiveButtonText android:positiveButtonText} The positive button text for the dialog.
+ @see #DialogPreference_dialogIcon + @see #DialogPreference_dialogLayout + @see #DialogPreference_dialogMessage + @see #DialogPreference_dialogTitle + @see #DialogPreference_negativeButtonText + @see #DialogPreference_positiveButtonText + */ + public static final int[] DialogPreference = { + 0x010101f2, 0x010101f3, 0x010101f4, 0x010101f5, + 0x010101f6, 0x010101f7 + }; + /** +

+ @attr description + The icon for the dialog. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogIcon}. + @attr name android:dialogIcon + */ + public static final int DialogPreference_dialogIcon = 2; + /** +

+ @attr description + A layout to be used as the content View for the dialog. By default, this shouldn't + be needed. If a custom DialogPreference is required, this should be set. For example, + the EditTextPreference uses a layout with an EditText as this attribute. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogLayout}. + @attr name android:dialogLayout + */ + public static final int DialogPreference_dialogLayout = 5; + /** +

+ @attr description + The message in the dialog. If a dialogLayout is provided and contains + a TextView with ID android:id/message, this message will be placed in there. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogMessage}. + @attr name android:dialogMessage + */ + public static final int DialogPreference_dialogMessage = 1; + /** +

+ @attr description + The title in the dialog. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogTitle}. + @attr name android:dialogTitle + */ + public static final int DialogPreference_dialogTitle = 0; + /** +

+ @attr description + The negative button text for the dialog. Set to @null to hide the negative button. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#negativeButtonText}. + @attr name android:negativeButtonText + */ + public static final int DialogPreference_negativeButtonText = 4; + /** +

+ @attr description + The positive button text for the dialog. Set to @null to hide the positive button. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#positiveButtonText}. + @attr name android:positiveButtonText + */ + public static final int DialogPreference_positiveButtonText = 3; + /** Base attributes that are available to all Drawable objects. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Drawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #Drawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #Drawable_autoMirrored + @see #Drawable_visible + */ + public static final int[] Drawable = { + 0x01010194, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). See + {@link android.graphics.drawable.Drawable#setAutoMirrored}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int Drawable_autoMirrored = 1; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int Drawable_visible = 0; + /** Describes the corners for the rectangle shape of a GradientDrawable. + This can be used to render rounded corners. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #DrawableCorners_bottomLeftRadius android:bottomLeftRadius} Radius of the bottom left corner.
{@link #DrawableCorners_bottomRightRadius android:bottomRightRadius} Radius of the bottom right corner.
{@link #DrawableCorners_radius android:radius} Defines the radius of the four corners.
{@link #DrawableCorners_topLeftRadius android:topLeftRadius} Radius of the top left corner.
{@link #DrawableCorners_topRightRadius android:topRightRadius} Radius of the top right corner.
+ @see #DrawableCorners_bottomLeftRadius + @see #DrawableCorners_bottomRightRadius + @see #DrawableCorners_radius + @see #DrawableCorners_topLeftRadius + @see #DrawableCorners_topRightRadius + */ + public static final int[] DrawableCorners = { + 0x010101a8, 0x010101a9, 0x010101aa, 0x010101ab, + 0x010101ac + }; + /** +

+ @attr description + Radius of the bottom left corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomLeftRadius}. + @attr name android:bottomLeftRadius + */ + public static final int DrawableCorners_bottomLeftRadius = 3; + /** +

+ @attr description + Radius of the bottom right corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomRightRadius}. + @attr name android:bottomRightRadius + */ + public static final int DrawableCorners_bottomRightRadius = 4; + /** +

+ @attr description + Defines the radius of the four corners. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#radius}. + @attr name android:radius + */ + public static final int DrawableCorners_radius = 0; + /** +

+ @attr description + Radius of the top left corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topLeftRadius}. + @attr name android:topLeftRadius + */ + public static final int DrawableCorners_topLeftRadius = 1; + /** +

+ @attr description + Radius of the top right corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topRightRadius}. + @attr name android:topRightRadius + */ + public static final int DrawableCorners_topRightRadius = 2; + /** Drawable states. + The mapping of Drawable states to a particular drawables is specified + in the "state" elements of a Widget's "selector" element. + Possible values: +

    +
  • "state_focused" +
  • "state_window_focused" +
  • "state_enabled" +
  • "state_checked" +
  • "state_selected" +
  • "state_active" +
  • "state_single" +
  • "state_first" +
  • "state_mid" +
  • "state_last" +
  • "state_only" +
  • "state_pressed" +
  • "state_activated" +
  • "state_error" +
  • "state_circle" +
  • "state_rect" +
  • "state_grow" +
  • "state_move" +
  • "state_hovered" +
  • "state_drag_can_accept" +
  • "state_drag_hovered" +
  • "state_accessibility_focused" +
+

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #DrawableStates_state_accelerated android:state_accelerated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated.
{@link #DrawableStates_state_activated android:state_activated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest.
{@link #DrawableStates_state_active android:state_active} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #DrawableStates_state_checked android:state_checked} State identifier indicating that the object is currently checked.
{@link #DrawableStates_state_drag_can_accept android:state_drag_can_accept} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation.
{@link #DrawableStates_state_drag_hovered android:state_drag_hovered} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable.
{@link #DrawableStates_state_enabled android:state_enabled} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled.
{@link #DrawableStates_state_first android:state_first} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
{@link #DrawableStates_state_hovered android:state_hovered} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view.
{@link #DrawableStates_state_last android:state_last} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_middle android:state_middle} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_pressed android:state_pressed} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view.
{@link #DrawableStates_state_selected android:state_selected} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected.
{@link #DrawableStates_state_single android:state_single} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_window_focused android:state_window_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus.
+ @see #DrawableStates_state_accelerated + @see #DrawableStates_state_activated + @see #DrawableStates_state_active + @see #DrawableStates_state_checkable + @see #DrawableStates_state_checked + @see #DrawableStates_state_drag_can_accept + @see #DrawableStates_state_drag_hovered + @see #DrawableStates_state_enabled + @see #DrawableStates_state_first + @see #DrawableStates_state_focused + @see #DrawableStates_state_hovered + @see #DrawableStates_state_last + @see #DrawableStates_state_middle + @see #DrawableStates_state_pressed + @see #DrawableStates_state_selected + @see #DrawableStates_state_single + @see #DrawableStates_state_window_focused + */ + public static final int[] DrawableStates = { + 0x0101009c, 0x0101009d, 0x0101009e, 0x0101009f, + 0x010100a0, 0x010100a1, 0x010100a2, 0x010100a3, + 0x010100a4, 0x010100a5, 0x010100a6, 0x010100a7, + 0x010102fe, 0x0101031b, 0x01010367, 0x01010368, + 0x01010369, 0x0101044c + }; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_accelerated}. + @attr name android:state_accelerated + */ + public static final int DrawableStates_state_accelerated = 13; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_activated}. + @attr name android:state_activated + */ + public static final int DrawableStates_state_activated = 12; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_active}. + @attr name android:state_active + */ + public static final int DrawableStates_state_active = 6; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int DrawableStates_state_checkable = 3; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int DrawableStates_state_checked = 4; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_can_accept}. + @attr name android:state_drag_can_accept + */ + public static final int DrawableStates_state_drag_can_accept = 15; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_hovered}. + @attr name android:state_drag_hovered + */ + public static final int DrawableStates_state_drag_hovered = 16; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_enabled}. + @attr name android:state_enabled + */ + public static final int DrawableStates_state_enabled = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_first}. + @attr name android:state_first + */ + public static final int DrawableStates_state_first = 8; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int DrawableStates_state_focused = 0; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_hovered}. + @attr name android:state_hovered + */ + public static final int DrawableStates_state_hovered = 14; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_last}. + @attr name android:state_last + */ + public static final int DrawableStates_state_last = 10; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_middle}. + @attr name android:state_middle + */ + public static final int DrawableStates_state_middle = 9; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_pressed}. + @attr name android:state_pressed + */ + public static final int DrawableStates_state_pressed = 11; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_selected}. + @attr name android:state_selected + */ + public static final int DrawableStates_state_selected = 5; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_single}. + @attr name android:state_single + */ + public static final int DrawableStates_state_single = 7; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_window_focused}. + @attr name android:state_window_focused + */ + public static final int DrawableStates_state_window_focused = 1; + /** Use dream as the root tag of the XML resource that + describes an + {@link android.service.dreams.DreamService}, which is + referenced from its + {@link android.service.dreams.DreamService#DREAM_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Dream_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this dream.
+ @see #Dream_settingsActivity + */ + public static final int[] Dream = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this dream. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int Dream_settingsActivity = 0; + /** Attributes that can be used with a EditText. + */ + public static final int[] EditText = { + + }; + /** State array representing an expandable list child's indicator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ExpandableListChildIndicatorState_state_last android:state_last} State identifier indicating the child is the last child within its group.
+ @see #ExpandableListChildIndicatorState_state_last + */ + public static final int[] ExpandableListChildIndicatorState = { + 0x010100a6 + }; + /** +

+ @attr description + State identifier indicating the child is the last child within its group. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_last}. + @attr name android:state_last + */ + public static final int ExpandableListChildIndicatorState_state_last = 0; + /** State array representing an expandable list group's indicator. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ExpandableListGroupIndicatorState_state_empty android:state_empty} State identifier indicating the group is empty (has no children).
{@link #ExpandableListGroupIndicatorState_state_expanded android:state_expanded} State identifier indicating the group is expanded.
+ @see #ExpandableListGroupIndicatorState_state_empty + @see #ExpandableListGroupIndicatorState_state_expanded + */ + public static final int[] ExpandableListGroupIndicatorState = { + 0x010100a8, 0x010100a9 + }; + /** +

+ @attr description + State identifier indicating the group is empty (has no children). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_empty}. + @attr name android:state_empty + */ + public static final int ExpandableListGroupIndicatorState_state_empty = 1; + /** +

+ @attr description + State identifier indicating the group is expanded. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_expanded}. + @attr name android:state_expanded + */ + public static final int ExpandableListGroupIndicatorState_state_expanded = 0; + /** Attributes that can be used with a ExpandableListView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #ExpandableListView_childDivider android:childDivider} Drawable or color that is used as a divider for children.
{@link #ExpandableListView_childIndicator android:childIndicator} Indicator shown beside the child View.
{@link #ExpandableListView_childIndicatorEnd android:childIndicatorEnd} The end bound for a child's indicator.
{@link #ExpandableListView_childIndicatorLeft android:childIndicatorLeft} The left bound for a child's indicator.
{@link #ExpandableListView_childIndicatorRight android:childIndicatorRight} The right bound for a child's indicator.
{@link #ExpandableListView_childIndicatorStart android:childIndicatorStart} The start bound for a child's indicator.
{@link #ExpandableListView_groupIndicator android:groupIndicator} Indicator shown beside the group View.
{@link #ExpandableListView_indicatorEnd android:indicatorEnd} The end bound for an item's indicator.
{@link #ExpandableListView_indicatorLeft android:indicatorLeft} The left bound for an item's indicator.
{@link #ExpandableListView_indicatorRight android:indicatorRight} The right bound for an item's indicator.
{@link #ExpandableListView_indicatorStart android:indicatorStart} The start bound for an item's indicator.
+ @see #ExpandableListView_childDivider + @see #ExpandableListView_childIndicator + @see #ExpandableListView_childIndicatorEnd + @see #ExpandableListView_childIndicatorLeft + @see #ExpandableListView_childIndicatorRight + @see #ExpandableListView_childIndicatorStart + @see #ExpandableListView_groupIndicator + @see #ExpandableListView_indicatorEnd + @see #ExpandableListView_indicatorLeft + @see #ExpandableListView_indicatorRight + @see #ExpandableListView_indicatorStart + */ + public static final int[] ExpandableListView = { + 0x0101010b, 0x0101010c, 0x0101010d, 0x0101010e, + 0x0101010f, 0x01010110, 0x01010111, 0x010103d1, + 0x010103d2, 0x010103d3, 0x010103d4 + }; + /** +

+ @attr description + Drawable or color that is used as a divider for children. (It will drawn + below and above child items.) The height of this will be the same as + the height of the normal list item divider. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childDivider}. + @attr name android:childDivider + */ + public static final int ExpandableListView_childDivider = 6; + /** +

+ @attr description + Indicator shown beside the child View. This can be a stateful Drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicator}. + @attr name android:childIndicator + */ + public static final int ExpandableListView_childIndicator = 1; + /** +

+ @attr description + The end bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorEnd}. + @attr name android:childIndicatorEnd + */ + public static final int ExpandableListView_childIndicatorEnd = 10; + /** +

+ @attr description + The left bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorLeft}. + @attr name android:childIndicatorLeft + */ + public static final int ExpandableListView_childIndicatorLeft = 4; + /** +

+ @attr description + The right bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorRight}. + @attr name android:childIndicatorRight + */ + public static final int ExpandableListView_childIndicatorRight = 5; + /** +

+ @attr description + The start bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorStart}. + @attr name android:childIndicatorStart + */ + public static final int ExpandableListView_childIndicatorStart = 9; + /** +

+ @attr description + Indicator shown beside the group View. This can be a stateful Drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#groupIndicator}. + @attr name android:groupIndicator + */ + public static final int ExpandableListView_groupIndicator = 0; + /** +

+ @attr description + The end bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorEnd. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorEnd}. + @attr name android:indicatorEnd + */ + public static final int ExpandableListView_indicatorEnd = 8; + /** +

+ @attr description + The left bound for an item's indicator. To specify a left bound specific to children, + use childIndicatorLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorLeft}. + @attr name android:indicatorLeft + */ + public static final int ExpandableListView_indicatorLeft = 2; + /** +

+ @attr description + The right bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorRight. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorRight}. + @attr name android:indicatorRight + */ + public static final int ExpandableListView_indicatorRight = 3; + /** +

+ @attr description + The start bound for an item's indicator. To specify a start bound specific to children, + use childIndicatorStart. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorStart}. + @attr name android:indicatorStart + */ + public static final int ExpandableListView_indicatorStart = 7; + /** An extra data value to place into a an extra/name value pair held + in a Bundle, as per {@link android.os.Bundle}. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Extra_name android:name} Required name of the extra data.
{@link #Extra_value android:value} Concrete value to put for this named extra data.
+ @see #Extra_name + @see #Extra_value + */ + public static final int[] Extra = { + 0x01010003, 0x01010024 + }; + /** +

+ @attr description + Required name of the extra data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int Extra_name = 0; + /** +

+ @attr description + Concrete value to put for this named extra data. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int Extra_value = 1; + /** Use fadeas the root tag of the XML resource that + describes a {@link android.transition.Fade Fade} transition. + The attributes of the {@link android.R.styleable#Transition Transition} + resource are available in addition to the specific attributes of Fade + described here. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Fade_fadingMode android:fadingMode}
+ @see #Fade_fadingMode + */ + public static final int[] Fade = { + 0x010103e1 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fadingMode} + attribute's value can be found in the {@link #Fade} array. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fade_in1 Fade will only fade appearing items in.
fade_out2 Fade will only fade disappearing items out.
fade_in_out3 Fade will fade appearing items in and disappearing items out.
+ @attr name android:fadingMode + */ + public static final int Fade_fadingMode = 0; + /** Attributes that can be used with <fragment> + tags inside of the layout of an Activity. This instantiates + the given {@link android.app.Fragment} and inserts its content + view into the current location in the layout. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #Fragment_id android:id} Supply an identifier name for the top-level view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}.
{@link #Fragment_name android:name} Supply the name of the fragment class to instantiate.
{@link #Fragment_tag android:tag} Supply a tag for the top-level view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}.
+ @see #Fragment_id + @see #Fragment_name + @see #Fragment_tag + */ + public static final int[] Fragment = { + 0x01010003, 0x010100d0, 0x010100d1 + }; + /** +

+ @attr description + Supply an identifier name for the top-level view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int Fragment_id = 1; + /** +

+ @attr description + Supply the name of the fragment class to instantiate. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int Fragment_name = 0; + /** +

+ @attr description + Supply a tag for the top-level view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tag}. + @attr name android:tag + */ + public static final int Fragment_tag = 2; + /** Fragment animation class attributes. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #FragmentAnimation_fragmentCloseEnterAnimation android:fragmentCloseEnterAnimation}
{@link #FragmentAnimation_fragmentCloseExitAnimation android:fragmentCloseExitAnimation}
{@link #FragmentAnimation_fragmentFadeEnterAnimation android:fragmentFadeEnterAnimation}
{@link #FragmentAnimation_fragmentFadeExitAnimation android:fragmentFadeExitAnimation}
{@link #FragmentAnimation_fragmentOpenEnterAnimation android:fragmentOpenEnterAnimation}
{@link #FragmentAnimation_fragmentOpenExitAnimation android:fragmentOpenExitAnimation}
+ @see #FragmentAnimation_fragmentCloseEnterAnimation + @see #FragmentAnimation_fragmentCloseExitAnimation + @see #FragmentAnimation_fragmentFadeEnterAnimation + @see #FragmentAnimation_fragmentFadeExitAnimation + @see #FragmentAnimation_fragmentOpenEnterAnimation + @see #FragmentAnimation_fragmentOpenExitAnimation + */ + public static final int[] FragmentAnimation = { + 0x010102e5, 0x010102e6, 0x010102e7, 0x010102e8, + 0x010102e9, 0x010102ea + }; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentCloseEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentCloseEnterAnimation + */ + public static final int FragmentAnimation_fragmentCloseEnterAnimation = 2; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentCloseExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentCloseExitAnimation + */ + public static final int FragmentAnimation_fragmentCloseExitAnimation = 3; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentFadeEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentFadeEnterAnimation + */ + public static final int FragmentAnimation_fragmentFadeEnterAnimation = 4; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentFadeExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentFadeExitAnimation + */ + public static final int FragmentAnimation_fragmentFadeExitAnimation = 5; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentOpenEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentOpenEnterAnimation + */ + public static final int FragmentAnimation_fragmentOpenEnterAnimation = 0; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentOpenExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentOpenExitAnimation + */ + public static final int FragmentAnimation_fragmentOpenExitAnimation = 1; + /** Attributes that can be used with <FragmentBreadCrumbs> + tags. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #FragmentBreadCrumbs_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
+ @see #FragmentBreadCrumbs_gravity + */ + public static final int[] FragmentBreadCrumbs = { + 0x010100af + }; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int FragmentBreadCrumbs_gravity = 0; + /** Attributes that can be used with a FrameLayout. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #FrameLayout_foreground android:foreground} Defines the drawable to draw over the content.
{@link #FrameLayout_foregroundGravity android:foregroundGravity} Defines the gravity to apply to the foreground drawable.
{@link #FrameLayout_measureAllChildren android:measureAllChildren} Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring.
+ @see #FrameLayout_foreground + @see #FrameLayout_foregroundGravity + @see #FrameLayout_measureAllChildren + */ + public static final int[] FrameLayout = { + 0x01010109, 0x0101010a, 0x01010200, 0x0101042e + }; + /** +

+ @attr description + Defines the drawable to draw over the content. This can be used as an overlay. + The foreground drawable participates in the padding of the content if the gravity + is set to fill. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#foreground}. + @attr name android:foreground + */ + public static final int FrameLayout_foreground = 0; + /** +

+ @attr description + Defines the gravity to apply to the foreground drawable. The gravity defaults + to fill. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#foregroundGravity}. + @attr name android:foregroundGravity + */ + public static final int FrameLayout_foregroundGravity = 2; + /** +

+ @attr description + Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring. Defaults to false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#measureAllChildren}. + @attr name android:measureAllChildren + */ + public static final int FrameLayout_measureAllChildren = 1; + /** Attributes that can be used with a FrameLayout_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #FrameLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
+ @see #FrameLayout_Layout_layout_gravity + */ + public static final int[] FrameLayout_Layout = { + 0x010100b3 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int FrameLayout_Layout_layout_gravity = 0; + /** Attributes that can be used with a Gallery. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Gallery_animationDuration android:animationDuration} Sets how long a transition animation should run (in milliseconds) + when layout has changed.
{@link #Gallery_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #Gallery_spacing android:spacing}
{@link #Gallery_unselectedAlpha android:unselectedAlpha} Sets the alpha on the items that are not selected.
+ @see #Gallery_animationDuration + @see #Gallery_gravity + @see #Gallery_spacing + @see #Gallery_unselectedAlpha + */ + public static final int[] Gallery = { + 0x010100af, 0x01010112, 0x01010113, 0x0101020e + }; + /** +

+ @attr description + Sets how long a transition animation should run (in milliseconds) + when layout has changed. Only relevant if animation is turned on. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationDuration}. + @attr name android:animationDuration + */ + public static final int Gallery_animationDuration = 1; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int Gallery_gravity = 0; + /** +

This symbol is the offset where the {@link android.R.attr#spacing} + attribute's value can be found in the {@link #Gallery} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:spacing + */ + public static final int Gallery_spacing = 2; + /** +

+ @attr description + Sets the alpha on the items that are not selected. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#unselectedAlpha}. + @attr name android:unselectedAlpha + */ + public static final int Gallery_unselectedAlpha = 3; + /** GestureOverlayView specific attributes. These attributes are used to configure + a GestureOverlayView from XML. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #GestureOverlayView_eventsInterceptionEnabled android:eventsInterceptionEnabled} Defines whether the overlay should intercept the motion events when a gesture + is recognized.
{@link #GestureOverlayView_fadeDuration android:fadeDuration} Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture.
{@link #GestureOverlayView_fadeEnabled android:fadeEnabled} Defines whether the gesture will automatically fade out after being recognized.
{@link #GestureOverlayView_fadeOffset android:fadeOffset} Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it.
{@link #GestureOverlayView_gestureColor android:gestureColor} Color used to draw a gesture.
{@link #GestureOverlayView_gestureStrokeAngleThreshold android:gestureStrokeAngleThreshold} Minimum curve angle a stroke must contain before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeLengthThreshold android:gestureStrokeLengthThreshold} Minimum length of a stroke before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeSquarenessThreshold android:gestureStrokeSquarenessThreshold} Squareness threshold of a stroke before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeType android:gestureStrokeType} Defines the type of strokes that define a gesture.
{@link #GestureOverlayView_gestureStrokeWidth android:gestureStrokeWidth} Width of the stroke used to draw the gesture.
{@link #GestureOverlayView_orientation android:orientation} Indicates whether horizontal (when the orientation is vertical) or vertical + (when orientation is horizontal) strokes automatically define a gesture.
{@link #GestureOverlayView_uncertainGestureColor android:uncertainGestureColor} Color used to draw the user's strokes until we are sure it's a gesture.
+ @see #GestureOverlayView_eventsInterceptionEnabled + @see #GestureOverlayView_fadeDuration + @see #GestureOverlayView_fadeEnabled + @see #GestureOverlayView_fadeOffset + @see #GestureOverlayView_gestureColor + @see #GestureOverlayView_gestureStrokeAngleThreshold + @see #GestureOverlayView_gestureStrokeLengthThreshold + @see #GestureOverlayView_gestureStrokeSquarenessThreshold + @see #GestureOverlayView_gestureStrokeType + @see #GestureOverlayView_gestureStrokeWidth + @see #GestureOverlayView_orientation + @see #GestureOverlayView_uncertainGestureColor + */ + public static final int[] GestureOverlayView = { + 0x010100c4, 0x01010274, 0x01010275, 0x01010276, + 0x01010277, 0x01010278, 0x01010279, 0x0101027a, + 0x0101027b, 0x0101027c, 0x0101027d, 0x0101027e + }; + /** +

+ @attr description + Defines whether the overlay should intercept the motion events when a gesture + is recognized. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#eventsInterceptionEnabled}. + @attr name android:eventsInterceptionEnabled + */ + public static final int GestureOverlayView_eventsInterceptionEnabled = 10; + /** +

+ @attr description + Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeDuration}. + @attr name android:fadeDuration + */ + public static final int GestureOverlayView_fadeDuration = 5; + /** +

+ @attr description + Defines whether the gesture will automatically fade out after being recognized. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeEnabled}. + @attr name android:fadeEnabled + */ + public static final int GestureOverlayView_fadeEnabled = 11; + /** +

+ @attr description + Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeOffset}. + @attr name android:fadeOffset + */ + public static final int GestureOverlayView_fadeOffset = 4; + /** +

+ @attr description + Color used to draw a gesture. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureColor}. + @attr name android:gestureColor + */ + public static final int GestureOverlayView_gestureColor = 2; + /** +

+ @attr description + Minimum curve angle a stroke must contain before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeAngleThreshold}. + @attr name android:gestureStrokeAngleThreshold + */ + public static final int GestureOverlayView_gestureStrokeAngleThreshold = 9; + /** +

+ @attr description + Minimum length of a stroke before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeLengthThreshold}. + @attr name android:gestureStrokeLengthThreshold + */ + public static final int GestureOverlayView_gestureStrokeLengthThreshold = 7; + /** +

+ @attr description + Squareness threshold of a stroke before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeSquarenessThreshold}. + @attr name android:gestureStrokeSquarenessThreshold + */ + public static final int GestureOverlayView_gestureStrokeSquarenessThreshold = 8; + /** +

+ @attr description + Defines the type of strokes that define a gesture. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
single0 A gesture is made of only one stroke.
multiple1 A gesture is made of multiple strokes.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeType}. + @attr name android:gestureStrokeType + */ + public static final int GestureOverlayView_gestureStrokeType = 6; + /** +

+ @attr description + Width of the stroke used to draw the gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeWidth}. + @attr name android:gestureStrokeWidth + */ + public static final int GestureOverlayView_gestureStrokeWidth = 1; + /** +

+ @attr description + Indicates whether horizontal (when the orientation is vertical) or vertical + (when orientation is horizontal) strokes automatically define a gesture. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int GestureOverlayView_orientation = 0; + /** +

+ @attr description + Color used to draw the user's strokes until we are sure it's a gesture. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#uncertainGestureColor}. + @attr name android:uncertainGestureColor + */ + public static final int GestureOverlayView_uncertainGestureColor = 3; + /** Attributes that can be used with a GlowPadView. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GlowPadView_directionDescriptions android:directionDescriptions} Reference to an array resource that be used to announce the directions with targets around the circle.
{@link #GlowPadView_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #GlowPadView_innerRadius android:innerRadius} Inner radius of glow area.
{@link #GlowPadView_targetDescriptions android:targetDescriptions} Reference to an array resource that be used as description for the targets around the circle.
+ @see #GlowPadView_directionDescriptions + @see #GlowPadView_gravity + @see #GlowPadView_innerRadius + @see #GlowPadView_targetDescriptions + */ + public static final int[] GlowPadView = { + 0x010100af, 0x0101025f, 0x010103a0, 0x010103a1, + 0x01010450, 0x01010451, 0x01010452, 0x01010453, + 0x01010454, 0x01010455, 0x01010456, 0x01010457, + 0x0101045a, 0x0101045b, 0x0101045c, 0x0101045d, + 0x0101045e + }; + /** +

+ @attr description + Reference to an array resource that be used to announce the directions with targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionDescriptions}. + @attr name android:directionDescriptions + */ + public static final int GlowPadView_directionDescriptions = 3; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int GlowPadView_gravity = 0; + /** +

+ @attr description + Inner radius of glow area. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadius}. + @attr name android:innerRadius + */ + public static final int GlowPadView_innerRadius = 1; + /** +

+ @attr description + Reference to an array resource that be used as description for the targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetDescriptions}. + @attr name android:targetDescriptions + */ + public static final int GlowPadView_targetDescriptions = 2; + /** Drawable used to render a geometric shape, with a gradient or a solid color. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #GradientDrawable_dither android:dither} Enables or disables dithering.
{@link #GradientDrawable_innerRadius android:innerRadius} Inner radius of the ring.
{@link #GradientDrawable_innerRadiusRatio android:innerRadiusRatio} Inner radius of the ring expressed as a ratio of the ring's width.
{@link #GradientDrawable_shape android:shape} Indicates what shape to fill with a gradient.
{@link #GradientDrawable_thickness android:thickness} Thickness of the ring.
{@link #GradientDrawable_thicknessRatio android:thicknessRatio} Thickness of the ring expressed as a ratio of the ring's width.
{@link #GradientDrawable_useLevel android:useLevel} Indicates whether the drawable's level affects the way the gradient is drawn.
{@link #GradientDrawable_visible android:visible} Indicates whether the drawable should intially be visible.
+ @see #GradientDrawable_dither + @see #GradientDrawable_innerRadius + @see #GradientDrawable_innerRadiusRatio + @see #GradientDrawable_shape + @see #GradientDrawable_thickness + @see #GradientDrawable_thicknessRatio + @see #GradientDrawable_useLevel + @see #GradientDrawable_visible + */ + public static final int[] GradientDrawable = { + 0x0101011c, 0x01010194, 0x0101019a, 0x0101019b, + 0x0101019c, 0x0101019f, 0x0101025f, 0x01010260 + }; + /** +

+ @attr description + Enables or disables dithering. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int GradientDrawable_dither = 0; + /** +

+ @attr description + Inner radius of the ring. When defined, innerRadiusRatio is ignored. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadius}. + @attr name android:innerRadius + */ + public static final int GradientDrawable_innerRadius = 6; + /** +

+ @attr description + Inner radius of the ring expressed as a ratio of the ring's width. For instance, + if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9. + This value is ignored if innerRadius is defined. Default value is 9. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadiusRatio}. + @attr name android:innerRadiusRatio + */ + public static final int GradientDrawable_innerRadiusRatio = 3; + /** +

+ @attr description + Indicates what shape to fill with a gradient. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
rectangle0 Rectangle shape, with optional rounder corners.
oval1 Oval shape.
line2 Line shape.
ring3 Ring shape.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#shape}. + @attr name android:shape + */ + public static final int GradientDrawable_shape = 2; + /** +

+ @attr description + Thickness of the ring. When defined, thicknessRatio is ignored. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thickness}. + @attr name android:thickness + */ + public static final int GradientDrawable_thickness = 7; + /** +

+ @attr description + Thickness of the ring expressed as a ratio of the ring's width. For instance, + if thicknessRatio=3, then the thickness equals the ring's width divided by 3. + This value is ignored if innerRadius is defined. Default value is 3. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thicknessRatio}. + @attr name android:thicknessRatio + */ + public static final int GradientDrawable_thicknessRatio = 4; + /** +

+ @attr description + Indicates whether the drawable's level affects the way the gradient is drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useLevel}. + @attr name android:useLevel + */ + public static final int GradientDrawable_useLevel = 5; + /** +

+ @attr description + Indicates whether the drawable should intially be visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int GradientDrawable_visible = 1; + /** Used to describe the gradient used to fill the shape of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #GradientDrawableGradient_angle android:angle} Angle of the gradient.
{@link #GradientDrawableGradient_centerColor android:centerColor} Optional center color.
{@link #GradientDrawableGradient_centerX android:centerX} X coordinate of the origin of the gradient within the shape.
{@link #GradientDrawableGradient_centerY android:centerY} Y coordinate of the origin of the gradient within the shape.
{@link #GradientDrawableGradient_endColor android:endColor} End color of the gradient.
{@link #GradientDrawableGradient_gradientRadius android:gradientRadius} Radius of the gradient, used only with radial gradient.
{@link #GradientDrawableGradient_startColor android:startColor} Start color of the gradient.
{@link #GradientDrawableGradient_type android:type} Type of gradient.
{@link #GradientDrawableGradient_useLevel android:useLevel}
+ @see #GradientDrawableGradient_angle + @see #GradientDrawableGradient_centerColor + @see #GradientDrawableGradient_centerX + @see #GradientDrawableGradient_centerY + @see #GradientDrawableGradient_endColor + @see #GradientDrawableGradient_gradientRadius + @see #GradientDrawableGradient_startColor + @see #GradientDrawableGradient_type + @see #GradientDrawableGradient_useLevel + */ + public static final int[] GradientDrawableGradient = { + 0x0101019d, 0x0101019e, 0x0101019f, 0x010101a0, + 0x010101a1, 0x010101a2, 0x010101a3, 0x010101a4, + 0x0101020b + }; + /** +

+ @attr description + Angle of the gradient. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#angle}. + @attr name android:angle + */ + public static final int GradientDrawableGradient_angle = 3; + /** +

+ @attr description + Optional center color. For linear gradients, use centerX or centerY + to place the center color. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerColor}. + @attr name android:centerColor + */ + public static final int GradientDrawableGradient_centerColor = 8; + /** +

+ @attr description + X coordinate of the origin of the gradient within the shape. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerX}. + @attr name android:centerX + */ + public static final int GradientDrawableGradient_centerX = 5; + /** +

+ @attr description + Y coordinate of the origin of the gradient within the shape. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerY}. + @attr name android:centerY + */ + public static final int GradientDrawableGradient_centerY = 6; + /** +

+ @attr description + End color of the gradient. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#endColor}. + @attr name android:endColor + */ + public static final int GradientDrawableGradient_endColor = 1; + /** +

+ @attr description + Radius of the gradient, used only with radial gradient. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gradientRadius}. + @attr name android:gradientRadius + */ + public static final int GradientDrawableGradient_gradientRadius = 7; + /** +

+ @attr description + Start color of the gradient. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startColor}. + @attr name android:startColor + */ + public static final int GradientDrawableGradient_startColor = 0; + /** +

+ @attr description + Type of gradient. The default type is linear. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
linear0 Linear gradient.
radial1 Radial, or circular, gradient.
sweep2 Sweep, or angled or diamond, gradient.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#type}. + @attr name android:type + */ + public static final int GradientDrawableGradient_type = 4; + /** +

This symbol is the offset where the {@link android.R.attr#useLevel} + attribute's value can be found in the {@link #GradientDrawableGradient} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:useLevel + */ + public static final int GradientDrawableGradient_useLevel = 2; + /** Used to specify the optional padding of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GradientDrawablePadding_bottom android:bottom} Amount of bottom padding inside the gradient shape.
{@link #GradientDrawablePadding_left android:left} Amount of left padding inside the gradient shape.
{@link #GradientDrawablePadding_right android:right} Amount of right padding inside the gradient shape.
{@link #GradientDrawablePadding_top android:top} Amount of top padding inside the gradient shape.
+ @see #GradientDrawablePadding_bottom + @see #GradientDrawablePadding_left + @see #GradientDrawablePadding_right + @see #GradientDrawablePadding_top + */ + public static final int[] GradientDrawablePadding = { + 0x010101ad, 0x010101ae, 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Amount of bottom padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int GradientDrawablePadding_bottom = 3; + /** +

+ @attr description + Amount of left padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int GradientDrawablePadding_left = 0; + /** +

+ @attr description + Amount of right padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int GradientDrawablePadding_right = 2; + /** +

+ @attr description + Amount of top padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int GradientDrawablePadding_top = 1; + /** Used to specify the size of the shape for GradientDrawable. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #GradientDrawableSize_height android:height} Height of the gradient shape.
{@link #GradientDrawableSize_width android:width} Width of the gradient shape.
+ @see #GradientDrawableSize_height + @see #GradientDrawableSize_width + */ + public static final int[] GradientDrawableSize = { + 0x01010155, 0x01010159 + }; + /** +

+ @attr description + Height of the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int GradientDrawableSize_height = 0; + /** +

+ @attr description + Width of the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int GradientDrawableSize_width = 1; + /** Used to fill the shape of GradientDrawable with a solid color. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #GradientDrawableSolid_color android:color} Solid color for the gradient shape.
+ @see #GradientDrawableSolid_color + */ + public static final int[] GradientDrawableSolid = { + 0x010101a5 + }; + /** +

+ @attr description + Solid color for the gradient shape. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int GradientDrawableSolid_color = 0; + /** Used to describe the optional stroke of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GradientDrawableStroke_color android:color} Color of the gradient shape's stroke.
{@link #GradientDrawableStroke_dashGap android:dashGap} Gap between dashes in the stroke.
{@link #GradientDrawableStroke_dashWidth android:dashWidth} Length of a dash in the stroke.
{@link #GradientDrawableStroke_width android:width} Width of the gradient shape's stroke.
+ @see #GradientDrawableStroke_color + @see #GradientDrawableStroke_dashGap + @see #GradientDrawableStroke_dashWidth + @see #GradientDrawableStroke_width + */ + public static final int[] GradientDrawableStroke = { + 0x01010159, 0x010101a5, 0x010101a6, 0x010101a7 + }; + /** +

+ @attr description + Color of the gradient shape's stroke. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int GradientDrawableStroke_color = 1; + /** +

+ @attr description + Gap between dashes in the stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dashGap}. + @attr name android:dashGap + */ + public static final int GradientDrawableStroke_dashGap = 3; + /** +

+ @attr description + Length of a dash in the stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dashWidth}. + @attr name android:dashWidth + */ + public static final int GradientDrawableStroke_dashWidth = 2; + /** +

+ @attr description + Width of the gradient shape's stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int GradientDrawableStroke_width = 0; + /** Attributes that can be used with a GridLayout. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #GridLayout_alignmentMode android:alignmentMode} When set to alignMargins, causes alignment to take place between the outer + boundary of a view, as defined by its margins.
{@link #GridLayout_columnCount android:columnCount} The maxmimum number of columns to create when automatically positioning children.
{@link #GridLayout_columnOrderPreserved android:columnOrderPreserved} When set to true, forces column boundaries to appear in the same order + as column indices.
{@link #GridLayout_orientation android:orientation} The orientation property is not used during layout.
{@link #GridLayout_rowCount android:rowCount} The maxmimum number of rows to create when automatically positioning children.
{@link #GridLayout_rowOrderPreserved android:rowOrderPreserved} When set to true, forces row boundaries to appear in the same order + as row indices.
{@link #GridLayout_useDefaultMargins android:useDefaultMargins} When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters.
+ @see #GridLayout_alignmentMode + @see #GridLayout_columnCount + @see #GridLayout_columnOrderPreserved + @see #GridLayout_orientation + @see #GridLayout_rowCount + @see #GridLayout_rowOrderPreserved + @see #GridLayout_useDefaultMargins + */ + public static final int[] GridLayout = { + 0x010100c4, 0x01010375, 0x01010376, 0x01010377, + 0x01010378, 0x01010379, 0x0101037a + }; + /** +

+ @attr description + When set to alignMargins, causes alignment to take place between the outer + boundary of a view, as defined by its margins. When set to alignBounds, + causes alignment to take place between the edges of the view. + The default is alignMargins. + See {@link android.widget.GridLayout#setAlignmentMode(int)}. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
alignBounds0 Align the bounds of the children. + See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
alignMargins1 Align the margins of the children. + See {@link android.widget.GridLayout#ALIGN_MARGINS}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#alignmentMode}. + @attr name android:alignmentMode + */ + public static final int GridLayout_alignmentMode = 6; + /** +

+ @attr description + The maxmimum number of columns to create when automatically positioning children. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnCount}. + @attr name android:columnCount + */ + public static final int GridLayout_columnCount = 3; + /** +

+ @attr description + When set to true, forces column boundaries to appear in the same order + as column indices. + The default is true. + See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnOrderPreserved}. + @attr name android:columnOrderPreserved + */ + public static final int GridLayout_columnOrderPreserved = 4; + /** +

+ @attr description + The orientation property is not used during layout. It is only used to + allocate row and column parameters when they are not specified by its children's + layout paramters. GridLayout works like LinearLayout in this case; + putting all the components either in a single row or in a single column - + depending on the value of this flag. In the horizontal case, a columnCount + property may be additionally supplied to force new rows to be created when a + row is full. The rowCount attribute may be used similarly in the vertical case. + The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int GridLayout_orientation = 0; + /** +

+ @attr description + The maxmimum number of rows to create when automatically positioning children. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowCount}. + @attr name android:rowCount + */ + public static final int GridLayout_rowCount = 1; + /** +

+ @attr description + When set to true, forces row boundaries to appear in the same order + as row indices. + The default is true. + See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowOrderPreserved}. + @attr name android:rowOrderPreserved + */ + public static final int GridLayout_rowOrderPreserved = 2; + /** +

+ @attr description + When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters. + The default value is false. + See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useDefaultMargins}. + @attr name android:useDefaultMargins + */ + public static final int GridLayout_useDefaultMargins = 5; + /** Attributes that can be used with a GridLayoutAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GridLayoutAnimation_columnDelay android:columnDelay} Fraction of the animation duration used to delay the beginning of + the animation of each column.
{@link #GridLayoutAnimation_direction android:direction} Direction of the animation in the grid.
{@link #GridLayoutAnimation_directionPriority android:directionPriority} Priority of the rows and columns.
{@link #GridLayoutAnimation_rowDelay android:rowDelay} Fraction of the animation duration used to delay the beginning of + the animation of each row.
+ @see #GridLayoutAnimation_columnDelay + @see #GridLayoutAnimation_direction + @see #GridLayoutAnimation_directionPriority + @see #GridLayoutAnimation_rowDelay + */ + public static final int[] GridLayoutAnimation = { + 0x010101cf, 0x010101d0, 0x010101d1, 0x010101d2 + }; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each column. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnDelay}. + @attr name android:columnDelay + */ + public static final int GridLayoutAnimation_columnDelay = 0; + /** +

+ @attr description + Direction of the animation in the grid. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
left_to_right0x0 Animates columns from left to right.
right_to_left0x1 Animates columns from right to left.
top_to_bottom0x0 Animates rows from top to bottom.
bottom_to_top0x2 Animates rows from bottom to top.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#direction}. + @attr name android:direction + */ + public static final int GridLayoutAnimation_direction = 2; + /** +

+ @attr description + Priority of the rows and columns. When the priority is none, + both rows and columns have the same priority. When the priority is + column, the animations will be applied on the columns first. The same + goes for rows. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Rows and columns are animated at the same time.
column1 Columns are animated first.
row2 Rows are animated first.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionPriority}. + @attr name android:directionPriority + */ + public static final int GridLayoutAnimation_directionPriority = 3; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each row. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowDelay}. + @attr name android:rowDelay + */ + public static final int GridLayoutAnimation_rowDelay = 1; + /** Attributes that can be used with a GridLayout_Layout. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #GridLayout_Layout_layout_column android:layout_column} The column boundary delimiting the left of the group of cells + occupied by this view.
{@link #GridLayout_Layout_layout_columnSpan android:layout_columnSpan} The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view.
{@link #GridLayout_Layout_layout_gravity android:layout_gravity} Gravity specifies how a component should be placed in its group of cells.
{@link #GridLayout_Layout_layout_row android:layout_row} The row boundary delimiting the top of the group of cells + occupied by this view.
{@link #GridLayout_Layout_layout_rowSpan android:layout_rowSpan} The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view.
+ @see #GridLayout_Layout_layout_column + @see #GridLayout_Layout_layout_columnSpan + @see #GridLayout_Layout_layout_gravity + @see #GridLayout_Layout_layout_row + @see #GridLayout_Layout_layout_rowSpan + */ + public static final int[] GridLayout_Layout = { + 0x010100b3, 0x0101014c, 0x0101037b, 0x0101037c, + 0x0101037d + }; + /** +

+ @attr description + The column boundary delimiting the left of the group of cells + occupied by this view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_column}. + @attr name android:layout_column + */ + public static final int GridLayout_Layout_layout_column = 1; + /** +

+ @attr description + The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_columnSpan}. + @attr name android:layout_columnSpan + */ + public static final int GridLayout_Layout_layout_columnSpan = 4; + /** +

+ @attr description + Gravity specifies how a component should be placed in its group of cells. + The default is LEFT | BASELINE. + See {@link android.widget.GridLayout.LayoutParams#setGravity(int)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int GridLayout_Layout_layout_gravity = 0; + /** +

+ @attr description + The row boundary delimiting the top of the group of cells + occupied by this view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_row}. + @attr name android:layout_row + */ + public static final int GridLayout_Layout_layout_row = 2; + /** +

+ @attr description + The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_rowSpan}. + @attr name android:layout_rowSpan + */ + public static final int GridLayout_Layout_layout_rowSpan = 3; + /** Attributes that can be used with a GridView. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #GridView_columnWidth android:columnWidth} Specifies the fixed width for each column.
{@link #GridView_gravity android:gravity} Specifies the gravity within each cell.
{@link #GridView_horizontalSpacing android:horizontalSpacing} Defines the default horizontal spacing between columns.
{@link #GridView_numColumns android:numColumns} Defines how many columns to show.
{@link #GridView_stretchMode android:stretchMode} Defines how columns should stretch to fill the available empty space, if any.
{@link #GridView_verticalSpacing android:verticalSpacing} Defines the default vertical spacing between rows.
+ @see #GridView_columnWidth + @see #GridView_gravity + @see #GridView_horizontalSpacing + @see #GridView_numColumns + @see #GridView_stretchMode + @see #GridView_verticalSpacing + */ + public static final int[] GridView = { + 0x010100af, 0x01010114, 0x01010115, 0x01010116, + 0x01010117, 0x01010118 + }; + /** +

+ @attr description + Specifies the fixed width for each column. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnWidth}. + @attr name android:columnWidth + */ + public static final int GridView_columnWidth = 4; + /** +

+ @attr description + Specifies the gravity within each cell. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int GridView_gravity = 0; + /** +

+ @attr description + Defines the default horizontal spacing between columns. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalSpacing}. + @attr name android:horizontalSpacing + */ + public static final int GridView_horizontalSpacing = 1; + /** +

+ @attr description + Defines how many columns to show. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
auto_fit-1 Display as many columns as possible to fill the available space.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#numColumns}. + @attr name android:numColumns + */ + public static final int GridView_numColumns = 5; + /** +

+ @attr description + Defines how columns should stretch to fill the available empty space, if any. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Stretching is disabled.
spacingWidth1 The spacing between each column is stretched.
columnWidth2 Each column is stretched equally.
spacingWidthUniform3 The spacing between each column is uniformly stretched..
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#stretchMode}. + @attr name android:stretchMode + */ + public static final int GridView_stretchMode = 3; + /** +

+ @attr description + Defines the default vertical spacing between rows. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalSpacing}. + @attr name android:verticalSpacing + */ + public static final int GridView_verticalSpacing = 2; + /** Attributes that can be used with a HorizontalScrollView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #HorizontalScrollView_fillViewport android:fillViewport} Defines whether the scrollview should stretch its content to fill the viewport.
+ @see #HorizontalScrollView_fillViewport + */ + public static final int[] HorizontalScrollView = { + 0x0101017a + }; + /** +

+ @attr description + Defines whether the scrollview should stretch its content to fill the viewport. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillViewport}. + @attr name android:fillViewport + */ + public static final int HorizontalScrollView_fillViewport = 0; + /** Use host-apdu-service as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.HostApduService} service, which + is referenced from its {@link android.nfc.cardemulation.HostApduService#SERVICE_META_DATA} + entry. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #HostApduService_apduServiceBanner android:apduServiceBanner} A drawable that can be rendered in Android's system UI for representing + the service.
{@link #HostApduService_description android:description} Short description of the functionality the service implements.
{@link #HostApduService_requireDeviceUnlock android:requireDeviceUnlock} Whether the device must be unlocked before routing data to this service.
+ @see #HostApduService_apduServiceBanner + @see #HostApduService_description + @see #HostApduService_requireDeviceUnlock + */ + public static final int[] HostApduService = { + 0x01010020, 0x010103ec, 0x010103ed + }; + /** +

+ @attr description + A drawable that can be rendered in Android's system UI for representing + the service. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apduServiceBanner}. + @attr name android:apduServiceBanner + */ + public static final int HostApduService_apduServiceBanner = 2; + /** +

+ @attr description + Short description of the functionality the service implements. This attribute + is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int HostApduService_description = 0; + /** +

+ @attr description + Whether the device must be unlocked before routing data to this service. + The default is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requireDeviceUnlock}. + @attr name android:requireDeviceUnlock + */ + public static final int HostApduService_requireDeviceUnlock = 1; + /** Attributes that can be used with a Icon. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Icon_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #Icon_mimeType android:mimeType} Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}.
+ @see #Icon_icon + @see #Icon_mimeType + */ + public static final int[] Icon = { + 0x01010002, 0x01010026 + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Icon_icon = 0; + /** +

+ @attr description + Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int Icon_mimeType = 1; + /** Attributes that can be used with a IconDefault. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #IconDefault_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
+ @see #IconDefault_icon + */ + public static final int[] IconDefault = { + 0x01010002 + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int IconDefault_icon = 0; + /** Attributes that can be used with a IconMenuView. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #IconMenuView_maxItemsPerRow android:maxItemsPerRow} Defines the maximum number of items per row.
{@link #IconMenuView_maxRows android:maxRows} Defines the maximum number of rows displayed.
{@link #IconMenuView_moreIcon android:moreIcon} 'More' icon.
{@link #IconMenuView_rowHeight android:rowHeight} Defines the height of each row.
+ @see #IconMenuView_maxItemsPerRow + @see #IconMenuView_maxRows + @see #IconMenuView_moreIcon + @see #IconMenuView_rowHeight + */ + public static final int[] IconMenuView = { + 0x01010132, 0x01010133, 0x01010134, 0x01010135, + 0x01010436 + }; + /** +

+ @attr description + Defines the maximum number of items per row. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxItemsPerRow}. + @attr name android:maxItemsPerRow + */ + public static final int IconMenuView_maxItemsPerRow = 2; + /** +

+ @attr description + Defines the maximum number of rows displayed. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxRows}. + @attr name android:maxRows + */ + public static final int IconMenuView_maxRows = 1; + /** +

+ @attr description + 'More' icon. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#moreIcon}. + @attr name android:moreIcon + */ + public static final int IconMenuView_moreIcon = 3; + /** +

+ @attr description + Defines the height of each row. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowHeight}. + @attr name android:rowHeight + */ + public static final int IconMenuView_rowHeight = 0; + /** Attributes that can be used with a ImageSwitcher. + */ + public static final int[] ImageSwitcher = { + + }; + /** Attributes that can be used with a ImageView. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #ImageView_adjustViewBounds android:adjustViewBounds} Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable.
{@link #ImageView_baseline android:baseline} The offset of the baseline within this view.
{@link #ImageView_baselineAlignBottom android:baselineAlignBottom} If true, the image view will be baseline aligned with based on its + bottom edge.
{@link #ImageView_cropToPadding android:cropToPadding} If true, the image will be cropped to fit within its padding.
{@link #ImageView_maxHeight android:maxHeight} An optional argument to supply a maximum height for this view.
{@link #ImageView_maxWidth android:maxWidth} An optional argument to supply a maximum width for this view.
{@link #ImageView_scaleType android:scaleType} Controls how the image should be resized or moved to match the size + of this ImageView.
{@link #ImageView_src android:src} Sets a drawable as the content of this ImageView.
{@link #ImageView_tint android:tint} Set a tinting color for the image.
+ @see #ImageView_adjustViewBounds + @see #ImageView_baseline + @see #ImageView_baselineAlignBottom + @see #ImageView_cropToPadding + @see #ImageView_maxHeight + @see #ImageView_maxWidth + @see #ImageView_scaleType + @see #ImageView_src + @see #ImageView_tint + */ + public static final int[] ImageView = { + 0x01010119, 0x0101011d, 0x0101011e, 0x0101011f, + 0x01010120, 0x01010121, 0x01010122, 0x01010123, + 0x0101031c, 0x0101042f + }; + /** +

+ @attr description + Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#adjustViewBounds}. + @attr name android:adjustViewBounds + */ + public static final int ImageView_adjustViewBounds = 2; + /** +

+ @attr description + The offset of the baseline within this view. See {see android.view.View#getBaseline} + for details + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baseline}. + @attr name android:baseline + */ + public static final int ImageView_baseline = 8; + /** +

+ @attr description + If true, the image view will be baseline aligned with based on its + bottom edge. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAlignBottom}. + @attr name android:baselineAlignBottom + */ + public static final int ImageView_baselineAlignBottom = 6; + /** +

+ @attr description + If true, the image will be cropped to fit within its padding. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cropToPadding}. + @attr name android:cropToPadding + */ + public static final int ImageView_cropToPadding = 7; + /** +

+ @attr description + An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int ImageView_maxHeight = 4; + /** +

+ @attr description + An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int ImageView_maxWidth = 3; + /** +

+ @attr description + Controls how the image should be resized or moved to match the size + of this ImageView. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
matrix0
fitXY1
fitStart2
fitCenter3
fitEnd4
center5
centerCrop6
centerInside7
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleType}. + @attr name android:scaleType + */ + public static final int ImageView_scaleType = 1; + /** +

+ @attr description + Sets a drawable as the content of this ImageView. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int ImageView_src = 0; + /** +

+ @attr description + Set a tinting color for the image. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tint}. + @attr name android:tint + */ + public static final int ImageView_tint = 5; + /** An input-extras is a container for extra data to supply to + an input method. Contains + one more more {@link #Extra } tags. + */ + public static final int[] InputExtras = { + + }; + /** Use input-method as the root tag of the XML resource that + describes an + {@link android.view.inputmethod.InputMethod} service, which is + referenced from its + {@link android.view.inputmethod.InputMethod#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #InputMethod_isDefault android:isDefault} Set to true in all of the configurations for which this input + method should be considered an option as the default.
{@link #InputMethod_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
{@link #InputMethod_supportsSwitchingToNextInputMethod android:supportsSwitchingToNextInputMethod} Set to true if this input method supports ways to switch to + a next input method (e.
+ @see #InputMethod_isDefault + @see #InputMethod_settingsActivity + @see #InputMethod_supportsSwitchingToNextInputMethod + */ + public static final int[] InputMethod = { + 0x01010221, 0x01010225, 0x010103eb + }; + /** +

+ @attr description + Set to true in all of the configurations for which this input + method should be considered an option as the default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isDefault}. + @attr name android:isDefault + */ + public static final int InputMethod_isDefault = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int InputMethod_settingsActivity = 1; + /** +

+ @attr description + Set to true if this input method supports ways to switch to + a next input method (e.g. a globe key.). When this is true and + InputMethodManager#shouldOfferSwitchingToNextInputMethod() returns true, + the IME has to offer ways to to invoke InputMethodManager#switchToNextInputMethod() + accordingly. +

Note that the system determines the most appropriate next input method + and subtype in order to provide the consistent user experience in switching + between IMEs and subtypes. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#supportsSwitchingToNextInputMethod}. + @attr name android:supportsSwitchingToNextInputMethod + */ + public static final int InputMethod_supportsSwitchingToNextInputMethod = 2; + /** Attributes that can be used with a InputMethodService. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #InputMethodService_imeExtractEnterAnimation android:imeExtractEnterAnimation} Animation to use when showing the fullscreen extract UI after + it had previously been hidden.
{@link #InputMethodService_imeExtractExitAnimation android:imeExtractExitAnimation} Animation to use when hiding the fullscreen extract UI after + it had previously been shown.
{@link #InputMethodService_imeFullscreenBackground android:imeFullscreenBackground} Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application.
+ @see #InputMethodService_imeExtractEnterAnimation + @see #InputMethodService_imeExtractExitAnimation + @see #InputMethodService_imeFullscreenBackground + */ + public static final int[] InputMethodService = { + 0x0101022c, 0x01010268, 0x01010269 + }; + /** +

+ @attr description + Animation to use when showing the fullscreen extract UI after + it had previously been hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeExtractEnterAnimation}. + @attr name android:imeExtractEnterAnimation + */ + public static final int InputMethodService_imeExtractEnterAnimation = 1; + /** +

+ @attr description + Animation to use when hiding the fullscreen extract UI after + it had previously been shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeExtractExitAnimation}. + @attr name android:imeExtractExitAnimation + */ + public static final int InputMethodService_imeExtractExitAnimation = 2; + /** +

+ @attr description + Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application. This allows, + for example, the candidate view to be hidden + while in fullscreen mode without having the application show through + behind it. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeFullscreenBackground}. + @attr name android:imeFullscreenBackground + */ + public static final int InputMethodService_imeFullscreenBackground = 0; + /** This is the subtype of InputMethod. Subtype can describe locales (e.g. en_US, fr_FR...) + and modes (e.g. voice, keyboard...), and is used for IME switch. This subtype allows + the system to call the specified subtype of the IME directly. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #InputMethod_Subtype_icon android:icon} The icon of the subtype.
{@link #InputMethod_Subtype_imeSubtypeExtraValue android:imeSubtypeExtraValue} The extra value of the subtype.
{@link #InputMethod_Subtype_imeSubtypeLocale android:imeSubtypeLocale} The locale of the subtype.
{@link #InputMethod_Subtype_imeSubtypeMode android:imeSubtypeMode} The mode of the subtype.
{@link #InputMethod_Subtype_isAsciiCapable android:isAsciiCapable} Set to true if this subtype is ASCII capable.
{@link #InputMethod_Subtype_isAuxiliary android:isAuxiliary} Set true if the subtype is auxiliary.
{@link #InputMethod_Subtype_label android:label} The name of the subtype.
{@link #InputMethod_Subtype_overridesImplicitlyEnabledSubtype android:overridesImplicitlyEnabledSubtype} Set true when this subtype should be selected by default if no other subtypes are + selected explicitly.
{@link #InputMethod_Subtype_subtypeId android:subtypeId} The unique id for the subtype.
+ @see #InputMethod_Subtype_icon + @see #InputMethod_Subtype_imeSubtypeExtraValue + @see #InputMethod_Subtype_imeSubtypeLocale + @see #InputMethod_Subtype_imeSubtypeMode + @see #InputMethod_Subtype_isAsciiCapable + @see #InputMethod_Subtype_isAuxiliary + @see #InputMethod_Subtype_label + @see #InputMethod_Subtype_overridesImplicitlyEnabledSubtype + @see #InputMethod_Subtype_subtypeId + */ + public static final int[] InputMethod_Subtype = { + 0x01010001, 0x01010002, 0x010102ec, 0x010102ed, + 0x010102ee, 0x0101037f, 0x010103a2, 0x010103c1, + 0x010103e9 + }; + /** +

+ @attr description + The icon of the subtype. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int InputMethod_Subtype_icon = 1; + /** +

+ @attr description + The extra value of the subtype. This string can be any string and will be passed to + the IME when the framework calls the IME with the subtype. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeExtraValue}. + @attr name android:imeSubtypeExtraValue + */ + public static final int InputMethod_Subtype_imeSubtypeExtraValue = 4; + /** +

+ @attr description + The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + and will be passed to the IME when the framework calls the IME + with the subtype. This is also used by the framework to know the supported locales + of the IME. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeLocale}. + @attr name android:imeSubtypeLocale + */ + public static final int InputMethod_Subtype_imeSubtypeLocale = 2; + /** +

+ @attr description + The mode of the subtype. This string can be a mode (e.g. voice, keyboard...) and this + string will be passed to the IME when the framework calls the IME with the + subtype. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeMode}. + @attr name android:imeSubtypeMode + */ + public static final int InputMethod_Subtype_imeSubtypeMode = 3; + /** +

+ @attr description + Set to true if this subtype is ASCII capable. If the subtype is ASCII + capable, it should guarantee that the user can input ASCII characters with + this subtype. This is important because many password fields only allow + ASCII-characters. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAsciiCapable}. + @attr name android:isAsciiCapable + */ + public static final int InputMethod_Subtype_isAsciiCapable = 8; + /** +

+ @attr description + Set true if the subtype is auxiliary. An auxiliary subtype won't be shown in the + input method selection list in the settings app. + InputMethodManager#switchToLastInputMethod will ignore auxiliary subtypes when it + chooses a target subtype. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAuxiliary}. + @attr name android:isAuxiliary + */ + public static final int InputMethod_Subtype_isAuxiliary = 5; + /** +

+ @attr description + The name of the subtype. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int InputMethod_Subtype_label = 0; + /** +

+ @attr description + Set true when this subtype should be selected by default if no other subtypes are + selected explicitly. Note that a subtype with this parameter being true will + not be shown in the subtypes list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overridesImplicitlyEnabledSubtype}. + @attr name android:overridesImplicitlyEnabledSubtype + */ + public static final int InputMethod_Subtype_overridesImplicitlyEnabledSubtype = 6; + /** +

+ @attr description + The unique id for the subtype. The input method framework keeps track of enabled + subtypes by ID. When the IME package gets upgraded, enabled IDs will stay enabled even + if other attributes are different. If the ID is unspecified (by calling the other + constructor or 0. Arrays.hashCode(new Object[] {locale, mode, extraValue, + isAuxiliary, overridesImplicitlyEnabledSubtype}) will be used instead. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeId}. + @attr name android:subtypeId + */ + public static final int InputMethod_Subtype_subtypeId = 7; + /** Attributes that can be used with a InsetDrawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #InsetDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #InsetDrawable_insetBottom android:insetBottom}
{@link #InsetDrawable_insetLeft android:insetLeft}
{@link #InsetDrawable_insetRight android:insetRight}
{@link #InsetDrawable_insetTop android:insetTop}
{@link #InsetDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #InsetDrawable_drawable + @see #InsetDrawable_insetBottom + @see #InsetDrawable_insetLeft + @see #InsetDrawable_insetRight + @see #InsetDrawable_insetTop + @see #InsetDrawable_visible + */ + public static final int[] InsetDrawable = { + 0x01010194, 0x01010199, 0x010101b7, 0x010101b8, + 0x010101b9, 0x010101ba + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int InsetDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link android.R.attr#insetBottom} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetBottom + */ + public static final int InsetDrawable_insetBottom = 5; + /** +

This symbol is the offset where the {@link android.R.attr#insetLeft} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetLeft + */ + public static final int InsetDrawable_insetLeft = 2; + /** +

This symbol is the offset where the {@link android.R.attr#insetRight} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetRight + */ + public static final int InsetDrawable_insetRight = 3; + /** +

This symbol is the offset where the {@link android.R.attr#insetTop} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetTop + */ + public static final int InsetDrawable_insetTop = 4; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int InsetDrawable_visible = 0; + /** Declaration of an {@link android.content.Intent} object in XML. May + also include zero or more {@link #IntentCategory and + {@link #Extra } tags. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #Intent_action android:action} The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}.
{@link #Intent_data android:data} The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}.
{@link #Intent_mimeType android:mimeType} The MIME type name to assign to the Intent, as per + {@link android.content.Intent#setType Intent.setType()}.
{@link #Intent_targetClass android:targetClass} The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}.
{@link #Intent_targetPackage android:targetPackage} The package part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}.
+ @see #Intent_action + @see #Intent_data + @see #Intent_mimeType + @see #Intent_targetClass + @see #Intent_targetPackage + */ + public static final int[] Intent = { + 0x01010021, 0x01010026, 0x0101002d, 0x0101002e, + 0x0101002f + }; + /** +

+ @attr description + The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#action}. + @attr name android:action + */ + public static final int Intent_action = 2; + /** +

+ @attr description + The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}. +

Note: scheme and host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + URIs here should always be normalized to use lower case letters + for these elements (as well as other proper Uri normalization).

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#data}. + @attr name android:data + */ + public static final int Intent_data = 3; + /** +

+ @attr description + The MIME type name to assign to the Intent, as per + {@link android.content.Intent#setType Intent.setType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int Intent_mimeType = 1; + /** +

+ @attr description + The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetClass}. + @attr name android:targetClass + */ + public static final int Intent_targetClass = 4; + /** +

+ @attr description + The package part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetPackage}. + @attr name android:targetPackage + */ + public static final int Intent_targetPackage = 0; + /** A category to add to an Intent, as per + {@link android.content.Intent#addCategory Intent.addCategory()}. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #IntentCategory_name android:name} Required name of the category.
+ @see #IntentCategory_name + */ + public static final int[] IntentCategory = { + 0x01010003 + }; + /** +

+ @attr description + Required name of the category. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int IntentCategory_name = 0; + /** Attributes that can be used with a KeySet. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #KeySet_name android:name} A unique name for the given item.
+ @see #KeySet_name + */ + public static final int[] KeySet = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int KeySet_name = 0; + /** Attributes that can be used with a Keyboard. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Keyboard_horizontalGap android:horizontalGap} Default horizontal gap between keys.
{@link #Keyboard_keyHeight android:keyHeight} Default height of a key, in pixels or percentage of display width.
{@link #Keyboard_keyWidth android:keyWidth} Default width of a key, in pixels or percentage of display width.
{@link #Keyboard_verticalGap android:verticalGap} Default vertical gap between rows of keys.
+ @see #Keyboard_horizontalGap + @see #Keyboard_keyHeight + @see #Keyboard_keyWidth + @see #Keyboard_verticalGap + */ + public static final int[] Keyboard = { + 0x0101023d, 0x0101023e, 0x0101023f, 0x01010240 + }; + /** +

+ @attr description + Default horizontal gap between keys. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalGap}. + @attr name android:horizontalGap + */ + public static final int Keyboard_horizontalGap = 2; + /** +

+ @attr description + Default height of a key, in pixels or percentage of display width. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyHeight}. + @attr name android:keyHeight + */ + public static final int Keyboard_keyHeight = 1; + /** +

+ @attr description + Default width of a key, in pixels or percentage of display width. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyWidth}. + @attr name android:keyWidth + */ + public static final int Keyboard_keyWidth = 0; + /** +

+ @attr description + Default vertical gap between rows of keys. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalGap}. + @attr name android:verticalGap + */ + public static final int Keyboard_verticalGap = 3; + /** Use keyboard-layouts as the root tag of the XML resource that + describes a collection of keyboard layouts provided by an application. + Each keyboard layout is declared by a keyboard-layout tag + with these attributes. + + The XML resource that contains the keyboard layouts must be referenced from its + {@link android.hardware.input.InputManager#META_DATA_KEYBOARD_LAYOUTS} + meta-data entry used with broadcast receivers for + {@link android.hardware.input.InputManager#ACTION_QUERY_KEYBOARD_LAYOUTS}. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #KeyboardLayout_keyboardLayout android:keyboardLayout} The key character map file resource.
{@link #KeyboardLayout_label android:label} The display label of the keyboard layout.
{@link #KeyboardLayout_name android:name} The name of the keyboard layout, must be unique in the receiver.
+ @see #KeyboardLayout_keyboardLayout + @see #KeyboardLayout_label + @see #KeyboardLayout_name + */ + public static final int[] KeyboardLayout = { + 0x01010001, 0x01010003, 0x010103ab + }; + /** +

+ @attr description + The key character map file resource. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardLayout}. + @attr name android:keyboardLayout + */ + public static final int KeyboardLayout_keyboardLayout = 2; + /** +

+ @attr description + The display label of the keyboard layout. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int KeyboardLayout_label = 0; + /** +

+ @attr description + The name of the keyboard layout, must be unique in the receiver. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int KeyboardLayout_name = 1; + /** Attributes that can be used with a KeyboardView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #KeyboardView_keyBackground android:keyBackground} Image for the key.
{@link #KeyboardView_keyPreviewHeight android:keyPreviewHeight} Height of the key press feedback popup.
{@link #KeyboardView_keyPreviewLayout android:keyPreviewLayout} Layout resource for key press feedback.
{@link #KeyboardView_keyPreviewOffset android:keyPreviewOffset} Vertical offset of the key press feedback from the key.
{@link #KeyboardView_keyTextColor android:keyTextColor} Color to use for the label in a key.
{@link #KeyboardView_keyTextSize android:keyTextSize} Size of the text for character keys.
{@link #KeyboardView_labelTextSize android:labelTextSize} Size of the text for custom keys with some text and no icon.
{@link #KeyboardView_popupLayout android:popupLayout} Layout resource for popup keyboards.
{@link #KeyboardView_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #KeyboardView_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #KeyboardView_verticalCorrection android:verticalCorrection} Amount to offset the touch Y coordinate by, for bias correction.
+ @see #KeyboardView_keyBackground + @see #KeyboardView_keyPreviewHeight + @see #KeyboardView_keyPreviewLayout + @see #KeyboardView_keyPreviewOffset + @see #KeyboardView_keyTextColor + @see #KeyboardView_keyTextSize + @see #KeyboardView_labelTextSize + @see #KeyboardView_popupLayout + @see #KeyboardView_shadowColor + @see #KeyboardView_shadowRadius + @see #KeyboardView_verticalCorrection + */ + public static final int[] KeyboardView = { + 0x01010161, 0x01010164, 0x01010233, 0x01010234, + 0x01010235, 0x01010236, 0x01010237, 0x01010238, + 0x01010239, 0x0101023a, 0x0101023b, 0x0101044f + }; + /** +

+ @attr description + Image for the key. This image needs to be a StateListDrawable, with the following + possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, + checkable+checked+pressed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyBackground}. + @attr name android:keyBackground + */ + public static final int KeyboardView_keyBackground = 2; + /** +

+ @attr description + Height of the key press feedback popup. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewHeight}. + @attr name android:keyPreviewHeight + */ + public static final int KeyboardView_keyPreviewHeight = 8; + /** +

+ @attr description + Layout resource for key press feedback. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewLayout}. + @attr name android:keyPreviewLayout + */ + public static final int KeyboardView_keyPreviewLayout = 6; + /** +

+ @attr description + Vertical offset of the key press feedback from the key. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewOffset}. + @attr name android:keyPreviewOffset + */ + public static final int KeyboardView_keyPreviewOffset = 7; + /** +

+ @attr description + Color to use for the label in a key. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyTextColor}. + @attr name android:keyTextColor + */ + public static final int KeyboardView_keyTextColor = 5; + /** +

+ @attr description + Size of the text for character keys. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyTextSize}. + @attr name android:keyTextSize + */ + public static final int KeyboardView_keyTextSize = 3; + /** +

+ @attr description + Size of the text for custom keys with some text and no icon. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#labelTextSize}. + @attr name android:labelTextSize + */ + public static final int KeyboardView_labelTextSize = 4; + /** +

+ @attr description + Layout resource for popup keyboards. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupLayout}. + @attr name android:popupLayout + */ + public static final int KeyboardView_popupLayout = 10; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int KeyboardView_shadowColor = 0; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int KeyboardView_shadowRadius = 1; + /** +

+ @attr description + Amount to offset the touch Y coordinate by, for bias correction. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalCorrection}. + @attr name android:verticalCorrection + */ + public static final int KeyboardView_verticalCorrection = 9; + /** Attributes that can be used with a KeyboardViewPreviewState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #KeyboardViewPreviewState_state_long_pressable android:state_long_pressable} State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background.
+ @see #KeyboardViewPreviewState_state_long_pressable + */ + public static final int[] KeyboardViewPreviewState = { + 0x0101023c + }; + /** +

+ @attr description + State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_long_pressable}. + @attr name android:state_long_pressable + */ + public static final int KeyboardViewPreviewState_state_long_pressable = 0; + /** Attributes that can be used with a Keyboard_Key. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Keyboard_Key_codes android:codes} The unicode value or comma-separated values that this key outputs.
{@link #Keyboard_Key_iconPreview android:iconPreview} The icon to show in the popup preview.
{@link #Keyboard_Key_isModifier android:isModifier} Whether this is a modifier key such as Alt or Shift.
{@link #Keyboard_Key_isRepeatable android:isRepeatable} Whether long-pressing on this key will make it repeat.
{@link #Keyboard_Key_isSticky android:isSticky} Whether this is a toggle key.
{@link #Keyboard_Key_keyEdgeFlags android:keyEdgeFlags} Key edge flags.
{@link #Keyboard_Key_keyIcon android:keyIcon} The icon to display on the key instead of the label.
{@link #Keyboard_Key_keyLabel android:keyLabel} The label to display on the key.
{@link #Keyboard_Key_keyOutputText android:keyOutputText} The string of characters to output when this key is pressed.
{@link #Keyboard_Key_keyboardMode android:keyboardMode} Mode of the keyboard.
{@link #Keyboard_Key_popupCharacters android:popupCharacters} The characters to display in the popup keyboard.
{@link #Keyboard_Key_popupKeyboard android:popupKeyboard} The XML keyboard layout of any popup keyboard.
+ @see #Keyboard_Key_codes + @see #Keyboard_Key_iconPreview + @see #Keyboard_Key_isModifier + @see #Keyboard_Key_isRepeatable + @see #Keyboard_Key_isSticky + @see #Keyboard_Key_keyEdgeFlags + @see #Keyboard_Key_keyIcon + @see #Keyboard_Key_keyLabel + @see #Keyboard_Key_keyOutputText + @see #Keyboard_Key_keyboardMode + @see #Keyboard_Key_popupCharacters + @see #Keyboard_Key_popupKeyboard + */ + public static final int[] Keyboard_Key = { + 0x01010242, 0x01010243, 0x01010244, 0x01010245, + 0x01010246, 0x01010247, 0x01010248, 0x01010249, + 0x0101024a, 0x0101024b, 0x0101024c, 0x0101024d + }; + /** +

+ @attr description + The unicode value or comma-separated values that this key outputs. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#codes}. + @attr name android:codes + */ + public static final int Keyboard_Key_codes = 0; + /** +

+ @attr description + The icon to show in the popup preview. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#iconPreview}. + @attr name android:iconPreview + */ + public static final int Keyboard_Key_iconPreview = 7; + /** +

+ @attr description + Whether this is a modifier key such as Alt or Shift. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isModifier}. + @attr name android:isModifier + */ + public static final int Keyboard_Key_isModifier = 4; + /** +

+ @attr description + Whether long-pressing on this key will make it repeat. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isRepeatable}. + @attr name android:isRepeatable + */ + public static final int Keyboard_Key_isRepeatable = 6; + /** +

+ @attr description + Whether this is a toggle key. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isSticky}. + @attr name android:isSticky + */ + public static final int Keyboard_Key_isSticky = 5; + /** +

+ @attr description + Key edge flags. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
left1 Key is anchored to the left of the keyboard.
right2 Key is anchored to the right of the keyboard.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyEdgeFlags}. + @attr name android:keyEdgeFlags + */ + public static final int Keyboard_Key_keyEdgeFlags = 3; + /** +

+ @attr description + The icon to display on the key instead of the label. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyIcon}. + @attr name android:keyIcon + */ + public static final int Keyboard_Key_keyIcon = 10; + /** +

+ @attr description + The label to display on the key. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyLabel}. + @attr name android:keyLabel + */ + public static final int Keyboard_Key_keyLabel = 9; + /** +

+ @attr description + The string of characters to output when this key is pressed. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyOutputText}. + @attr name android:keyOutputText + */ + public static final int Keyboard_Key_keyOutputText = 8; + /** +

+ @attr description + Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the key will be skipped. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardMode}. + @attr name android:keyboardMode + */ + public static final int Keyboard_Key_keyboardMode = 11; + /** +

+ @attr description + The characters to display in the popup keyboard. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupCharacters}. + @attr name android:popupCharacters + */ + public static final int Keyboard_Key_popupCharacters = 2; + /** +

+ @attr description + The XML keyboard layout of any popup keyboard. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupKeyboard}. + @attr name android:popupKeyboard + */ + public static final int Keyboard_Key_popupKeyboard = 1; + /** Attributes that can be used with a Keyboard_Row. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Keyboard_Row_keyboardMode android:keyboardMode} Mode of the keyboard.
{@link #Keyboard_Row_rowEdgeFlags android:rowEdgeFlags} Row edge flags.
+ @see #Keyboard_Row_keyboardMode + @see #Keyboard_Row_rowEdgeFlags + */ + public static final int[] Keyboard_Row = { + 0x01010241, 0x0101024d + }; + /** +

+ @attr description + Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the row will be skipped. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardMode}. + @attr name android:keyboardMode + */ + public static final int Keyboard_Row_keyboardMode = 1; + /** +

+ @attr description + Row edge flags. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
top4 Row is anchored to the top of the keyboard.
bottom8 Row is anchored to the bottom of the keyboard.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowEdgeFlags}. + @attr name android:rowEdgeFlags + */ + public static final int Keyboard_Row_rowEdgeFlags = 0; + /** Attributes that can be used with a KeyguardGlowStripView. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] KeyguardGlowStripView = { + 0x01010475, 0x01010476, 0x01010477, 0x01010478 + }; + /** Attributes that can be used with a KeyguardSecurityViewFlipper_Layout. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] KeyguardSecurityViewFlipper_Layout = { + 0x0101045f, 0x0101047b + }; + /** Drawable used to render several drawables stacked on top of each other. + Each child drawable can be controlled individually. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #LayerDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #LayerDrawable_opacity android:opacity} Indicates the opacity of the layer.
+ @see #LayerDrawable_autoMirrored + @see #LayerDrawable_opacity + */ + public static final int[] LayerDrawable = { + 0x0101031e, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int LayerDrawable_autoMirrored = 1; + /** +

+ @attr description + Indicates the opacity of the layer. This can be useful to allow the + system to enable drawing optimizations. The default value is + translucent. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
opaque-1 Indicates that the layer is opaque and contains no transparent + nor translucent pixels.
transparent-2 The layer is completely transparent (no pixel will be drawn.)
translucent-3 The layer has translucent pixels.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#opacity}. + @attr name android:opacity + */ + public static final int LayerDrawable_opacity = 0; + /** Describes an item (or child) of a LayerDrawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #LayerDrawableItem_bottom android:bottom} Bottom coordinate of the layer.
{@link #LayerDrawableItem_drawable android:drawable} Drawable used to render the layer.
{@link #LayerDrawableItem_id android:id} Identifier of the layer.
{@link #LayerDrawableItem_left android:left} Left coordinate of the layer.
{@link #LayerDrawableItem_right android:right} Right coordinate of the layer.
{@link #LayerDrawableItem_top android:top} Top coordinate of the layer.
+ @see #LayerDrawableItem_bottom + @see #LayerDrawableItem_drawable + @see #LayerDrawableItem_id + @see #LayerDrawableItem_left + @see #LayerDrawableItem_right + @see #LayerDrawableItem_top + */ + public static final int[] LayerDrawableItem = { + 0x010100d0, 0x01010199, 0x010101ad, 0x010101ae, + 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Bottom coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int LayerDrawableItem_bottom = 5; + /** +

+ @attr description + Drawable used to render the layer. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int LayerDrawableItem_drawable = 1; + /** +

+ @attr description + Identifier of the layer. This can be used to retrieve the layer + from a drawbable container. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int LayerDrawableItem_id = 0; + /** +

+ @attr description + Left coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int LayerDrawableItem_left = 2; + /** +

+ @attr description + Right coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int LayerDrawableItem_right = 4; + /** +

+ @attr description + Top coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int LayerDrawableItem_top = 3; + /** Attributes that can be used with a LayoutAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #LayoutAnimation_animation android:animation} Animation to use on each child.
{@link #LayoutAnimation_animationOrder android:animationOrder} The order in which the animations will be started.
{@link #LayoutAnimation_delay android:delay} Fraction of the animation duration used to delay the beginning of + the animation of each child.
{@link #LayoutAnimation_interpolator android:interpolator} Interpolator used to interpolate the delay between the start of + each animation.
+ @see #LayoutAnimation_animation + @see #LayoutAnimation_animationOrder + @see #LayoutAnimation_delay + @see #LayoutAnimation_interpolator + */ + public static final int[] LayoutAnimation = { + 0x01010141, 0x010101cc, 0x010101cd, 0x010101ce + }; + /** +

+ @attr description + Animation to use on each child. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animation}. + @attr name android:animation + */ + public static final int LayoutAnimation_animation = 2; + /** +

+ @attr description + The order in which the animations will be started. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Animations are started in the natural order.
reverse1 Animations are started in the reverse order.
random2 Animations are started randomly.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationOrder}. + @attr name android:animationOrder + */ + public static final int LayoutAnimation_animationOrder = 3; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each child. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#delay}. + @attr name android:delay + */ + public static final int LayoutAnimation_delay = 1; + /** +

+ @attr description + Interpolator used to interpolate the delay between the start of + each animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int LayoutAnimation_interpolator = 0; + /** Attributes that can be used with a LevelListDrawableItem. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #LevelListDrawableItem_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #LevelListDrawableItem_maxLevel android:maxLevel} The maximum level allowed for this item.
{@link #LevelListDrawableItem_minLevel android:minLevel} The minimum level allowed for this item.
+ @see #LevelListDrawableItem_drawable + @see #LevelListDrawableItem_maxLevel + @see #LevelListDrawableItem_minLevel + */ + public static final int[] LevelListDrawableItem = { + 0x01010199, 0x010101b1, 0x010101b2 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int LevelListDrawableItem_drawable = 0; + /** +

+ @attr description + The maximum level allowed for this item. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLevel}. + @attr name android:maxLevel + */ + public static final int LevelListDrawableItem_maxLevel = 2; + /** +

+ @attr description + The minimum level allowed for this item. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minLevel}. + @attr name android:minLevel + */ + public static final int LevelListDrawableItem_minLevel = 1; + /** Attributes that can be used with a LinearLayout. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #LinearLayout_baselineAligned android:baselineAligned} When set to false, prevents the layout from aligning its children's + baselines.
{@link #LinearLayout_baselineAlignedChildIndex android:baselineAlignedChildIndex} When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView).
{@link #LinearLayout_divider android:divider} Drawable to use as a vertical divider between buttons.
{@link #LinearLayout_dividerPadding android:dividerPadding} Size of padding on either end of a divider.
{@link #LinearLayout_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #LinearLayout_measureWithLargestChild android:measureWithLargestChild} When set to true, all children with a weight will be considered having + the minimum size of the largest child.
{@link #LinearLayout_orientation android:orientation} Should the layout be a column or a row? Use "horizontal" + for a row, "vertical" for a column.
{@link #LinearLayout_showDividers android:showDividers} Setting for which dividers to show.
{@link #LinearLayout_weightSum android:weightSum} Defines the maximum weight sum.
+ @see #LinearLayout_baselineAligned + @see #LinearLayout_baselineAlignedChildIndex + @see #LinearLayout_divider + @see #LinearLayout_dividerPadding + @see #LinearLayout_gravity + @see #LinearLayout_measureWithLargestChild + @see #LinearLayout_orientation + @see #LinearLayout_showDividers + @see #LinearLayout_weightSum + */ + public static final int[] LinearLayout = { + 0x010100af, 0x010100c4, 0x01010126, 0x01010127, + 0x01010128, 0x01010129, 0x010102d4, 0x01010329, + 0x0101032a + }; + /** +

+ @attr description + When set to false, prevents the layout from aligning its children's + baselines. This attribute is particularly useful when the children + use different values for gravity. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAligned}. + @attr name android:baselineAligned + */ + public static final int LinearLayout_baselineAligned = 2; + /** +

+ @attr description + When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView). + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAlignedChildIndex}. + @attr name android:baselineAlignedChildIndex + */ + public static final int LinearLayout_baselineAlignedChildIndex = 3; + /** +

+ @attr description + Drawable to use as a vertical divider between buttons. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int LinearLayout_divider = 5; + /** +

+ @attr description + Size of padding on either end of a divider. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerPadding}. + @attr name android:dividerPadding + */ + public static final int LinearLayout_dividerPadding = 8; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int LinearLayout_gravity = 0; + /** +

+ @attr description + When set to true, all children with a weight will be considered having + the minimum size of the largest child. If false, all children are + measured normally. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#measureWithLargestChild}. + @attr name android:measureWithLargestChild + */ + public static final int LinearLayout_measureWithLargestChild = 6; + /** +

+ @attr description + Should the layout be a column or a row? Use "horizontal" + for a row, "vertical" for a column. The default is + horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int LinearLayout_orientation = 1; + /** +

+ @attr description + Setting for which dividers to show. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0
beginning1
middle2
end4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#showDividers}. + @attr name android:showDividers + */ + public static final int LinearLayout_showDividers = 7; + /** +

+ @attr description + Defines the maximum weight sum. If unspecified, the sum is computed + by adding the layout_weight of all of the children. This can be + used for instance to give a single child 50% of the total available + space by giving it a layout_weight of 0.5 and setting the weightSum + to 1.0. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weightSum}. + @attr name android:weightSum + */ + public static final int LinearLayout_weightSum = 4; + /** Attributes that can be used with a LinearLayout_Layout. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #LinearLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
{@link #LinearLayout_Layout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #LinearLayout_Layout_layout_weight android:layout_weight}
{@link #LinearLayout_Layout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #LinearLayout_Layout_layout_gravity + @see #LinearLayout_Layout_layout_height + @see #LinearLayout_Layout_layout_weight + @see #LinearLayout_Layout_layout_width + */ + public static final int[] LinearLayout_Layout = { + 0x010100b3, 0x010100f4, 0x010100f5, 0x01010181 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int LinearLayout_Layout_layout_gravity = 0; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int LinearLayout_Layout_layout_height = 2; + /** +

This symbol is the offset where the {@link android.R.attr#layout_weight} + attribute's value can be found in the {@link #LinearLayout_Layout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_weight + */ + public static final int LinearLayout_Layout_layout_weight = 3; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int LinearLayout_Layout_layout_width = 1; + /** Base attributes available to ListPreference. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ListPreference_entries android:entries} The human-readable array to present as a list.
{@link #ListPreference_entryValues android:entryValues} The array to find the value to save for a preference when an entry from + entries is selected.
+ @see #ListPreference_entries + @see #ListPreference_entryValues + */ + public static final int[] ListPreference = { + 0x010100b2, 0x010101f8 + }; + /** +

+ @attr description + The human-readable array to present as a list. Each entry must have a corresponding + index in entryValues. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int ListPreference_entries = 0; + /** +

+ @attr description + The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks on the second item in entries, the + second item in this array will be saved to the preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entryValues}. + @attr name android:entryValues + */ + public static final int ListPreference_entryValues = 1; + /** Attributes that can be used with a ListView. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #ListView_divider android:divider} Drawable or color to draw between list items.
{@link #ListView_dividerHeight android:dividerHeight} Height of the divider.
{@link #ListView_entries android:entries} Reference to an array resource that will populate the ListView.
{@link #ListView_footerDividersEnabled android:footerDividersEnabled} When set to false, the ListView will not draw the divider before each footer view.
{@link #ListView_headerDividersEnabled android:headerDividersEnabled} When set to false, the ListView will not draw the divider after each header view.
{@link #ListView_overScrollFooter android:overScrollFooter} Drawable to draw below list content.
{@link #ListView_overScrollHeader android:overScrollHeader} Drawable to draw above list content.
+ @see #ListView_divider + @see #ListView_dividerHeight + @see #ListView_entries + @see #ListView_footerDividersEnabled + @see #ListView_headerDividersEnabled + @see #ListView_overScrollFooter + @see #ListView_overScrollHeader + */ + public static final int[] ListView = { + 0x010100b2, 0x01010129, 0x0101012a, 0x0101022e, + 0x0101022f, 0x010102c2, 0x010102c3 + }; + /** +

+ @attr description + Drawable or color to draw between list items. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int ListView_divider = 1; + /** +

+ @attr description + Height of the divider. Will use the intrinsic height of the divider if this + is not specified. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerHeight}. + @attr name android:dividerHeight + */ + public static final int ListView_dividerHeight = 2; + /** +

+ @attr description + Reference to an array resource that will populate the ListView. For static content, + this is simpler than populating the ListView programmatically. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int ListView_entries = 0; + /** +

+ @attr description + When set to false, the ListView will not draw the divider before each footer view. + The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#footerDividersEnabled}. + @attr name android:footerDividersEnabled + */ + public static final int ListView_footerDividersEnabled = 4; + /** +

+ @attr description + When set to false, the ListView will not draw the divider after each header view. + The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#headerDividersEnabled}. + @attr name android:headerDividersEnabled + */ + public static final int ListView_headerDividersEnabled = 3; + /** +

+ @attr description + Drawable to draw below list content. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollFooter}. + @attr name android:overScrollFooter + */ + public static final int ListView_overScrollFooter = 6; + /** +

+ @attr description + Drawable to draw above list content. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollHeader}. + @attr name android:overScrollHeader + */ + public static final int ListView_overScrollHeader = 5; + /** Attributes that can be used with a LockPatternView. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] LockPatternView = { + 0x01010461 + }; + /** The set of attributes for a MapView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MapView_apiKey android:apiKey} Value is a string that specifies the Maps API Key to use.
+ @see #MapView_apiKey + */ + public static final int[] MapView = { + 0x01010211 + }; + /** +

+ @attr description + Value is a string that specifies the Maps API Key to use. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apiKey}. + @attr name android:apiKey + */ + public static final int MapView_apiKey = 0; + /** Attributes that can be used with a MediaRouteButton. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #MediaRouteButton_mediaRouteTypes android:mediaRouteTypes} The types of media routes the button and its resulting + chooser will filter by.
{@link #MediaRouteButton_minHeight android:minHeight}
{@link #MediaRouteButton_minWidth android:minWidth}
+ @see #MediaRouteButton_mediaRouteTypes + @see #MediaRouteButton_minHeight + @see #MediaRouteButton_minWidth + */ + public static final int[] MediaRouteButton = { + 0x0101013f, 0x01010140, 0x010103ae, 0x01010471 + }; + /** +

+ @attr description + The types of media routes the button and its resulting + chooser will filter by. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
liveAudio0x1 Allow selection of live audio routes.
user0x800000 Allow selection of user (app-specified) routes.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#mediaRouteTypes}. + @attr name android:mediaRouteTypes + */ + public static final int MediaRouteButton_mediaRouteTypes = 2; + /** +

This symbol is the offset where the {@link android.R.attr#minHeight} + attribute's value can be found in the {@link #MediaRouteButton} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minHeight + */ + public static final int MediaRouteButton_minHeight = 1; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #MediaRouteButton} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int MediaRouteButton_minWidth = 0; + /** Base attributes that are available to all Menu objects. + */ + public static final int[] Menu = { + + }; + /** Base attributes that are available to all groups. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #MenuGroup_checkableBehavior android:checkableBehavior} Whether the items are capable of displaying a check mark.
{@link #MenuGroup_enabled android:enabled} Whether the items are enabled.
{@link #MenuGroup_id android:id} The ID of the group.
{@link #MenuGroup_menuCategory android:menuCategory} The category applied to all items within this group.
{@link #MenuGroup_orderInCategory android:orderInCategory} The order within the category applied to all items within this group.
{@link #MenuGroup_visible android:visible} Whether the items are shown/visible.
+ @see #MenuGroup_checkableBehavior + @see #MenuGroup_enabled + @see #MenuGroup_id + @see #MenuGroup_menuCategory + @see #MenuGroup_orderInCategory + @see #MenuGroup_visible + */ + public static final int[] MenuGroup = { + 0x0101000e, 0x010100d0, 0x01010194, 0x010101de, + 0x010101df, 0x010101e0 + }; + /** +

+ @attr description + Whether the items are capable of displaying a check mark. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 The items are not checkable.
all1 The items are all checkable.
single2 The items are checkable and there will only be a single checked item in + this group.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkableBehavior}. + @attr name android:checkableBehavior + */ + public static final int MenuGroup_checkableBehavior = 5; + /** +

+ @attr description + Whether the items are enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int MenuGroup_enabled = 0; + /** +

+ @attr description + The ID of the group. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int MenuGroup_id = 1; + /** +

+ @attr description + The category applied to all items within this group. + (This will be or'ed with the orderInCategory attribute.) + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#menuCategory}. + @attr name android:menuCategory + */ + public static final int MenuGroup_menuCategory = 3; + /** +

+ @attr description + The order within the category applied to all items within this group. + (This will be or'ed with the category attribute.) + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderInCategory}. + @attr name android:orderInCategory + */ + public static final int MenuGroup_orderInCategory = 4; + /** +

+ @attr description + Whether the items are shown/visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int MenuGroup_visible = 2; + /** Base attributes that are available to all Item objects. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #MenuItem_actionLayout android:actionLayout} An optional layout to be used as an action view.
{@link #MenuItem_actionProviderClass android:actionProviderClass} The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item.
{@link #MenuItem_actionViewClass android:actionViewClass} The name of an optional View class to instantiate and use as an + action view.
{@link #MenuItem_alphabeticShortcut android:alphabeticShortcut} The alphabetic shortcut key.
{@link #MenuItem_checkable android:checkable} Whether the item is capable of displaying a check mark.
{@link #MenuItem_checked android:checked} Whether the item is checked.
{@link #MenuItem_enabled android:enabled} Whether the item is enabled.
{@link #MenuItem_icon android:icon} The icon associated with this item.
{@link #MenuItem_id android:id} The ID of the item.
{@link #MenuItem_menuCategory android:menuCategory} The category applied to the item.
{@link #MenuItem_numericShortcut android:numericShortcut} The numeric shortcut key.
{@link #MenuItem_onClick android:onClick} Name of a method on the Context used to inflate the menu that will be + called when the item is clicked.
{@link #MenuItem_orderInCategory android:orderInCategory} The order within the category applied to the item.
{@link #MenuItem_showAsAction android:showAsAction} How this item should display in the Action Bar, if present.
{@link #MenuItem_title android:title} The title associated with the item.
{@link #MenuItem_titleCondensed android:titleCondensed} The condensed title associated with the item.
{@link #MenuItem_visible android:visible} Whether the item is shown/visible.
+ @see #MenuItem_actionLayout + @see #MenuItem_actionProviderClass + @see #MenuItem_actionViewClass + @see #MenuItem_alphabeticShortcut + @see #MenuItem_checkable + @see #MenuItem_checked + @see #MenuItem_enabled + @see #MenuItem_icon + @see #MenuItem_id + @see #MenuItem_menuCategory + @see #MenuItem_numericShortcut + @see #MenuItem_onClick + @see #MenuItem_orderInCategory + @see #MenuItem_showAsAction + @see #MenuItem_title + @see #MenuItem_titleCondensed + @see #MenuItem_visible + */ + public static final int[] MenuItem = { + 0x01010002, 0x0101000e, 0x010100d0, 0x01010106, + 0x01010194, 0x010101de, 0x010101df, 0x010101e1, + 0x010101e2, 0x010101e3, 0x010101e4, 0x010101e5, + 0x0101026f, 0x010102d9, 0x010102fb, 0x010102fc, + 0x01010389 + }; + /** +

+ @attr description + An optional layout to be used as an action view. + See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionLayout}. + @attr name android:actionLayout + */ + public static final int MenuItem_actionLayout = 14; + /** +

+ @attr description + The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item. + See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)} + for more info. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionProviderClass}. + @attr name android:actionProviderClass + */ + public static final int MenuItem_actionProviderClass = 16; + /** +

+ @attr description + The name of an optional View class to instantiate and use as an + action view. See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionViewClass}. + @attr name android:actionViewClass + */ + public static final int MenuItem_actionViewClass = 15; + /** +

+ @attr description + The alphabetic shortcut key. This is the shortcut when using a keyboard + with alphabetic keys. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alphabeticShortcut}. + @attr name android:alphabeticShortcut + */ + public static final int MenuItem_alphabeticShortcut = 9; + /** +

+ @attr description + Whether the item is capable of displaying a check mark. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkable}. + @attr name android:checkable + */ + public static final int MenuItem_checkable = 11; + /** +

+ @attr description + Whether the item is checked. Note that you must first have enabled checking with + the checkable attribute or else the check mark will not appear. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int MenuItem_checked = 3; + /** +

+ @attr description + Whether the item is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int MenuItem_enabled = 1; + /** +

+ @attr description + The icon associated with this item. This icon will not always be shown, so + the title should be sufficient in describing this item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int MenuItem_icon = 0; + /** +

+ @attr description + The ID of the item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int MenuItem_id = 2; + /** +

+ @attr description + The category applied to the item. + (This will be or'ed with the orderInCategory attribute.) + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#menuCategory}. + @attr name android:menuCategory + */ + public static final int MenuItem_menuCategory = 5; + /** +

+ @attr description + The numeric shortcut key. This is the shortcut when using a numeric (e.g., 12-key) + keyboard. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#numericShortcut}. + @attr name android:numericShortcut + */ + public static final int MenuItem_numericShortcut = 10; + /** +

+ @attr description + Name of a method on the Context used to inflate the menu that will be + called when the item is clicked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#onClick}. + @attr name android:onClick + */ + public static final int MenuItem_onClick = 12; + /** +

+ @attr description + The order within the category applied to the item. + (This will be or'ed with the category attribute.) + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderInCategory}. + @attr name android:orderInCategory + */ + public static final int MenuItem_orderInCategory = 6; + /** +

+ @attr description + How this item should display in the Action Bar, if present. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
never0 Never show this item in an action bar, show it in the overflow menu instead. + Mutually exclusive with "ifRoom" and "always".
ifRoom1 Show this item in an action bar if there is room for it as determined + by the system. Favor this option over "always" where possible. + Mutually exclusive with "never" and "always".
always2 Always show this item in an actionbar, even if it would override + the system's limits of how much stuff to put there. This may make + your action bar look bad on some screens. In most cases you should + use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never".
withText4 When this item is shown as an action in the action bar, show a text + label with it even if it has an icon representation.
collapseActionView8 This item's action view collapses to a normal menu + item. When expanded, the action view takes over a + larger segment of its container.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#showAsAction}. + @attr name android:showAsAction + */ + public static final int MenuItem_showAsAction = 13; + /** +

+ @attr description + The title associated with the item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int MenuItem_title = 7; + /** +

+ @attr description + The condensed title associated with the item. This is used in situations where the + normal title may be too long to be displayed. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleCondensed}. + @attr name android:titleCondensed + */ + public static final int MenuItem_titleCondensed = 8; + /** +

+ @attr description + Whether the item is shown/visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int MenuItem_visible = 4; + /** State array representing a menu item that is currently focused and checked. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #MenuItemCheckedFocusedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemCheckedFocusedState_state_checked android:state_checked} State identifier indicating that the object is currently checked.
{@link #MenuItemCheckedFocusedState_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
+ @see #MenuItemCheckedFocusedState_state_checkable + @see #MenuItemCheckedFocusedState_state_checked + @see #MenuItemCheckedFocusedState_state_focused + */ + public static final int[] MenuItemCheckedFocusedState = { + 0x0101009c, 0x0101009f, 0x010100a0 + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemCheckedFocusedState_state_checkable = 1; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int MenuItemCheckedFocusedState_state_checked = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int MenuItemCheckedFocusedState_state_focused = 0; + /** State array representing a menu item that is currently checked. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MenuItemCheckedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemCheckedState_state_checked android:state_checked} State identifier indicating that the object is currently checked.
+ @see #MenuItemCheckedState_state_checkable + @see #MenuItemCheckedState_state_checked + */ + public static final int[] MenuItemCheckedState = { + 0x0101009f, 0x010100a0 + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemCheckedState_state_checkable = 0; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int MenuItemCheckedState_state_checked = 1; + /** State array representing a menu item that is focused and checkable but is not currently checked. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MenuItemUncheckedFocusedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemUncheckedFocusedState_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
+ @see #MenuItemUncheckedFocusedState_state_checkable + @see #MenuItemUncheckedFocusedState_state_focused + */ + public static final int[] MenuItemUncheckedFocusedState = { + 0x0101009c, 0x0101009f + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemUncheckedFocusedState_state_checkable = 1; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int MenuItemUncheckedFocusedState_state_focused = 0; + /** State array representing a menu item that is checkable but is not currently checked. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MenuItemUncheckedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
+ @see #MenuItemUncheckedState_state_checkable + */ + public static final int[] MenuItemUncheckedState = { + 0x0101009f + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemUncheckedState_state_checkable = 0; + /** Attributes that can be used with a MenuView. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #MenuView_headerBackground android:headerBackground} Default background for the menu header.
{@link #MenuView_horizontalDivider android:horizontalDivider} Default horizontal divider between rows of menu items.
{@link #MenuView_itemBackground android:itemBackground} Default background for each menu item.
{@link #MenuView_itemIconDisabledAlpha android:itemIconDisabledAlpha} Default disabled icon alpha for each menu item that shows an icon.
{@link #MenuView_itemTextAppearance android:itemTextAppearance} Default appearance of menu item text.
{@link #MenuView_verticalDivider android:verticalDivider} Default vertical divider between menu items.
{@link #MenuView_windowAnimationStyle android:windowAnimationStyle} Default animations for the menu.
+ @see #MenuView_headerBackground + @see #MenuView_horizontalDivider + @see #MenuView_itemBackground + @see #MenuView_itemIconDisabledAlpha + @see #MenuView_itemTextAppearance + @see #MenuView_verticalDivider + @see #MenuView_windowAnimationStyle + */ + public static final int[] MenuView = { + 0x010100ae, 0x0101012c, 0x0101012d, 0x0101012e, + 0x0101012f, 0x01010130, 0x01010131, 0x01010435 + }; + /** +

+ @attr description + Default background for the menu header. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#headerBackground}. + @attr name android:headerBackground + */ + public static final int MenuView_headerBackground = 4; + /** +

+ @attr description + Default horizontal divider between rows of menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalDivider}. + @attr name android:horizontalDivider + */ + public static final int MenuView_horizontalDivider = 2; + /** +

+ @attr description + Default background for each menu item. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemBackground}. + @attr name android:itemBackground + */ + public static final int MenuView_itemBackground = 5; + /** +

+ @attr description + Default disabled icon alpha for each menu item that shows an icon. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemIconDisabledAlpha}. + @attr name android:itemIconDisabledAlpha + */ + public static final int MenuView_itemIconDisabledAlpha = 6; + /** +

+ @attr description + Default appearance of menu item text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemTextAppearance}. + @attr name android:itemTextAppearance + */ + public static final int MenuView_itemTextAppearance = 1; + /** +

+ @attr description + Default vertical divider between menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalDivider}. + @attr name android:verticalDivider + */ + public static final int MenuView_verticalDivider = 3; + /** +

+ @attr description + Default animations for the menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int MenuView_windowAnimationStyle = 0; + /** Attributes that can be used with a MultiPaneChallengeLayout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MultiPaneChallengeLayout_orientation android:orientation} Influences how layout_centerWithinArea behaves
+ @see #MultiPaneChallengeLayout_orientation + */ + public static final int[] MultiPaneChallengeLayout = { + 0x010100c4 + }; + /** +

+ @attr description + Influences how layout_centerWithinArea behaves + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int MultiPaneChallengeLayout_orientation = 0; + /** Attributes that can be used with a MultiPaneChallengeLayout_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MultiPaneChallengeLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
+ @see #MultiPaneChallengeLayout_Layout_layout_gravity + */ + public static final int[] MultiPaneChallengeLayout_Layout = { + 0x010100b3, 0x0101045f, 0x01010479, 0x0101047a, + 0x0101047b + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int MultiPaneChallengeLayout_Layout_layout_gravity = 0; + /** Attributes that can be used with a MultiSelectListPreference. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MultiSelectListPreference_entries android:entries} The human-readable array to present as a list.
{@link #MultiSelectListPreference_entryValues android:entryValues} The array to find the value to save for a preference when an entry from + entries is selected.
+ @see #MultiSelectListPreference_entries + @see #MultiSelectListPreference_entryValues + */ + public static final int[] MultiSelectListPreference = { + 0x010100b2, 0x010101f8 + }; + /** +

+ @attr description + The human-readable array to present as a list. Each entry must have a corresponding + index in entryValues. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int MultiSelectListPreference_entries = 0; + /** +

+ @attr description + The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks the second item in entries, the + second item in this array will be saved to the preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entryValues}. + @attr name android:entryValues + */ + public static final int MultiSelectListPreference_entryValues = 1; + /** Attributes that can be used with a MultiWaveView. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MultiWaveView_directionDescriptions android:directionDescriptions} Reference to an array resource that be used to announce the directions with targets around the circle.
{@link #MultiWaveView_targetDescriptions android:targetDescriptions} Reference to an array resource that be used as description for the targets around the circle.
+ @see #MultiWaveView_directionDescriptions + @see #MultiWaveView_targetDescriptions + */ + public static final int[] MultiWaveView = { + 0x010103a0, 0x010103a1, 0x01010456, 0x01010457, + 0x01010458, 0x01010459, 0x0101045a, 0x0101045b, + 0x0101045c, 0x0101045d, 0x0101045e + }; + /** +

+ @attr description + Reference to an array resource that be used to announce the directions with targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionDescriptions}. + @attr name android:directionDescriptions + */ + public static final int MultiWaveView_directionDescriptions = 1; + /** +

+ @attr description + Reference to an array resource that be used as description for the targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetDescriptions}. + @attr name android:targetDescriptions + */ + public static final int MultiWaveView_targetDescriptions = 0; + /** Drawable used to draw 9-patches. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #NinePatchDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #NinePatchDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #NinePatchDrawable_src android:src} Identifier of the bitmap file.
+ @see #NinePatchDrawable_autoMirrored + @see #NinePatchDrawable_dither + @see #NinePatchDrawable_src + */ + public static final int[] NinePatchDrawable = { + 0x01010119, 0x0101011c, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int NinePatchDrawable_autoMirrored = 2; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int NinePatchDrawable_dither = 1; + /** +

+ @attr description + Identifier of the bitmap file. This attribute is mandatory. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int NinePatchDrawable_src = 0; + /** Attributes that can be used with a NumPadKey. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] NumPadKey = { + 0x0101047c, 0x0101047d + }; + /** Attributes that can be used with a NumberPicker. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #NumberPicker_solidColor android:solidColor} @hide Color for the solid color background if such for optimized rendering.
+ @see #NumberPicker_solidColor + */ + public static final int[] NumberPicker = { + 0x0101034a, 0x0101043c, 0x01010442, 0x01010443, + 0x01010444, 0x01010445, 0x01010446, 0x01010447, + 0x01010448, 0x01010449 + }; + /** +

+ @attr description + @hide Color for the solid color background if such for optimized rendering. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#solidColor}. + @attr name android:solidColor + */ + public static final int NumberPicker_solidColor = 0; + /** Use offhost-apdu-service as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.OffHostApduService} + service, which is referenced from its + {@link android.nfc.cardemulation.OffHostApduService#SERVICE_META_DATA} entry. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #OffHostApduService_apduServiceBanner android:apduServiceBanner} A drawable that can be rendered in Android's system UI for representing + the service.
{@link #OffHostApduService_description android:description} Short description of the functionality the service implements.
+ @see #OffHostApduService_apduServiceBanner + @see #OffHostApduService_description + */ + public static final int[] OffHostApduService = { + 0x01010020, 0x010103ed + }; + /** +

+ @attr description + A drawable that can be rendered in Android's system UI for representing + the service. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apduServiceBanner}. + @attr name android:apduServiceBanner + */ + public static final int OffHostApduService_apduServiceBanner = 1; + /** +

+ @attr description + Short description of the functionality the service implements. This attribute + is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int OffHostApduService_description = 0; + /** Attributes that can be used with a OvershootInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #OvershootInterpolator_tension android:tension} This is the amount of tension.
+ @see #OvershootInterpolator_tension + */ + public static final int[] OvershootInterpolator = { + 0x0101026a + }; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int OvershootInterpolator_tension = 0; + /** PagedView specific attributes. These attributes are used to customize + a PagedView view in XML files. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] PagedView = { + 0x01010472, 0x01010473, 0x01010474 + }; + /** Attributes that can be used with a Pointer. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] Pointer = { + 0x01010462, 0x01010463, 0x01010464, 0x01010465 + }; + /** Attributes that can be used with a PointerIcon. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] PointerIcon = { + 0x01010466, 0x01010467, 0x01010468 + }; + /** Attributes that can be used with a PopupWindow. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #PopupWindow_popupAnimationStyle android:popupAnimationStyle}
{@link #PopupWindow_popupBackground android:popupBackground}
+ @see #PopupWindow_popupAnimationStyle + @see #PopupWindow_popupBackground + */ + public static final int[] PopupWindow = { + 0x01010176, 0x010102c9 + }; + /** +

This symbol is the offset where the {@link android.R.attr#popupAnimationStyle} + attribute's value can be found in the {@link #PopupWindow} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:popupAnimationStyle + */ + public static final int PopupWindow_popupAnimationStyle = 1; + /** +

This symbol is the offset where the {@link android.R.attr#popupBackground} + attribute's value can be found in the {@link #PopupWindow} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:popupBackground + */ + public static final int PopupWindow_popupBackground = 0; + /** Attributes that can be used with a PopupWindowBackgroundState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PopupWindowBackgroundState_state_above_anchor android:state_above_anchor} State identifier indicating the popup will be above the anchor.
+ @see #PopupWindowBackgroundState_state_above_anchor + */ + public static final int[] PopupWindowBackgroundState = { + 0x010100aa + }; + /** +

+ @attr description + State identifier indicating the popup will be above the anchor. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_above_anchor}. + @attr name android:state_above_anchor + */ + public static final int PopupWindowBackgroundState_state_above_anchor = 0; + /** Base attributes available to Preference. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Preference_defaultValue android:defaultValue} The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage.
{@link #Preference_dependency android:dependency} The key of another Preference that this Preference will depend on.
{@link #Preference_enabled android:enabled} Whether the Preference is enabled.
{@link #Preference_fragment android:fragment} When used inside of a modern PreferenceActivity, this declares + a new PreferenceFragment to be shown when the user selects this item.
{@link #Preference_icon android:icon} The optional icon for the preference
{@link #Preference_key android:key} The key to store the Preference value.
{@link #Preference_layout android:layout} The layout for the Preference in a PreferenceActivity screen.
{@link #Preference_order android:order} The order for the Preference (lower values are to be ordered first).
{@link #Preference_persistent android:persistent} Whether the Preference stores its value to the shared preferences.
{@link #Preference_selectable android:selectable} Whether the Preference is selectable.
{@link #Preference_shouldDisableView android:shouldDisableView} Whether the view of this Preference should be disabled when + this Preference is disabled.
{@link #Preference_summary android:summary} The summary for the Preference in a PreferenceActivity screen.
{@link #Preference_title android:title} The title for the Preference in a PreferenceActivity screen.
{@link #Preference_widgetLayout android:widgetLayout} The layout for the controllable widget portion of a Preference.
+ @see #Preference_defaultValue + @see #Preference_dependency + @see #Preference_enabled + @see #Preference_fragment + @see #Preference_icon + @see #Preference_key + @see #Preference_layout + @see #Preference_order + @see #Preference_persistent + @see #Preference_selectable + @see #Preference_shouldDisableView + @see #Preference_summary + @see #Preference_title + @see #Preference_widgetLayout + */ + public static final int[] Preference = { + 0x01010002, 0x0101000d, 0x0101000e, 0x010100f2, + 0x010101e1, 0x010101e6, 0x010101e8, 0x010101e9, + 0x010101ea, 0x010101eb, 0x010101ec, 0x010101ed, + 0x010101ee, 0x010102e3 + }; + /** +

+ @attr description + The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a floating point value, such as "1.2". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#defaultValue}. + @attr name android:defaultValue + */ + public static final int Preference_defaultValue = 11; + /** +

+ @attr description + The key of another Preference that this Preference will depend on. If the other + Preference is not set or is off, this Preference will be disabled. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dependency}. + @attr name android:dependency + */ + public static final int Preference_dependency = 10; + /** +

+ @attr description + Whether the Preference is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int Preference_enabled = 2; + /** +

+ @attr description + When used inside of a modern PreferenceActivity, this declares + a new PreferenceFragment to be shown when the user selects this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fragment}. + @attr name android:fragment + */ + public static final int Preference_fragment = 13; + /** +

+ @attr description + The optional icon for the preference + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Preference_icon = 0; + /** +

+ @attr description + The key to store the Preference value. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#key}. + @attr name android:key + */ + public static final int Preference_key = 6; + /** +

+ @attr description + The layout for the Preference in a PreferenceActivity screen. This should + rarely need to be changed, look at widgetLayout instead. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int Preference_layout = 3; + /** +

+ @attr description + The order for the Preference (lower values are to be ordered first). If this is not + specified, the default orderin will be alphabetic. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#order}. + @attr name android:order + */ + public static final int Preference_order = 8; + /** +

+ @attr description + Whether the Preference stores its value to the shared preferences. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistent}. + @attr name android:persistent + */ + public static final int Preference_persistent = 1; + /** +

+ @attr description + Whether the Preference is selectable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectable}. + @attr name android:selectable + */ + public static final int Preference_selectable = 5; + /** +

+ @attr description + Whether the view of this Preference should be disabled when + this Preference is disabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shouldDisableView}. + @attr name android:shouldDisableView + */ + public static final int Preference_shouldDisableView = 12; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summary}. + @attr name android:summary + */ + public static final int Preference_summary = 7; + /** +

+ @attr description + The title for the Preference in a PreferenceActivity screen. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int Preference_title = 4; + /** +

+ @attr description + The layout for the controllable widget portion of a Preference. This is inflated + into the layout for a Preference and should be used more frequently than + the layout attribute. For example, a checkbox preference would specify + a custom layout (consisting of just the CheckBox) here. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#widgetLayout}. + @attr name android:widgetLayout + */ + public static final int Preference_widgetLayout = 9; + /** Attributes that can be used with a PreferenceFrameLayout. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] PreferenceFrameLayout = { + 0x01010430, 0x01010431, 0x01010432, 0x01010433 + }; + /** Attributes that can be used with a PreferenceFrameLayout_Layout. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] PreferenceFrameLayout_Layout = { + 0x01010434 + }; + /** Base attributes available to PreferenceGroup. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PreferenceGroup_orderingFromXml android:orderingFromXml} Whether to order the Preference under this group as they appear in the XML file.
+ @see #PreferenceGroup_orderingFromXml + */ + public static final int[] PreferenceGroup = { + 0x010101e7 + }; + /** +

+ @attr description + Whether to order the Preference under this group as they appear in the XML file. + If this is false, the ordering will follow the Preference order attribute and + default to alphabetic for those without the order attribute. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderingFromXml}. + @attr name android:orderingFromXml + */ + public static final int PreferenceGroup_orderingFromXml = 0; + /** Attribute for a header describing the item shown in the top-level list + from which the selects the set of preference to dig in to. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #PreferenceHeader_breadCrumbShortTitle android:breadCrumbShortTitle} The short title for the bread crumb of this item.
{@link #PreferenceHeader_breadCrumbTitle android:breadCrumbTitle} The title for the bread crumb of this item.
{@link #PreferenceHeader_fragment android:fragment} The fragment that is displayed when the user selects this item.
{@link #PreferenceHeader_icon android:icon} An icon for the item.
{@link #PreferenceHeader_id android:id} Identifier value for the header.
{@link #PreferenceHeader_summary android:summary} The summary for the item.
{@link #PreferenceHeader_title android:title} The title of the item that is shown to the user.
+ @see #PreferenceHeader_breadCrumbShortTitle + @see #PreferenceHeader_breadCrumbTitle + @see #PreferenceHeader_fragment + @see #PreferenceHeader_icon + @see #PreferenceHeader_id + @see #PreferenceHeader_summary + @see #PreferenceHeader_title + */ + public static final int[] PreferenceHeader = { + 0x01010002, 0x010100d0, 0x010101e1, 0x010101e9, + 0x010102e3, 0x01010303, 0x01010304 + }; + /** +

+ @attr description + The short title for the bread crumb of this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#breadCrumbShortTitle}. + @attr name android:breadCrumbShortTitle + */ + public static final int PreferenceHeader_breadCrumbShortTitle = 6; + /** +

+ @attr description + The title for the bread crumb of this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#breadCrumbTitle}. + @attr name android:breadCrumbTitle + */ + public static final int PreferenceHeader_breadCrumbTitle = 5; + /** +

+ @attr description + The fragment that is displayed when the user selects this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fragment}. + @attr name android:fragment + */ + public static final int PreferenceHeader_fragment = 4; + /** +

+ @attr description + An icon for the item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int PreferenceHeader_icon = 0; + /** +

+ @attr description + Identifier value for the header. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int PreferenceHeader_id = 1; + /** +

+ @attr description + The summary for the item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summary}. + @attr name android:summary + */ + public static final int PreferenceHeader_summary = 3; + /** +

+ @attr description + The title of the item that is shown to the user. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int PreferenceHeader_title = 2; + /** Use print-service as the root tag of the XML resource that + describes an {@link android.printservice.PrintService} service, which is + referenced from its {@link android.printservice.PrintService#SERVICE_META_DATA} + meta-data entry. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #PrintService_addPrintersActivity android:addPrintersActivity} Fully qualified class name of an activity that allows the user to manually + add printers to this print service.
{@link #PrintService_advancedPrintOptionsActivity android:advancedPrintOptionsActivity} Fully qualified class name of an activity with advanced print options + specific to this print service.
{@link #PrintService_settingsActivity android:settingsActivity} Fully qualified class name of an activity that allows the user to modify + the settings for this service.
{@link #PrintService_vendor android:vendor} The vendor name if this print service is vendor specific.
+ @see #PrintService_addPrintersActivity + @see #PrintService_advancedPrintOptionsActivity + @see #PrintService_settingsActivity + @see #PrintService_vendor + */ + public static final int[] PrintService = { + 0x01010225, 0x010103e6, 0x010103e7, 0x010103f1 + }; + /** +

+ @attr description + Fully qualified class name of an activity that allows the user to manually + add printers to this print service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#addPrintersActivity}. + @attr name android:addPrintersActivity + */ + public static final int PrintService_addPrintersActivity = 1; + /** +

+ @attr description + Fully qualified class name of an activity with advanced print options + specific to this print service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#advancedPrintOptionsActivity}. + @attr name android:advancedPrintOptionsActivity + */ + public static final int PrintService_advancedPrintOptionsActivity = 3; + /** +

+ @attr description + Fully qualified class name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int PrintService_settingsActivity = 0; + /** +

+ @attr description + The vendor name if this print service is vendor specific. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#vendor}. + @attr name android:vendor + */ + public static final int PrintService_vendor = 2; + /** Attributes that can be used with a ProgressBar. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #ProgressBar_animationResolution android:animationResolution} Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.}
{@link #ProgressBar_indeterminate android:indeterminate} Allows to enable the indeterminate mode.
{@link #ProgressBar_indeterminateBehavior android:indeterminateBehavior} Defines how the indeterminate mode should behave when the progress + reaches max.
{@link #ProgressBar_indeterminateDrawable android:indeterminateDrawable} Drawable used for the indeterminate mode.
{@link #ProgressBar_indeterminateDuration android:indeterminateDuration} Duration of the indeterminate animation.
{@link #ProgressBar_indeterminateOnly android:indeterminateOnly} Restricts to ONLY indeterminate mode (state-keeping progress mode will not work).
{@link #ProgressBar_interpolator android:interpolator}
{@link #ProgressBar_max android:max} Defines the maximum value the progress can take.
{@link #ProgressBar_maxHeight android:maxHeight} An optional argument to supply a maximum height for this view.
{@link #ProgressBar_maxWidth android:maxWidth} An optional argument to supply a maximum width for this view.
{@link #ProgressBar_minHeight android:minHeight}
{@link #ProgressBar_minWidth android:minWidth}
{@link #ProgressBar_mirrorForRtl android:mirrorForRtl} Defines if the associated drawables need to be mirrored when in RTL mode.
{@link #ProgressBar_progress android:progress} Defines the default progress value, between 0 and max.
{@link #ProgressBar_progressDrawable android:progressDrawable} Drawable used for the progress mode.
{@link #ProgressBar_secondaryProgress android:secondaryProgress} Defines the secondary progress value, between 0 and max.
+ @see #ProgressBar_animationResolution + @see #ProgressBar_indeterminate + @see #ProgressBar_indeterminateBehavior + @see #ProgressBar_indeterminateDrawable + @see #ProgressBar_indeterminateDuration + @see #ProgressBar_indeterminateOnly + @see #ProgressBar_interpolator + @see #ProgressBar_max + @see #ProgressBar_maxHeight + @see #ProgressBar_maxWidth + @see #ProgressBar_minHeight + @see #ProgressBar_minWidth + @see #ProgressBar_mirrorForRtl + @see #ProgressBar_progress + @see #ProgressBar_progressDrawable + @see #ProgressBar_secondaryProgress + */ + public static final int[] ProgressBar = { + 0x0101011f, 0x01010120, 0x01010136, 0x01010137, + 0x01010138, 0x01010139, 0x0101013a, 0x0101013b, + 0x0101013c, 0x0101013d, 0x0101013e, 0x0101013f, + 0x01010140, 0x01010141, 0x0101031a, 0x010103ce + }; + /** +

+ @attr description + Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.} + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationResolution}. + @attr name android:animationResolution + */ + @Deprecated + public static final int ProgressBar_animationResolution = 14; + /** +

+ @attr description + Allows to enable the indeterminate mode. In this mode the progress + bar plays an infinite looping animation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminate}. + @attr name android:indeterminate + */ + public static final int ProgressBar_indeterminate = 5; + /** +

+ @attr description + Defines how the indeterminate mode should behave when the progress + reaches max. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
repeat1 Progress starts over from 0.
cycle2 Progress keeps the current value and goes back to 0.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateBehavior}. + @attr name android:indeterminateBehavior + */ + public static final int ProgressBar_indeterminateBehavior = 10; + /** +

+ @attr description + Drawable used for the indeterminate mode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateDrawable}. + @attr name android:indeterminateDrawable + */ + public static final int ProgressBar_indeterminateDrawable = 7; + /** +

+ @attr description + Duration of the indeterminate animation. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateDuration}. + @attr name android:indeterminateDuration + */ + public static final int ProgressBar_indeterminateDuration = 9; + /** +

+ @attr description + Restricts to ONLY indeterminate mode (state-keeping progress mode will not work). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateOnly}. + @attr name android:indeterminateOnly + */ + public static final int ProgressBar_indeterminateOnly = 6; + /** +

This symbol is the offset where the {@link android.R.attr#interpolator} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:interpolator + */ + public static final int ProgressBar_interpolator = 13; + /** +

+ @attr description + Defines the maximum value the progress can take. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#max}. + @attr name android:max + */ + public static final int ProgressBar_max = 2; + /** +

+ @attr description + An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int ProgressBar_maxHeight = 1; + /** +

+ @attr description + An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int ProgressBar_maxWidth = 0; + /** +

This symbol is the offset where the {@link android.R.attr#minHeight} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minHeight + */ + public static final int ProgressBar_minHeight = 12; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int ProgressBar_minWidth = 11; + /** +

+ @attr description + Defines if the associated drawables need to be mirrored when in RTL mode. + Default is false + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mirrorForRtl}. + @attr name android:mirrorForRtl + */ + public static final int ProgressBar_mirrorForRtl = 15; + /** +

+ @attr description + Defines the default progress value, between 0 and max. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progress}. + @attr name android:progress + */ + public static final int ProgressBar_progress = 3; + /** +

+ @attr description + Drawable used for the progress mode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressDrawable}. + @attr name android:progressDrawable + */ + public static final int ProgressBar_progressDrawable = 8; + /** +

+ @attr description + Defines the secondary progress value, between 0 and max. This progress is drawn between + the primary progress and the background. It can be ideal for media scenarios such as + showing the buffering progress while the default progress shows the play progress. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#secondaryProgress}. + @attr name android:secondaryProgress + */ + public static final int ProgressBar_secondaryProgress = 4; + /** Attributes that can be used with a PropertyAnimator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PropertyAnimator_propertyName android:propertyName} Name of the property being animated.
+ @see #PropertyAnimator_propertyName + */ + public static final int[] PropertyAnimator = { + 0x010102e1 + }; + /** +

+ @attr description + Name of the property being animated. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#propertyName}. + @attr name android:propertyName + */ + public static final int PropertyAnimator_propertyName = 0; + /** Attributes that can be used with a PublicKey. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PublicKey_value android:value} Concrete value to assign to this piece of named meta-data.
+ @see #PublicKey_value + */ + public static final int[] PublicKey = { + 0x01010024 + }; + /** +

+ @attr description + Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int PublicKey_value = 0; + /** Attributes that can be used with a QuickContactBadge. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] QuickContactBadge = { + 0x0101043d + }; + /** Attributes that can be used with a RadioGroup. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #RadioGroup_checkedButton android:checkedButton} The id of the child radio button that should be checked by default + within this radio group.
{@link #RadioGroup_orientation android:orientation} Should the radio group be a column or a row? Use "horizontal" + for a row, "vertical" for a column.
+ @see #RadioGroup_checkedButton + @see #RadioGroup_orientation + */ + public static final int[] RadioGroup = { + 0x010100c4, 0x01010148 + }; + /** +

+ @attr description + The id of the child radio button that should be checked by default + within this radio group. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkedButton}. + @attr name android:checkedButton + */ + public static final int RadioGroup_checkedButton = 1; + /** +

+ @attr description + Should the radio group be a column or a row? Use "horizontal" + for a row, "vertical" for a column. The default is + vertical. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int RadioGroup_orientation = 0; + /** Attributes that can be used with a RatingBar. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #RatingBar_isIndicator android:isIndicator} Whether this rating bar is an indicator (and non-changeable by the user).
{@link #RatingBar_numStars android:numStars} The number of stars (or rating items) to show.
{@link #RatingBar_rating android:rating} The rating to set by default.
{@link #RatingBar_stepSize android:stepSize} The step size of the rating.
+ @see #RatingBar_isIndicator + @see #RatingBar_numStars + @see #RatingBar_rating + @see #RatingBar_stepSize + */ + public static final int[] RatingBar = { + 0x01010144, 0x01010145, 0x01010146, 0x01010147 + }; + /** +

+ @attr description + Whether this rating bar is an indicator (and non-changeable by the user). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isIndicator}. + @attr name android:isIndicator + */ + public static final int RatingBar_isIndicator = 3; + /** +

+ @attr description + The number of stars (or rating items) to show. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#numStars}. + @attr name android:numStars + */ + public static final int RatingBar_numStars = 0; + /** +

+ @attr description + The rating to set by default. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rating}. + @attr name android:rating + */ + public static final int RatingBar_rating = 1; + /** +

+ @attr description + The step size of the rating. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stepSize}. + @attr name android:stepSize + */ + public static final int RatingBar_stepSize = 2; + /** Use recognition-service as the root tag of the XML resource that + describes a {@link android.speech.RecognitionService}, which is reference from + its {@link android.speech.RecognitionService#SERVICE_META_DATA} meta-data entry. + Described here are the attributes that can be included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #RecognitionService_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #RecognitionService_settingsActivity + */ + public static final int[] RecognitionService = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int RecognitionService_settingsActivity = 0; + /** Attributes that can be used with a RelativeLayout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #RelativeLayout_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #RelativeLayout_ignoreGravity android:ignoreGravity} Indicates what view should not be affected by gravity.
+ @see #RelativeLayout_gravity + @see #RelativeLayout_ignoreGravity + */ + public static final int[] RelativeLayout = { + 0x010100af, 0x010101ff + }; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int RelativeLayout_gravity = 0; + /** +

+ @attr description + Indicates what view should not be affected by gravity. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ignoreGravity}. + @attr name android:ignoreGravity + */ + public static final int RelativeLayout_ignoreGravity = 1; + /** Attributes that can be used with a RelativeLayout_Layout. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #RelativeLayout_Layout_layout_above android:layout_above} Positions the bottom edge of this view above the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignBaseline android:layout_alignBaseline} Positions the baseline of this view on the baseline of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignBottom android:layout_alignBottom} Makes the bottom edge of this view match the bottom edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignEnd android:layout_alignEnd} Makes the end edge of this view match the end edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignLeft android:layout_alignLeft} Makes the left edge of this view match the left edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignParentBottom android:layout_alignParentBottom} If true, makes the bottom edge of this view match the bottom edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentEnd android:layout_alignParentEnd} If true, makes the end edge of this view match the end edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentLeft android:layout_alignParentLeft} If true, makes the left edge of this view match the left edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentRight android:layout_alignParentRight} If true, makes the right edge of this view match the right edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentStart android:layout_alignParentStart} If true, makes the start edge of this view match the start edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentTop android:layout_alignParentTop} If true, makes the top edge of this view match the top edge of the parent.
{@link #RelativeLayout_Layout_layout_alignRight android:layout_alignRight} Makes the right edge of this view match the right edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignStart android:layout_alignStart} Makes the start edge of this view match the start edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignTop android:layout_alignTop} Makes the top edge of this view match the top edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignWithParentIfMissing android:layout_alignWithParentIfMissing} If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc.
{@link #RelativeLayout_Layout_layout_below android:layout_below} Positions the top edge of this view below the given anchor view ID.
{@link #RelativeLayout_Layout_layout_centerHorizontal android:layout_centerHorizontal} If true, centers this child horizontally within its parent.
{@link #RelativeLayout_Layout_layout_centerInParent android:layout_centerInParent} If true, centers this child horizontally and vertically within its parent.
{@link #RelativeLayout_Layout_layout_centerVertical android:layout_centerVertical} If true, centers this child vertically within its parent.
{@link #RelativeLayout_Layout_layout_toEndOf android:layout_toEndOf} Positions the start edge of this view to the end of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toLeftOf android:layout_toLeftOf} Positions the right edge of this view to the left of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toRightOf android:layout_toRightOf} Positions the left edge of this view to the right of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toStartOf android:layout_toStartOf} Positions the end edge of this view to the start of the given anchor view ID.
+ @see #RelativeLayout_Layout_layout_above + @see #RelativeLayout_Layout_layout_alignBaseline + @see #RelativeLayout_Layout_layout_alignBottom + @see #RelativeLayout_Layout_layout_alignEnd + @see #RelativeLayout_Layout_layout_alignLeft + @see #RelativeLayout_Layout_layout_alignParentBottom + @see #RelativeLayout_Layout_layout_alignParentEnd + @see #RelativeLayout_Layout_layout_alignParentLeft + @see #RelativeLayout_Layout_layout_alignParentRight + @see #RelativeLayout_Layout_layout_alignParentStart + @see #RelativeLayout_Layout_layout_alignParentTop + @see #RelativeLayout_Layout_layout_alignRight + @see #RelativeLayout_Layout_layout_alignStart + @see #RelativeLayout_Layout_layout_alignTop + @see #RelativeLayout_Layout_layout_alignWithParentIfMissing + @see #RelativeLayout_Layout_layout_below + @see #RelativeLayout_Layout_layout_centerHorizontal + @see #RelativeLayout_Layout_layout_centerInParent + @see #RelativeLayout_Layout_layout_centerVertical + @see #RelativeLayout_Layout_layout_toEndOf + @see #RelativeLayout_Layout_layout_toLeftOf + @see #RelativeLayout_Layout_layout_toRightOf + @see #RelativeLayout_Layout_layout_toStartOf + */ + public static final int[] RelativeLayout_Layout = { + 0x01010182, 0x01010183, 0x01010184, 0x01010185, + 0x01010186, 0x01010187, 0x01010188, 0x01010189, + 0x0101018a, 0x0101018b, 0x0101018c, 0x0101018d, + 0x0101018e, 0x0101018f, 0x01010190, 0x01010191, + 0x01010192, 0x010103b7, 0x010103b8, 0x010103b9, + 0x010103ba, 0x010103bb, 0x010103bc + }; + /** +

+ @attr description + Positions the bottom edge of this view above the given anchor view ID. + Accommodates bottom margin of this view and top margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_above}. + @attr name android:layout_above + */ + public static final int RelativeLayout_Layout_layout_above = 2; + /** +

+ @attr description + Positions the baseline of this view on the baseline of the given anchor view ID. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignBaseline}. + @attr name android:layout_alignBaseline + */ + public static final int RelativeLayout_Layout_layout_alignBaseline = 4; + /** +

+ @attr description + Makes the bottom edge of this view match the bottom edge of the given anchor view ID. + Accommodates bottom margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignBottom}. + @attr name android:layout_alignBottom + */ + public static final int RelativeLayout_Layout_layout_alignBottom = 8; + /** +

+ @attr description + Makes the end edge of this view match the end edge of the given anchor view ID. + Accommodates end margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignEnd}. + @attr name android:layout_alignEnd + */ + public static final int RelativeLayout_Layout_layout_alignEnd = 20; + /** +

+ @attr description + Makes the left edge of this view match the left edge of the given anchor view ID. + Accommodates left margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignLeft}. + @attr name android:layout_alignLeft + */ + public static final int RelativeLayout_Layout_layout_alignLeft = 5; + /** +

+ @attr description + If true, makes the bottom edge of this view match the bottom edge of the parent. + Accommodates bottom margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentBottom}. + @attr name android:layout_alignParentBottom + */ + public static final int RelativeLayout_Layout_layout_alignParentBottom = 12; + /** +

+ @attr description + If true, makes the end edge of this view match the end edge of the parent. + Accommodates end margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentEnd}. + @attr name android:layout_alignParentEnd + */ + public static final int RelativeLayout_Layout_layout_alignParentEnd = 22; + /** +

+ @attr description + If true, makes the left edge of this view match the left edge of the parent. + Accommodates left margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentLeft}. + @attr name android:layout_alignParentLeft + */ + public static final int RelativeLayout_Layout_layout_alignParentLeft = 9; + /** +

+ @attr description + If true, makes the right edge of this view match the right edge of the parent. + Accommodates right margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentRight}. + @attr name android:layout_alignParentRight + */ + public static final int RelativeLayout_Layout_layout_alignParentRight = 11; + /** +

+ @attr description + If true, makes the start edge of this view match the start edge of the parent. + Accommodates start margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentStart}. + @attr name android:layout_alignParentStart + */ + public static final int RelativeLayout_Layout_layout_alignParentStart = 21; + /** +

+ @attr description + If true, makes the top edge of this view match the top edge of the parent. + Accommodates top margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentTop}. + @attr name android:layout_alignParentTop + */ + public static final int RelativeLayout_Layout_layout_alignParentTop = 10; + /** +

+ @attr description + Makes the right edge of this view match the right edge of the given anchor view ID. + Accommodates right margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignRight}. + @attr name android:layout_alignRight + */ + public static final int RelativeLayout_Layout_layout_alignRight = 7; + /** +

+ @attr description + Makes the start edge of this view match the start edge of the given anchor view ID. + Accommodates start margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignStart}. + @attr name android:layout_alignStart + */ + public static final int RelativeLayout_Layout_layout_alignStart = 19; + /** +

+ @attr description + Makes the top edge of this view match the top edge of the given anchor view ID. + Accommodates top margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignTop}. + @attr name android:layout_alignTop + */ + public static final int RelativeLayout_Layout_layout_alignTop = 6; + /** +

+ @attr description + If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignWithParentIfMissing}. + @attr name android:layout_alignWithParentIfMissing + */ + public static final int RelativeLayout_Layout_layout_alignWithParentIfMissing = 16; + /** +

+ @attr description + Positions the top edge of this view below the given anchor view ID. + Accommodates top margin of this view and bottom margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_below}. + @attr name android:layout_below + */ + public static final int RelativeLayout_Layout_layout_below = 3; + /** +

+ @attr description + If true, centers this child horizontally within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerHorizontal}. + @attr name android:layout_centerHorizontal + */ + public static final int RelativeLayout_Layout_layout_centerHorizontal = 14; + /** +

+ @attr description + If true, centers this child horizontally and vertically within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerInParent}. + @attr name android:layout_centerInParent + */ + public static final int RelativeLayout_Layout_layout_centerInParent = 13; + /** +

+ @attr description + If true, centers this child vertically within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerVertical}. + @attr name android:layout_centerVertical + */ + public static final int RelativeLayout_Layout_layout_centerVertical = 15; + /** +

+ @attr description + Positions the start edge of this view to the end of the given anchor view ID. + Accommodates start margin of this view and end margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toEndOf}. + @attr name android:layout_toEndOf + */ + public static final int RelativeLayout_Layout_layout_toEndOf = 18; + /** +

+ @attr description + Positions the right edge of this view to the left of the given anchor view ID. + Accommodates right margin of this view and left margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toLeftOf}. + @attr name android:layout_toLeftOf + */ + public static final int RelativeLayout_Layout_layout_toLeftOf = 0; + /** +

+ @attr description + Positions the left edge of this view to the right of the given anchor view ID. + Accommodates left margin of this view and right margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toRightOf}. + @attr name android:layout_toRightOf + */ + public static final int RelativeLayout_Layout_layout_toRightOf = 1; + /** +

+ @attr description + Positions the end edge of this view to the start of the given anchor view ID. + Accommodates end margin of this view and start margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toStartOf}. + @attr name android:layout_toStartOf + */ + public static final int RelativeLayout_Layout_layout_toStartOf = 17; + /** Base attributes available to RingtonePreference. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #RingtonePreference_ringtoneType android:ringtoneType} Which ringtone type(s) to show in the picker.
{@link #RingtonePreference_showDefault android:showDefault} Whether to show an item for a default sound.
{@link #RingtonePreference_showSilent android:showSilent} Whether to show an item for 'Silent'.
+ @see #RingtonePreference_ringtoneType + @see #RingtonePreference_showDefault + @see #RingtonePreference_showSilent + */ + public static final int[] RingtonePreference = { + 0x010101f9, 0x010101fa, 0x010101fb + }; + /** +

+ @attr description + Which ringtone type(s) to show in the picker. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ringtone1 Ringtones.
notification2 Notification sounds.
alarm4 Alarm sounds.
all7 All available ringtone sounds.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ringtoneType}. + @attr name android:ringtoneType + */ + public static final int RingtonePreference_ringtoneType = 0; + /** +

+ @attr description + Whether to show an item for a default sound. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showDefault}. + @attr name android:showDefault + */ + public static final int RingtonePreference_showDefault = 1; + /** +

+ @attr description + Whether to show an item for 'Silent'. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showSilent}. + @attr name android:showSilent + */ + public static final int RingtonePreference_showSilent = 2; + /** attributes for internal rotary widget used in lock screen and phone app + @hide +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #RotarySelector_orientation android:orientation} Use "horizontal" or "vertical".
+ @see #RotarySelector_orientation + */ + public static final int[] RotarySelector = { + 0x010100c4 + }; + /** +

+ @attr description + Use "horizontal" or "vertical". The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int RotarySelector_orientation = 0; + /** Attributes that can be used with a RotateAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #RotateAnimation_fromDegrees android:fromDegrees}
{@link #RotateAnimation_pivotX android:pivotX}
{@link #RotateAnimation_pivotY android:pivotY}
{@link #RotateAnimation_toDegrees android:toDegrees}
+ @see #RotateAnimation_fromDegrees + @see #RotateAnimation_pivotX + @see #RotateAnimation_pivotY + @see #RotateAnimation_toDegrees + */ + public static final int[] RotateAnimation = { + 0x010101b3, 0x010101b4, 0x010101b5, 0x010101b6 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromDegrees} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromDegrees + */ + public static final int RotateAnimation_fromDegrees = 0; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int RotateAnimation_pivotX = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int RotateAnimation_pivotY = 3; + /** +

This symbol is the offset where the {@link android.R.attr#toDegrees} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toDegrees + */ + public static final int RotateAnimation_toDegrees = 1; + /** Drawable used to rotate another drawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #RotateDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #RotateDrawable_fromDegrees android:fromDegrees}
{@link #RotateDrawable_pivotX android:pivotX}
{@link #RotateDrawable_pivotY android:pivotY}
{@link #RotateDrawable_toDegrees android:toDegrees}
{@link #RotateDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #RotateDrawable_drawable + @see #RotateDrawable_fromDegrees + @see #RotateDrawable_pivotX + @see #RotateDrawable_pivotY + @see #RotateDrawable_toDegrees + @see #RotateDrawable_visible + */ + public static final int[] RotateDrawable = { + 0x01010194, 0x01010199, 0x010101b3, 0x010101b4, + 0x010101b5, 0x010101b6 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int RotateDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link android.R.attr#fromDegrees} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromDegrees + */ + public static final int RotateDrawable_fromDegrees = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int RotateDrawable_pivotX = 4; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int RotateDrawable_pivotY = 5; + /** +

This symbol is the offset where the {@link android.R.attr#toDegrees} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toDegrees + */ + public static final int RotateDrawable_toDegrees = 3; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int RotateDrawable_visible = 0; + /** Attributes that can be used with a ScaleAnimation. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #ScaleAnimation_fromXScale android:fromXScale}
{@link #ScaleAnimation_fromYScale android:fromYScale}
{@link #ScaleAnimation_pivotX android:pivotX}
{@link #ScaleAnimation_pivotY android:pivotY}
{@link #ScaleAnimation_toXScale android:toXScale}
{@link #ScaleAnimation_toYScale android:toYScale}
+ @see #ScaleAnimation_fromXScale + @see #ScaleAnimation_fromYScale + @see #ScaleAnimation_pivotX + @see #ScaleAnimation_pivotY + @see #ScaleAnimation_toXScale + @see #ScaleAnimation_toYScale + */ + public static final int[] ScaleAnimation = { + 0x010101b5, 0x010101b6, 0x010101c2, 0x010101c3, + 0x010101c4, 0x010101c5 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromXScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromXScale + */ + public static final int ScaleAnimation_fromXScale = 2; + /** +

This symbol is the offset where the {@link android.R.attr#fromYScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromYScale + */ + public static final int ScaleAnimation_fromYScale = 4; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int ScaleAnimation_pivotX = 0; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int ScaleAnimation_pivotY = 1; + /** +

This symbol is the offset where the {@link android.R.attr#toXScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toXScale + */ + public static final int ScaleAnimation_toXScale = 3; + /** +

This symbol is the offset where the {@link android.R.attr#toYScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toYScale + */ + public static final int ScaleAnimation_toYScale = 5; + /** Attributes that can be used with a ScaleDrawable. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #ScaleDrawable_drawable android:drawable} Reference to a drawable resource to draw with the specified scale.
{@link #ScaleDrawable_scaleGravity android:scaleGravity} Specifies where the drawable is positioned after scaling.
{@link #ScaleDrawable_scaleHeight android:scaleHeight} Scale height, expressed as a percentage of the drawable's bound.
{@link #ScaleDrawable_scaleWidth android:scaleWidth} Scale width, expressed as a percentage of the drawable's bound.
{@link #ScaleDrawable_useIntrinsicSizeAsMinimum android:useIntrinsicSizeAsMinimum} Use the drawable's intrinsic width and height as minimum size values.
+ @see #ScaleDrawable_drawable + @see #ScaleDrawable_scaleGravity + @see #ScaleDrawable_scaleHeight + @see #ScaleDrawable_scaleWidth + @see #ScaleDrawable_useIntrinsicSizeAsMinimum + */ + public static final int[] ScaleDrawable = { + 0x01010199, 0x010101fc, 0x010101fd, 0x010101fe, + 0x01010310 + }; + /** +

+ @attr description + Reference to a drawable resource to draw with the specified scale. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int ScaleDrawable_drawable = 0; + /** +

+ @attr description + Specifies where the drawable is positioned after scaling. The default value is + left. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleGravity}. + @attr name android:scaleGravity + */ + public static final int ScaleDrawable_scaleGravity = 3; + /** +

+ @attr description + Scale height, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleHeight}. + @attr name android:scaleHeight + */ + public static final int ScaleDrawable_scaleHeight = 2; + /** +

+ @attr description + Scale width, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleWidth}. + @attr name android:scaleWidth + */ + public static final int ScaleDrawable_scaleWidth = 1; + /** +

+ @attr description + Use the drawable's intrinsic width and height as minimum size values. + Useful if the target drawable is a 9-patch or otherwise should not be scaled + down beyond a minimum size. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useIntrinsicSizeAsMinimum}. + @attr name android:useIntrinsicSizeAsMinimum + */ + public static final int ScaleDrawable_useIntrinsicSizeAsMinimum = 4; + /** Attributes that can be used with a ScrollView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ScrollView_fillViewport android:fillViewport} Defines whether the scrollview should stretch its content to fill the viewport.
+ @see #ScrollView_fillViewport + */ + public static final int[] ScrollView = { + 0x0101017a + }; + /** +

+ @attr description + Defines whether the scrollview should stretch its content to fill the viewport. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillViewport}. + @attr name android:fillViewport + */ + public static final int ScrollView_fillViewport = 0; + /** Attributes that can be used with a SearchView. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #SearchView_iconifiedByDefault android:iconifiedByDefault} The default state of the SearchView.
{@link #SearchView_imeOptions android:imeOptions} The IME options to set on the query text field.
{@link #SearchView_inputType android:inputType} The input type to set on the query text field.
{@link #SearchView_maxWidth android:maxWidth} An optional maximum width of the SearchView.
{@link #SearchView_queryHint android:queryHint} An optional query hint string to be displayed in the empty query field.
+ @see #SearchView_iconifiedByDefault + @see #SearchView_imeOptions + @see #SearchView_inputType + @see #SearchView_maxWidth + @see #SearchView_queryHint + */ + public static final int[] SearchView = { + 0x0101011f, 0x01010220, 0x01010264, 0x010102fa, + 0x01010358 + }; + /** +

+ @attr description + The default state of the SearchView. If true, it will be iconified when not in + use and expanded when clicked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#iconifiedByDefault}. + @attr name android:iconifiedByDefault + */ + public static final int SearchView_iconifiedByDefault = 3; + /** +

+ @attr description + The IME options to set on the query text field. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int SearchView_imeOptions = 2; + /** +

+ @attr description + The input type to set on the query text field. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int SearchView_inputType = 1; + /** +

+ @attr description + An optional maximum width of the SearchView. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int SearchView_maxWidth = 0; + /** +

+ @attr description + An optional query hint string to be displayed in the empty query field. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryHint}. + @attr name android:queryHint + */ + public static final int SearchView_queryHint = 4; + /** Searchable activities and applications must provide search configuration information + in an XML file, typically called searchable.xml. This file is referenced in your manifest. + For a more in-depth discussion of search configuration, please refer to + {@link android.app.SearchManager}. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Searchable_autoUrlDetect android:autoUrlDetect} If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity).
{@link #Searchable_hint android:hint} If supplied, this string will be displayed as a hint to the user.
{@link #Searchable_icon android:icon}This is deprecated.
{@link #Searchable_imeOptions android:imeOptions} Additional features you can enable in an IME associated with an editor + to improve the integration with your application.
{@link #Searchable_includeInGlobalSearch android:includeInGlobalSearch} If provided and true, this searchable activity will be + included in any global lists of search targets.
{@link #Searchable_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
{@link #Searchable_label android:label} This is the user-displayed name of the searchable activity.
{@link #Searchable_queryAfterZeroResults android:queryAfterZeroResults} If provided and true, this searchable activity will be invoked for all + queries in a particular session.
{@link #Searchable_searchButtonText android:searchButtonText} If supplied, this string will be displayed as the text of the "Search" button.
{@link #Searchable_searchMode android:searchMode} Additional features are controlled by mode bits in this field.
{@link #Searchable_searchSettingsDescription android:searchSettingsDescription} If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings.
{@link #Searchable_searchSuggestAuthority android:searchSuggestAuthority} If provided, this is the trigger indicating that the searchable activity + provides suggestions as well.
{@link #Searchable_searchSuggestIntentAction android:searchSuggestIntentAction} If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion.
{@link #Searchable_searchSuggestIntentData android:searchSuggestIntentData} If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion.
{@link #Searchable_searchSuggestPath android:searchSuggestPath} If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path.
{@link #Searchable_searchSuggestSelection android:searchSuggestSelection} If provided, suggestion queries will be passed into your query function + as the selection parameter.
{@link #Searchable_searchSuggestThreshold android:searchSuggestThreshold} If provided, this is the minimum number of characters needed to trigger + search suggestions.
{@link #Searchable_voiceLanguage android:voiceLanguage} If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}.
{@link #Searchable_voiceLanguageModel android:voiceLanguageModel} If provided, this specifies the language model that should be used by the + voice recognition system.
{@link #Searchable_voiceMaxResults android:voiceMaxResults} If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query.
{@link #Searchable_voicePromptText android:voicePromptText} If provided, this specifies a prompt that will be displayed during voice input.
{@link #Searchable_voiceSearchMode android:voiceSearchMode} Voice search features are controlled by mode bits in this field.
+ @see #Searchable_autoUrlDetect + @see #Searchable_hint + @see #Searchable_icon + @see #Searchable_imeOptions + @see #Searchable_includeInGlobalSearch + @see #Searchable_inputType + @see #Searchable_label + @see #Searchable_queryAfterZeroResults + @see #Searchable_searchButtonText + @see #Searchable_searchMode + @see #Searchable_searchSettingsDescription + @see #Searchable_searchSuggestAuthority + @see #Searchable_searchSuggestIntentAction + @see #Searchable_searchSuggestIntentData + @see #Searchable_searchSuggestPath + @see #Searchable_searchSuggestSelection + @see #Searchable_searchSuggestThreshold + @see #Searchable_voiceLanguage + @see #Searchable_voiceLanguageModel + @see #Searchable_voiceMaxResults + @see #Searchable_voicePromptText + @see #Searchable_voiceSearchMode + */ + public static final int[] Searchable = { + 0x01010001, 0x01010002, 0x01010150, 0x010101d5, + 0x010101d6, 0x010101d7, 0x010101d8, 0x010101d9, + 0x010101da, 0x01010205, 0x01010220, 0x01010252, + 0x01010253, 0x01010254, 0x01010255, 0x01010256, + 0x01010264, 0x0101026d, 0x0101026e, 0x01010282, + 0x0101028a, 0x0101028c + }; + /** +

+ @attr description + If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity). If set to false any URLs entered are treated as + normal query text. + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoUrlDetect}. + @attr name android:autoUrlDetect + */ + public static final int Searchable_autoUrlDetect = 21; + /** +

+ @attr description + If supplied, this string will be displayed as a hint to the user. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hint}. + @attr name android:hint + */ + public static final int Searchable_hint = 2; + /** +

+ @attr description + This is deprecated.
The default + application icon is now always used, so this attribute is + obsolete. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Searchable_icon = 1; + /** +

+ @attr description + Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int Searchable_imeOptions = 16; + /** +

+ @attr description + If provided and true, this searchable activity will be + included in any global lists of search targets. + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#includeInGlobalSearch}. + @attr name android:includeInGlobalSearch + */ + public static final int Searchable_includeInGlobalSearch = 18; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int Searchable_inputType = 10; + /** +

+ @attr description + This is the user-displayed name of the searchable activity. Required + attribute. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int Searchable_label = 0; + /** +

+ @attr description + If provided and true, this searchable activity will be invoked for all + queries in a particular session. If set to false and the activity + returned zero results for a query, it will not be invoked again in that session for + supersets of that zero-results query. For example, if the activity returned zero + results for "bo", it would not be queried again for "bob". + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryAfterZeroResults}. + @attr name android:queryAfterZeroResults + */ + public static final int Searchable_queryAfterZeroResults = 19; + /** +

+ @attr description + If supplied, this string will be displayed as the text of the "Search" button. + Optional attribute. + {@deprecated This will create a non-standard UI appearance, because the search bar UI is + changing to use only icons for its buttons.} + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchButtonText}. + @attr name android:searchButtonText + */ + @Deprecated + public static final int Searchable_searchButtonText = 9; + /** +

+ @attr description + Additional features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. Optional attribute. + + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
showSearchLabelAsBadge0x04 If set, this flag enables the display of the search target (label) within the + search bar. If neither bad mode is selected, no badge will be shown.
showSearchIconAsBadge0x08This is deprecated.
The default + application icon is now always used, so this option is + obsolete.
queryRewriteFromData0x10 If set, this flag causes the suggestion column SUGGEST_COLUMN_INTENT_DATA to + be considered as the text for suggestion query rewriting. This should only + be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user + inspection and editing - typically, HTTP/HTTPS Uri's.
queryRewriteFromText0x20 If set, this flag causes the suggestion column SUGGEST_COLUMN_TEXT_1 to + be considered as the text for suggestion query rewriting. This should be used + for suggestions in which no query text is provided and the SUGGEST_COLUMN_INTENT_DATA + values are not suitable for user inspection and editing.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchMode}. + @attr name android:searchMode + */ + public static final int Searchable_searchMode = 3; + /** +

+ @attr description + If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSettingsDescription}. + @attr name android:searchSettingsDescription + */ + public static final int Searchable_searchSettingsDescription = 20; + /** +

+ @attr description + If provided, this is the trigger indicating that the searchable activity + provides suggestions as well. The value must be a fully-qualified content provider + authority (e.g. "com.example.android.apis.SuggestionProvider") and should match the + "android:authorities" tag in your content provider's manifest entry. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestAuthority}. + @attr name android:searchSuggestAuthority + */ + public static final int Searchable_searchSuggestAuthority = 4; + /** +

+ @attr description + If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestIntentAction}. + @attr name android:searchSuggestIntentAction + */ + public static final int Searchable_searchSuggestIntentAction = 7; + /** +

+ @attr description + If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestIntentData}. + @attr name android:searchSuggestIntentData + */ + public static final int Searchable_searchSuggestIntentData = 8; + /** +

+ @attr description + If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path. Optional attribute. + + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestPath}. + @attr name android:searchSuggestPath + */ + public static final int Searchable_searchSuggestPath = 5; + /** +

+ @attr description + If provided, suggestion queries will be passed into your query function + as the selection parameter. Typically this will be a WHERE clause for your + database, and will contain a single question mark, which represents the actual query + string that has been typed by the user. If not provided, then the user query text + will be appended to the query Uri (after an additional "/".) Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestSelection}. + @attr name android:searchSuggestSelection + */ + public static final int Searchable_searchSuggestSelection = 6; + /** +

+ @attr description + If provided, this is the minimum number of characters needed to trigger + search suggestions. The default value is 0. Optional attribute. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestThreshold}. + @attr name android:searchSuggestThreshold + */ + public static final int Searchable_searchSuggestThreshold = 17; + /** +

+ @attr description + If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceLanguage}. + @attr name android:voiceLanguage + */ + public static final int Searchable_voiceLanguage = 14; + /** +

+ @attr description + If provided, this specifies the language model that should be used by the + voice recognition system. See + {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL } for more information. + If not provided, the default value + {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM } will be used. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceLanguageModel}. + @attr name android:voiceLanguageModel + */ + public static final int Searchable_voiceLanguageModel = 12; + /** +

+ @attr description + If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query. Must be one + or greater. If not provided, the recognizer will choose how many results to return. + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceMaxResults}. + @attr name android:voiceMaxResults + */ + public static final int Searchable_voiceMaxResults = 15; + /** +

+ @attr description + If provided, this specifies a prompt that will be displayed during voice input. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voicePromptText}. + @attr name android:voicePromptText + */ + public static final int Searchable_voicePromptText = 13; + /** +

+ @attr description + Voice search features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. + If showVoiceSearchButton is set, then launchWebSearch or launchRecognizer must + also be set. Optional attribute. + + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
showVoiceSearchButton0x01 If set, display a voice search button. This only takes effect if voice search is + available on the device.
launchWebSearch0x02 If set, the voice search button will take the user directly to a built-in + voice web search activity. Most applications will not use this flag, as it + will take the user away from the activity in which search was invoked.
launchRecognizer0x04 If set, the voice search button will take the user directly to a built-in + voice recording activity. This activity will prompt the user to speak, + transcribe the spoken text, and forward the resulting query + text to the searchable activity, just as if the user had typed it into + the search UI and clicked the search button.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceSearchMode}. + @attr name android:voiceSearchMode + */ + public static final int Searchable_voiceSearchMode = 11; + /** In order to process special action keys during search, you must define them using + one or more "ActionKey" elements in your Searchable metadata. For a more in-depth + discussion of action code handling, please refer to {@link android.app.SearchManager}. + +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #SearchableActionKey_keycode android:keycode} This attribute denotes the action key you wish to respond to.
{@link #SearchableActionKey_queryActionMsg android:queryActionMsg} If you wish to handle an action key during normal search query entry, you + must define an action string here.
{@link #SearchableActionKey_suggestActionMsg android:suggestActionMsg} If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this.
{@link #SearchableActionKey_suggestActionMsgColumn android:suggestActionMsgColumn} If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis.
+ @see #SearchableActionKey_keycode + @see #SearchableActionKey_queryActionMsg + @see #SearchableActionKey_suggestActionMsg + @see #SearchableActionKey_suggestActionMsgColumn + */ + public static final int[] SearchableActionKey = { + 0x010100c5, 0x010101db, 0x010101dc, 0x010101dd + }; + /** +

+ @attr description + This attribute denotes the action key you wish to respond to. Note that not + all action keys are actually supported using this mechanism, as many of them are + used for typing, navigation, or system functions. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the key code, use + {@link android.content.Intent#getIntExtra getIntExtra(SearchManager.ACTION_KEY)}. +

Note, in addition to the keycode, you must also provide one or more of the action + specifier attributes. Required attribute. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
KEYCODE_UNKNOWN0
KEYCODE_SOFT_LEFT1
KEYCODE_SOFT_RIGHT2
KEYCODE_HOME3
KEYCODE_BACK4
KEYCODE_CALL5
KEYCODE_ENDCALL6
KEYCODE_07
KEYCODE_18
KEYCODE_29
KEYCODE_310
KEYCODE_411
KEYCODE_512
KEYCODE_613
KEYCODE_714
KEYCODE_815
KEYCODE_916
KEYCODE_STAR17
KEYCODE_POUND18
KEYCODE_DPAD_UP19
KEYCODE_DPAD_DOWN20
KEYCODE_DPAD_LEFT21
KEYCODE_DPAD_RIGHT22
KEYCODE_DPAD_CENTER23
KEYCODE_VOLUME_UP24
KEYCODE_VOLUME_DOWN25
KEYCODE_POWER26
KEYCODE_CAMERA27
KEYCODE_CLEAR28
KEYCODE_A29
KEYCODE_B30
KEYCODE_C31
KEYCODE_D32
KEYCODE_E33
KEYCODE_F34
KEYCODE_G35
KEYCODE_H36
KEYCODE_I37
KEYCODE_J38
KEYCODE_K39
KEYCODE_L40
KEYCODE_M41
KEYCODE_N42
KEYCODE_O43
KEYCODE_P44
KEYCODE_Q45
KEYCODE_R46
KEYCODE_S47
KEYCODE_T48
KEYCODE_U49
KEYCODE_V50
KEYCODE_W51
KEYCODE_X52
KEYCODE_Y53
KEYCODE_Z54
KEYCODE_COMMA55
KEYCODE_PERIOD56
KEYCODE_ALT_LEFT57
KEYCODE_ALT_RIGHT58
KEYCODE_SHIFT_LEFT59
KEYCODE_SHIFT_RIGHT60
KEYCODE_TAB61
KEYCODE_SPACE62
KEYCODE_SYM63
KEYCODE_EXPLORER64
KEYCODE_ENVELOPE65
KEYCODE_ENTER66
KEYCODE_DEL67
KEYCODE_GRAVE68
KEYCODE_MINUS69
KEYCODE_EQUALS70
KEYCODE_LEFT_BRACKET71
KEYCODE_RIGHT_BRACKET72
KEYCODE_BACKSLASH73
KEYCODE_SEMICOLON74
KEYCODE_APOSTROPHE75
KEYCODE_SLASH76
KEYCODE_AT77
KEYCODE_NUM78
KEYCODE_HEADSETHOOK79
KEYCODE_FOCUS80
KEYCODE_PLUS81
KEYCODE_MENU82
KEYCODE_NOTIFICATION83
KEYCODE_SEARCH84
KEYCODE_MEDIA_PLAY_PAUSE85
KEYCODE_MEDIA_STOP86
KEYCODE_MEDIA_NEXT87
KEYCODE_MEDIA_PREVIOUS88
KEYCODE_MEDIA_REWIND89
KEYCODE_MEDIA_FAST_FORWARD90
KEYCODE_MUTE91
KEYCODE_PAGE_UP92
KEYCODE_PAGE_DOWN93
KEYCODE_PICTSYMBOLS94
KEYCODE_SWITCH_CHARSET95
KEYCODE_BUTTON_A96
KEYCODE_BUTTON_B97
KEYCODE_BUTTON_C98
KEYCODE_BUTTON_X99
KEYCODE_BUTTON_Y100
KEYCODE_BUTTON_Z101
KEYCODE_BUTTON_L1102
KEYCODE_BUTTON_R1103
KEYCODE_BUTTON_L2104
KEYCODE_BUTTON_R2105
KEYCODE_BUTTON_THUMBL106
KEYCODE_BUTTON_THUMBR107
KEYCODE_BUTTON_START108
KEYCODE_BUTTON_SELECT109
KEYCODE_BUTTON_MODE110
KEYCODE_ESCAPE111
KEYCODE_FORWARD_DEL112
KEYCODE_CTRL_LEFT113
KEYCODE_CTRL_RIGHT114
KEYCODE_CAPS_LOCK115
KEYCODE_SCROLL_LOCK116
KEYCODE_META_LEFT117
KEYCODE_META_RIGHT118
KEYCODE_FUNCTION119
KEYCODE_SYSRQ120
KEYCODE_BREAK121
KEYCODE_MOVE_HOME122
KEYCODE_MOVE_END123
KEYCODE_INSERT124
KEYCODE_FORWARD125
KEYCODE_MEDIA_PLAY126
KEYCODE_MEDIA_PAUSE127
KEYCODE_MEDIA_CLOSE128
KEYCODE_MEDIA_EJECT129
KEYCODE_MEDIA_RECORD130
KEYCODE_F1131
KEYCODE_F2132
KEYCODE_F3133
KEYCODE_F4134
KEYCODE_F5135
KEYCODE_F6136
KEYCODE_F7137
KEYCODE_F8138
KEYCODE_F9139
KEYCODE_F10140
KEYCODE_F11141
KEYCODE_F12142
KEYCODE_NUM_LOCK143
KEYCODE_NUMPAD_0144
KEYCODE_NUMPAD_1145
KEYCODE_NUMPAD_2146
KEYCODE_NUMPAD_3147
KEYCODE_NUMPAD_4148
KEYCODE_NUMPAD_5149
KEYCODE_NUMPAD_6150
KEYCODE_NUMPAD_7151
KEYCODE_NUMPAD_8152
KEYCODE_NUMPAD_9153
KEYCODE_NUMPAD_DIVIDE154
KEYCODE_NUMPAD_MULTIPLY155
KEYCODE_NUMPAD_SUBTRACT156
KEYCODE_NUMPAD_ADD157
KEYCODE_NUMPAD_DOT158
KEYCODE_NUMPAD_COMMA159
KEYCODE_NUMPAD_ENTER160
KEYCODE_NUMPAD_EQUALS161
KEYCODE_NUMPAD_LEFT_PAREN162
KEYCODE_NUMPAD_RIGHT_PAREN163
KEYCODE_VOLUME_MUTE164
KEYCODE_INFO165
KEYCODE_CHANNEL_UP166
KEYCODE_CHANNEL_DOWN167
KEYCODE_ZOOM_IN168
KEYCODE_ZOOM_OUT169
KEYCODE_TV170
KEYCODE_WINDOW171
KEYCODE_GUIDE172
KEYCODE_DVR173
KEYCODE_BOOKMARK174
KEYCODE_CAPTIONS175
KEYCODE_SETTINGS176
KEYCODE_TV_POWER177
KEYCODE_TV_INPUT178
KEYCODE_STB_POWER179
KEYCODE_STB_INPUT180
KEYCODE_AVR_POWER181
KEYCODE_AVR_INPUT182
KEYCODE_PROG_GRED183
KEYCODE_PROG_GREEN184
KEYCODE_PROG_YELLOW185
KEYCODE_PROG_BLUE186
KEYCODE_APP_SWITCH187
KEYCODE_BUTTON_1188
KEYCODE_BUTTON_2189
KEYCODE_BUTTON_3190
KEYCODE_BUTTON_4191
KEYCODE_BUTTON_5192
KEYCODE_BUTTON_6193
KEYCODE_BUTTON_7194
KEYCODE_BUTTON_8195
KEYCODE_BUTTON_9196
KEYCODE_BUTTON_10197
KEYCODE_BUTTON_11198
KEYCODE_BUTTON_12199
KEYCODE_BUTTON_13200
KEYCODE_BUTTON_14201
KEYCODE_BUTTON_15202
KEYCODE_BUTTON_16203
KEYCODE_LANGUAGE_SWITCH204
KEYCODE_MANNER_MODE205
KEYCODE_3D_MODE206
KEYCODE_CONTACTS207
KEYCODE_CALENDAR208
KEYCODE_MUSIC209
KEYCODE_CALCULATOR210
KEYCODE_ZENKAKU_HANKAKU211
KEYCODE_EISU212
KEYCODE_MUHENKAN213
KEYCODE_HENKAN214
KEYCODE_KATAKANA_HIRAGANA215
KEYCODE_YEN216
KEYCODE_RO217
KEYCODE_KANA218
KEYCODE_ASSIST219
KEYCODE_BRIGHTNESS_DOWN220
KEYCODE_BRIGHTNESS_UP221
KEYCODE_MEDIA_AUDIO_TRACK222
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#keycode}. + @attr name android:keycode + */ + public static final int SearchableActionKey_keycode = 0; + /** +

+ @attr description + If you wish to handle an action key during normal search query entry, you + must define an action string here. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryActionMsg}. + @attr name android:queryActionMsg + */ + public static final int SearchableActionKey_queryActionMsg = 1; + /** +

+ @attr description + If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this. If all of your suggestions + can handle the action key, you can simply define the action message using this + attribute. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#suggestActionMsg}. + @attr name android:suggestActionMsg + */ + public static final int SearchableActionKey_suggestActionMsg = 2; + /** +

+ @attr description + If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis. + First, you must define a column (and name it here) where your suggestions will include + the action string. Then, in your content provider, you must provide this column, and + when desired, provide data in this column. + The search manager will look at your suggestion cursor, using the string + provided here in order to select a column, and will use that to select a string from + the cursor. That string will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to + your searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra + getStringExtra(SearchManager.ACTION_MSG)}. If the data does not exist for the + selection suggestion, the action key will be ignored.Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#suggestActionMsgColumn}. + @attr name android:suggestActionMsgColumn + */ + public static final int SearchableActionKey_suggestActionMsgColumn = 3; + /** Attributes that can be used with a SeekBar. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SeekBar_thumb android:thumb} Draws the thumb on a seekbar.
{@link #SeekBar_thumbOffset android:thumbOffset} An offset for the thumb that allows it to extend out of the range of the track.
+ @see #SeekBar_thumb + @see #SeekBar_thumbOffset + */ + public static final int[] SeekBar = { + 0x01010142, 0x01010143 + }; + /** +

+ @attr description + Draws the thumb on a seekbar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumb}. + @attr name android:thumb + */ + public static final int SeekBar_thumb = 0; + /** +

+ @attr description + An offset for the thumb that allows it to extend out of the range of the track. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbOffset}. + @attr name android:thumbOffset + */ + public static final int SeekBar_thumbOffset = 1; + /** Attributes that can be used with a SelectionModeDrawables. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #SelectionModeDrawables_actionModeCopyDrawable android:actionModeCopyDrawable} Drawable to use for the Copy action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModeCutDrawable android:actionModeCutDrawable} Drawable to use for the Cut action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModePasteDrawable android:actionModePasteDrawable} Drawable to use for the Paste action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModeSelectAllDrawable android:actionModeSelectAllDrawable} Drawable to use for the Select all action button in Contextual Action Bar
+ @see #SelectionModeDrawables_actionModeCopyDrawable + @see #SelectionModeDrawables_actionModeCutDrawable + @see #SelectionModeDrawables_actionModePasteDrawable + @see #SelectionModeDrawables_actionModeSelectAllDrawable + */ + public static final int[] SelectionModeDrawables = { + 0x01010311, 0x01010312, 0x01010313, 0x0101037e + }; + /** +

+ @attr description + Drawable to use for the Copy action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCopyDrawable}. + @attr name android:actionModeCopyDrawable + */ + public static final int SelectionModeDrawables_actionModeCopyDrawable = 1; + /** +

+ @attr description + Drawable to use for the Cut action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCutDrawable}. + @attr name android:actionModeCutDrawable + */ + public static final int SelectionModeDrawables_actionModeCutDrawable = 0; + /** +

+ @attr description + Drawable to use for the Paste action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModePasteDrawable}. + @attr name android:actionModePasteDrawable + */ + public static final int SelectionModeDrawables_actionModePasteDrawable = 2; + /** +

+ @attr description + Drawable to use for the Select all action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSelectAllDrawable}. + @attr name android:actionModeSelectAllDrawable + */ + public static final int SelectionModeDrawables_actionModeSelectAllDrawable = 3; + /** Use injected-location-setting as the root tag of the XML resource that + describes an injected "Location services" setting. Note that the status value (subtitle) + for the setting is specified dynamically by a subclass of SettingInjectorService. + +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #SettingInjectorService_icon android:icon} The icon for the preference, should refer to all apps covered by the setting.
{@link #SettingInjectorService_settingsActivity android:settingsActivity} The activity to launch when the setting is clicked on.
{@link #SettingInjectorService_title android:title} The title for the preference.
+ @see #SettingInjectorService_icon + @see #SettingInjectorService_settingsActivity + @see #SettingInjectorService_title + */ + public static final int[] SettingInjectorService = { + 0x01010002, 0x010101e1, 0x01010225 + }; + /** +

+ @attr description + The icon for the preference, should refer to all apps covered by the setting. Typically + a generic icon for the developer. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int SettingInjectorService_icon = 0; + /** +

+ @attr description + The activity to launch when the setting is clicked on. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SettingInjectorService_settingsActivity = 2; + /** +

+ @attr description + The title for the preference. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int SettingInjectorService_title = 1; + /** Drawable used to draw shapes. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #ShapeDrawable_color android:color} Defines the color of the shape.
{@link #ShapeDrawable_dither android:dither} Enables or disables dithering.
{@link #ShapeDrawable_height android:height} Defines the height of the shape.
{@link #ShapeDrawable_width android:width} Defines the width of the shape.
+ @see #ShapeDrawable_color + @see #ShapeDrawable_dither + @see #ShapeDrawable_height + @see #ShapeDrawable_width + */ + public static final int[] ShapeDrawable = { + 0x0101011c, 0x01010155, 0x01010159, 0x010101a5 + }; + /** +

+ @attr description + Defines the color of the shape. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int ShapeDrawable_color = 3; + /** +

+ @attr description + Enables or disables dithering. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int ShapeDrawable_dither = 0; + /** +

+ @attr description + Defines the height of the shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ShapeDrawable_height = 1; + /** +

+ @attr description + Defines the width of the shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int ShapeDrawable_width = 2; + /** Defines the padding of a ShapeDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #ShapeDrawablePadding_bottom android:bottom} Bottom padding.
{@link #ShapeDrawablePadding_left android:left} Left padding.
{@link #ShapeDrawablePadding_right android:right} Right padding.
{@link #ShapeDrawablePadding_top android:top} Top padding.
+ @see #ShapeDrawablePadding_bottom + @see #ShapeDrawablePadding_left + @see #ShapeDrawablePadding_right + @see #ShapeDrawablePadding_top + */ + public static final int[] ShapeDrawablePadding = { + 0x010101ad, 0x010101ae, 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Bottom padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int ShapeDrawablePadding_bottom = 3; + /** +

+ @attr description + Left padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int ShapeDrawablePadding_left = 0; + /** +

+ @attr description + Right padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int ShapeDrawablePadding_right = 2; + /** +

+ @attr description + Top padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int ShapeDrawablePadding_top = 1; + /** Attributes that can be used with a SizeAdaptiveLayout. + */ + public static final int[] SizeAdaptiveLayout = { + + }; + /** Attributes that can be used with a SizeAdaptiveLayout_Layout. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] SizeAdaptiveLayout_Layout = { + 0x0101045f, 0x01010460 + }; + /** Attributes that can be used with a SlidingChallengeLayout_Layout. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] SlidingChallengeLayout_Layout = { + 0x0101045f, 0x01010479 + }; + /** SlidingDrawer specific attributes. These attributes are used to configure + a SlidingDrawer from XML. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #SlidingDrawer_allowSingleTap android:allowSingleTap} Indicates whether the drawer can be opened/closed by a single tap + on the handle.
{@link #SlidingDrawer_animateOnClick android:animateOnClick} Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle.
{@link #SlidingDrawer_bottomOffset android:bottomOffset} Extra offset for the handle at the bottom of the SlidingDrawer.
{@link #SlidingDrawer_content android:content} Identifier for the child that represents the drawer's content.
{@link #SlidingDrawer_handle android:handle} Identifier for the child that represents the drawer's handle.
{@link #SlidingDrawer_orientation android:orientation} Orientation of the SlidingDrawer.
{@link #SlidingDrawer_topOffset android:topOffset} Extra offset for the handle at the top of the SlidingDrawer.
+ @see #SlidingDrawer_allowSingleTap + @see #SlidingDrawer_animateOnClick + @see #SlidingDrawer_bottomOffset + @see #SlidingDrawer_content + @see #SlidingDrawer_handle + @see #SlidingDrawer_orientation + @see #SlidingDrawer_topOffset + */ + public static final int[] SlidingDrawer = { + 0x010100c4, 0x01010257, 0x01010258, 0x01010259, + 0x0101025a, 0x0101025b, 0x0101025c + }; + /** +

+ @attr description + Indicates whether the drawer can be opened/closed by a single tap + on the handle. (If false, the user must drag or fling, or click + using the trackball, to open/close the drawer.) Default is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowSingleTap}. + @attr name android:allowSingleTap + */ + public static final int SlidingDrawer_allowSingleTap = 3; + /** +

+ @attr description + Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle. Default is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateOnClick}. + @attr name android:animateOnClick + */ + public static final int SlidingDrawer_animateOnClick = 6; + /** +

+ @attr description + Extra offset for the handle at the bottom of the SlidingDrawer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomOffset}. + @attr name android:bottomOffset + */ + public static final int SlidingDrawer_bottomOffset = 1; + /** +

+ @attr description + Identifier for the child that represents the drawer's content. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#content}. + @attr name android:content + */ + public static final int SlidingDrawer_content = 5; + /** +

+ @attr description + Identifier for the child that represents the drawer's handle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#handle}. + @attr name android:handle + */ + public static final int SlidingDrawer_handle = 4; + /** +

+ @attr description + Orientation of the SlidingDrawer. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int SlidingDrawer_orientation = 0; + /** +

+ @attr description + Extra offset for the handle at the top of the SlidingDrawer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topOffset}. + @attr name android:topOffset + */ + public static final int SlidingDrawer_topOffset = 2; + /** Attributes that can be used with a SlidingTab. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #SlidingTab_orientation android:orientation} Use "horizontal" for a row, "vertical" for a column.
+ @see #SlidingTab_orientation + */ + public static final int[] SlidingTab = { + 0x010100c4 + }; + /** +

+ @attr description + Use "horizontal" for a row, "vertical" for a column. The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int SlidingTab_orientation = 0; + /** Use spell-checker as the root tag of the XML resource that + describes an + {@link android.service.textservice.SpellCheckerService} service, which is + referenced from its + {@link android.view.textservice.SpellCheckerSession#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SpellChecker_label android:label} The name of the spell checker.
{@link #SpellChecker_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #SpellChecker_label + @see #SpellChecker_settingsActivity + */ + public static final int[] SpellChecker = { + 0x01010001, 0x01010225 + }; + /** +

+ @attr description + The name of the spell checker. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int SpellChecker_label = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SpellChecker_settingsActivity = 1; + /** This is the subtype of the spell checker. Subtype can describe locales (e.g. en_US, fr_FR...) +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #SpellChecker_Subtype_label android:label} The name of the subtype.
{@link #SpellChecker_Subtype_subtypeExtraValue android:subtypeExtraValue} The extra value of the subtype.
{@link #SpellChecker_Subtype_subtypeLocale android:subtypeLocale} The locale of the subtype.
+ @see #SpellChecker_Subtype_label + @see #SpellChecker_Subtype_subtypeExtraValue + @see #SpellChecker_Subtype_subtypeLocale + */ + public static final int[] SpellChecker_Subtype = { + 0x01010001, 0x01010399, 0x0101039a + }; + /** +

+ @attr description + The name of the subtype. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int SpellChecker_Subtype_label = 0; + /** +

+ @attr description + The extra value of the subtype. This string can be any string and will be passed to + the SpellChecker. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeExtraValue}. + @attr name android:subtypeExtraValue + */ + public static final int SpellChecker_Subtype_subtypeExtraValue = 2; + /** +

+ @attr description + The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + This is also used by the framework to know the supported locales + of the spell checker. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeLocale}. + @attr name android:subtypeLocale + */ + public static final int SpellChecker_Subtype_subtypeLocale = 1; + /** Attributes that can be used with a Spinner. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Spinner_dropDownHorizontalOffset android:dropDownHorizontalOffset} Horizontal offset from the spinner widget for positioning the dropdown + in spinnerMode="dropdown".
{@link #Spinner_dropDownSelector android:dropDownSelector} List selector to use for spinnerMode="dropdown" display.
{@link #Spinner_dropDownVerticalOffset android:dropDownVerticalOffset} Vertical offset from the spinner widget for positioning the dropdown in + spinnerMode="dropdown".
{@link #Spinner_dropDownWidth android:dropDownWidth} Width of the dropdown in spinnerMode="dropdown".
{@link #Spinner_gravity android:gravity} Gravity setting for positioning the currently selected item.
{@link #Spinner_popupBackground android:popupBackground} Background drawable to use for the dropdown in spinnerMode="dropdown".
{@link #Spinner_prompt android:prompt} The prompt to display when the spinner's dialog is shown.
{@link #Spinner_spinnerMode android:spinnerMode} Display mode for spinner options.
+ @see #Spinner_dropDownHorizontalOffset + @see #Spinner_dropDownSelector + @see #Spinner_dropDownVerticalOffset + @see #Spinner_dropDownWidth + @see #Spinner_gravity + @see #Spinner_popupBackground + @see #Spinner_prompt + @see #Spinner_spinnerMode + */ + public static final int[] Spinner = { + 0x010100af, 0x01010175, 0x01010176, 0x0101017b, + 0x01010262, 0x010102ac, 0x010102ad, 0x010102f1, + 0x0101043a, 0x0101043b + }; + /** +

+ @attr description + Horizontal offset from the spinner widget for positioning the dropdown + in spinnerMode="dropdown". + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHorizontalOffset}. + @attr name android:dropDownHorizontalOffset + */ + public static final int Spinner_dropDownHorizontalOffset = 5; + /** +

+ @attr description + List selector to use for spinnerMode="dropdown" display. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSelector}. + @attr name android:dropDownSelector + */ + public static final int Spinner_dropDownSelector = 1; + /** +

+ @attr description + Vertical offset from the spinner widget for positioning the dropdown in + spinnerMode="dropdown". + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownVerticalOffset}. + @attr name android:dropDownVerticalOffset + */ + public static final int Spinner_dropDownVerticalOffset = 6; + /** +

+ @attr description + Width of the dropdown in spinnerMode="dropdown". + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownWidth}. + @attr name android:dropDownWidth + */ + public static final int Spinner_dropDownWidth = 4; + /** +

+ @attr description + Gravity setting for positioning the currently selected item. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int Spinner_gravity = 0; + /** +

+ @attr description + Background drawable to use for the dropdown in spinnerMode="dropdown". + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupBackground}. + @attr name android:popupBackground + */ + public static final int Spinner_popupBackground = 2; + /** +

+ @attr description + The prompt to display when the spinner's dialog is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#prompt}. + @attr name android:prompt + */ + public static final int Spinner_prompt = 3; + /** +

+ @attr description + Display mode for spinner options. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
dialog0 Spinner options will be presented to the user as a dialog window.
dropdown1 Spinner options will be presented to the user as an inline dropdown + anchored to the spinner widget itself.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerMode}. + @attr name android:spinnerMode + */ + public static final int Spinner_spinnerMode = 7; + /** Attributes that can be used with a StackView. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] StackView = { + 0x01010437, 0x01010438 + }; + /** Drawable used to render several states. Each state is represented by + a child drawable. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #StateListDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #StateListDrawable_constantSize android:constantSize} If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states.
{@link #StateListDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #StateListDrawable_enterFadeDuration android:enterFadeDuration} Amount of time (in milliseconds) to fade in a new state drawable.
{@link #StateListDrawable_exitFadeDuration android:exitFadeDuration} Amount of time (in milliseconds) to fade out an old state drawable.
{@link #StateListDrawable_variablePadding android:variablePadding} If true, allows the drawable's padding to change based on the + current state that is selected.
{@link #StateListDrawable_visible android:visible} Indicates whether the drawable should be initially visible.
+ @see #StateListDrawable_autoMirrored + @see #StateListDrawable_constantSize + @see #StateListDrawable_dither + @see #StateListDrawable_enterFadeDuration + @see #StateListDrawable_exitFadeDuration + @see #StateListDrawable_variablePadding + @see #StateListDrawable_visible + */ + public static final int[] StateListDrawable = { + 0x0101011c, 0x01010194, 0x01010195, 0x01010196, + 0x0101030c, 0x0101030d, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int StateListDrawable_autoMirrored = 6; + /** +

+ @attr description + If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states. If false, the size will vary based on the + current state. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#constantSize}. + @attr name android:constantSize + */ + public static final int StateListDrawable_constantSize = 3; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int StateListDrawable_dither = 0; + /** +

+ @attr description + Amount of time (in milliseconds) to fade in a new state drawable. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enterFadeDuration}. + @attr name android:enterFadeDuration + */ + public static final int StateListDrawable_enterFadeDuration = 4; + /** +

+ @attr description + Amount of time (in milliseconds) to fade out an old state drawable. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exitFadeDuration}. + @attr name android:exitFadeDuration + */ + public static final int StateListDrawable_exitFadeDuration = 5; + /** +

+ @attr description + If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#variablePadding}. + @attr name android:variablePadding + */ + public static final int StateListDrawable_variablePadding = 2; + /** +

+ @attr description + Indicates whether the drawable should be initially visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int StateListDrawable_visible = 1; + /** Attributes that can be used with a Storage. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] Storage = { + 0x01010469, 0x0101046a, 0x0101046b, 0x0101046c, + 0x0101046d, 0x0101046e, 0x0101046f, 0x01010470 + }; + /** Attributes that can be used with a SuggestionSpan. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] SuggestionSpan = { + 0x010103f4, 0x010103f5 + }; + /** Attributes that can be used with a Switch. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Switch_switchMinWidth android:switchMinWidth} Minimum width for the switch component
{@link #Switch_switchPadding android:switchPadding} Minimum space between the switch and caption text
{@link #Switch_switchTextAppearance android:switchTextAppearance} TextAppearance style for text displayed on the switch thumb.
{@link #Switch_textOff android:textOff} Text to use when the switch is in the unchecked/"off" state.
{@link #Switch_textOn android:textOn} Text to use when the switch is in the checked/"on" state.
{@link #Switch_thumb android:thumb} Drawable to use as the "thumb" that switches back and forth.
{@link #Switch_thumbTextPadding android:thumbTextPadding} Amount of padding on either side of text within the switch thumb.
{@link #Switch_track android:track} Drawable to use as the "track" that the switch thumb slides within.
+ @see #Switch_switchMinWidth + @see #Switch_switchPadding + @see #Switch_switchTextAppearance + @see #Switch_textOff + @see #Switch_textOn + @see #Switch_thumb + @see #Switch_thumbTextPadding + @see #Switch_track + */ + public static final int[] Switch = { + 0x01010124, 0x01010125, 0x01010142, 0x0101036e, + 0x0101036f, 0x01010370, 0x01010371, 0x01010372 + }; + /** +

+ @attr description + Minimum width for the switch component + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchMinWidth}. + @attr name android:switchMinWidth + */ + public static final int Switch_switchMinWidth = 5; + /** +

+ @attr description + Minimum space between the switch and caption text + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchPadding}. + @attr name android:switchPadding + */ + public static final int Switch_switchPadding = 6; + /** +

+ @attr description + TextAppearance style for text displayed on the switch thumb. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextAppearance}. + @attr name android:switchTextAppearance + */ + public static final int Switch_switchTextAppearance = 3; + /** +

+ @attr description + Text to use when the switch is in the unchecked/"off" state. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOff}. + @attr name android:textOff + */ + public static final int Switch_textOff = 1; + /** +

+ @attr description + Text to use when the switch is in the checked/"on" state. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOn}. + @attr name android:textOn + */ + public static final int Switch_textOn = 0; + /** +

+ @attr description + Drawable to use as the "thumb" that switches back and forth. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumb}. + @attr name android:thumb + */ + public static final int Switch_thumb = 2; + /** +

+ @attr description + Amount of padding on either side of text within the switch thumb. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbTextPadding}. + @attr name android:thumbTextPadding + */ + public static final int Switch_thumbTextPadding = 7; + /** +

+ @attr description + Drawable to use as the "track" that the switch thumb slides within. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#track}. + @attr name android:track + */ + public static final int Switch_track = 4; + /** Attributes that can be used with a SwitchPreference. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #SwitchPreference_disableDependentsState android:disableDependentsState} The state (true for on, or false for off) that causes dependents to be disabled.
{@link #SwitchPreference_summaryOff android:summaryOff} The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is unchecked.
{@link #SwitchPreference_summaryOn android:summaryOn} The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is checked.
{@link #SwitchPreference_switchTextOff android:switchTextOff} The text used on the switch itself when in the "off" state.
{@link #SwitchPreference_switchTextOn android:switchTextOn} The text used on the switch itself when in the "on" state.
+ @see #SwitchPreference_disableDependentsState + @see #SwitchPreference_summaryOff + @see #SwitchPreference_summaryOn + @see #SwitchPreference_switchTextOff + @see #SwitchPreference_switchTextOn + */ + public static final int[] SwitchPreference = { + 0x010101ef, 0x010101f0, 0x010101f1, 0x0101036b, + 0x0101036c + }; + /** +

+ @attr description + The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disableDependentsState}. + @attr name android:disableDependentsState + */ + public static final int SwitchPreference_disableDependentsState = 2; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOff}. + @attr name android:summaryOff + */ + public static final int SwitchPreference_summaryOff = 1; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOn}. + @attr name android:summaryOn + */ + public static final int SwitchPreference_summaryOn = 0; + /** +

+ @attr description + The text used on the switch itself when in the "off" state. + This should be a very SHORT string, as it appears in a small space. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextOff}. + @attr name android:switchTextOff + */ + public static final int SwitchPreference_switchTextOff = 4; + /** +

+ @attr description + The text used on the switch itself when in the "on" state. + This should be a very SHORT string, as it appears in a small space. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextOn}. + @attr name android:switchTextOn + */ + public static final int SwitchPreference_switchTextOn = 3; + /** Use account-authenticator as the root tag of the XML resource that + describes an account authenticator. + +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #SyncAdapter_accountType android:accountType} The account type this authenticator handles.
{@link #SyncAdapter_allowParallelSyncs android:allowParallelSyncs} Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority.
{@link #SyncAdapter_contentAuthority android:contentAuthority} the authority of a content provider.
{@link #SyncAdapter_isAlwaysSyncable android:isAlwaysSyncable} Set to true to tell the SyncManager to automatically call setIsSyncable(.
{@link #SyncAdapter_settingsActivity android:settingsActivity} If provided, specifies the action of the settings + activity for this SyncAdapter.
{@link #SyncAdapter_supportsUploading android:supportsUploading}
{@link #SyncAdapter_userVisible android:userVisible}
+ @see #SyncAdapter_accountType + @see #SyncAdapter_allowParallelSyncs + @see #SyncAdapter_contentAuthority + @see #SyncAdapter_isAlwaysSyncable + @see #SyncAdapter_settingsActivity + @see #SyncAdapter_supportsUploading + @see #SyncAdapter_userVisible + */ + public static final int[] SyncAdapter = { + 0x01010225, 0x0101028f, 0x01010290, 0x01010291, + 0x0101029b, 0x01010332, 0x01010333 + }; + /** +

+ @attr description + The account type this authenticator handles. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountType}. + @attr name android:accountType + */ + public static final int SyncAdapter_accountType = 1; + /** +

+ @attr description + Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority. + Otherwise the SyncManager will be sure not to issue a start sync request + to this SyncAdapter if the SyncAdapter is already syncing another account. + Defaults to false. + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowParallelSyncs}. + @attr name android:allowParallelSyncs + */ + public static final int SyncAdapter_allowParallelSyncs = 5; + /** +

+ @attr description + the authority of a content provider. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#contentAuthority}. + @attr name android:contentAuthority + */ + public static final int SyncAdapter_contentAuthority = 2; + /** +

+ @attr description + Set to true to tell the SyncManager to automatically call setIsSyncable(..., ..., 1) + for the SyncAdapter instead of issuaing an initialization sync to the SyncAdapter. + Defaults to false. + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAlwaysSyncable}. + @attr name android:isAlwaysSyncable + */ + public static final int SyncAdapter_isAlwaysSyncable = 6; + /** +

+ @attr description + If provided, specifies the action of the settings + activity for this SyncAdapter. + + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SyncAdapter_settingsActivity = 0; + /** +

This symbol is the offset where the {@link android.R.attr#supportsUploading} + attribute's value can be found in the {@link #SyncAdapter} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:supportsUploading + */ + public static final int SyncAdapter_supportsUploading = 4; + /** +

This symbol is the offset where the {@link android.R.attr#userVisible} + attribute's value can be found in the {@link #SyncAdapter} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:userVisible + */ + public static final int SyncAdapter_userVisible = 3; + /** Attributes that can be used with a TabWidget. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #TabWidget_divider android:divider} Drawable used to draw the divider between tabs.
{@link #TabWidget_tabStripEnabled android:tabStripEnabled} Determines whether the strip under the tab indicators is drawn or not.
{@link #TabWidget_tabStripLeft android:tabStripLeft} Drawable used to draw the left part of the strip underneath the tabs.
{@link #TabWidget_tabStripRight android:tabStripRight} Drawable used to draw the right part of the strip underneath the tabs.
+ @see #TabWidget_divider + @see #TabWidget_tabStripEnabled + @see #TabWidget_tabStripLeft + @see #TabWidget_tabStripRight + */ + public static final int[] TabWidget = { + 0x01010129, 0x010102bb, 0x010102bc, 0x010102bd, + 0x01010439 + }; + /** +

+ @attr description + Drawable used to draw the divider between tabs. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int TabWidget_divider = 0; + /** +

+ @attr description + Determines whether the strip under the tab indicators is drawn or not. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripEnabled}. + @attr name android:tabStripEnabled + */ + public static final int TabWidget_tabStripEnabled = 3; + /** +

+ @attr description + Drawable used to draw the left part of the strip underneath the tabs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripLeft}. + @attr name android:tabStripLeft + */ + public static final int TabWidget_tabStripLeft = 1; + /** +

+ @attr description + Drawable used to draw the right part of the strip underneath the tabs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripRight}. + @attr name android:tabStripRight + */ + public static final int TabWidget_tabStripRight = 2; + /** Attributes that can be used with a TableLayout. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TableLayout_collapseColumns android:collapseColumns} The zero-based index of the columns to collapse.
{@link #TableLayout_shrinkColumns android:shrinkColumns} The zero-based index of the columns to shrink.
{@link #TableLayout_stretchColumns android:stretchColumns} The zero-based index of the columns to stretch.
+ @see #TableLayout_collapseColumns + @see #TableLayout_shrinkColumns + @see #TableLayout_stretchColumns + */ + public static final int[] TableLayout = { + 0x01010149, 0x0101014a, 0x0101014b + }; + /** +

+ @attr description + The zero-based index of the columns to collapse. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#collapseColumns}. + @attr name android:collapseColumns + */ + public static final int TableLayout_collapseColumns = 2; + /** +

+ @attr description + The zero-based index of the columns to shrink. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can shrink all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shrinkColumns}. + @attr name android:shrinkColumns + */ + public static final int TableLayout_shrinkColumns = 1; + /** +

+ @attr description + The zero-based index of the columns to stretch. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can stretch all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stretchColumns}. + @attr name android:stretchColumns + */ + public static final int TableLayout_stretchColumns = 0; + /** Attributes that can be used with a TableRow. + */ + public static final int[] TableRow = { + + }; + /** Attributes that can be used with a TableRow_Cell. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #TableRow_Cell_layout_column android:layout_column} The index of the column in which this child should be.
{@link #TableRow_Cell_layout_span android:layout_span} Defines how many columns this child should span.
+ @see #TableRow_Cell_layout_column + @see #TableRow_Cell_layout_span + */ + public static final int[] TableRow_Cell = { + 0x0101014c, 0x0101014d + }; + /** +

+ @attr description + The index of the column in which this child should be. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_column}. + @attr name android:layout_column + */ + public static final int TableRow_Cell_layout_column = 0; + /** +

+ @attr description + Defines how many columns this child should span. Must be >= 1. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_span}. + @attr name android:layout_span + */ + public static final int TableRow_Cell_layout_span = 1; + /** Attributes that can be used with a TextAppearance. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #TextAppearance_fontFamily android:fontFamily} Font family (named by string) for the text.
{@link #TextAppearance_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #TextAppearance_shadowDx android:shadowDx} Horizontal offset of the shadow.
{@link #TextAppearance_shadowDy android:shadowDy} Vertical offset of the shadow.
{@link #TextAppearance_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #TextAppearance_textAllCaps android:textAllCaps} Present the text in ALL CAPS.
{@link #TextAppearance_textColor android:textColor} Text color.
{@link #TextAppearance_textColorHighlight android:textColorHighlight} Color of the text selection highlight.
{@link #TextAppearance_textColorHint android:textColorHint} Color of the hint text.
{@link #TextAppearance_textColorLink android:textColorLink} Color of the links.
{@link #TextAppearance_textSize android:textSize} Size of the text.
{@link #TextAppearance_textStyle android:textStyle} Style (bold, italic, bolditalic) for the text.
{@link #TextAppearance_typeface android:typeface} Typeface (normal, sans, serif, monospace) for the text.
+ @see #TextAppearance_fontFamily + @see #TextAppearance_shadowColor + @see #TextAppearance_shadowDx + @see #TextAppearance_shadowDy + @see #TextAppearance_shadowRadius + @see #TextAppearance_textAllCaps + @see #TextAppearance_textColor + @see #TextAppearance_textColorHighlight + @see #TextAppearance_textColorHint + @see #TextAppearance_textColorLink + @see #TextAppearance_textSize + @see #TextAppearance_textStyle + @see #TextAppearance_typeface + */ + public static final int[] TextAppearance = { + 0x01010095, 0x01010096, 0x01010097, 0x01010098, + 0x01010099, 0x0101009a, 0x0101009b, 0x01010161, + 0x01010162, 0x01010163, 0x01010164, 0x0101038c, + 0x010103ac + }; + /** +

+ @attr description + Font family (named by string) for the text. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fontFamily}. + @attr name android:fontFamily + */ + public static final int TextAppearance_fontFamily = 12; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int TextAppearance_shadowColor = 7; + /** +

+ @attr description + Horizontal offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDx}. + @attr name android:shadowDx + */ + public static final int TextAppearance_shadowDx = 8; + /** +

+ @attr description + Vertical offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDy}. + @attr name android:shadowDy + */ + public static final int TextAppearance_shadowDy = 9; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int TextAppearance_shadowRadius = 10; + /** +

+ @attr description + Present the text in ALL CAPS. This may use a small-caps form when available. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAllCaps}. + @attr name android:textAllCaps + */ + public static final int TextAppearance_textAllCaps = 11; + /** +

+ @attr description + Text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int TextAppearance_textColor = 3; + /** +

+ @attr description + Color of the text selection highlight. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlight}. + @attr name android:textColorHighlight + */ + public static final int TextAppearance_textColorHighlight = 4; + /** +

+ @attr description + Color of the hint text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHint}. + @attr name android:textColorHint + */ + public static final int TextAppearance_textColorHint = 5; + /** +

+ @attr description + Color of the links. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLink}. + @attr name android:textColorLink + */ + public static final int TextAppearance_textColorLink = 6; + /** +

+ @attr description + Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSize}. + @attr name android:textSize + */ + public static final int TextAppearance_textSize = 0; + /** +

+ @attr description + Style (bold, italic, bolditalic) for the text. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textStyle}. + @attr name android:textStyle + */ + public static final int TextAppearance_textStyle = 2; + /** +

+ @attr description + Typeface (normal, sans, serif, monospace) for the text. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#typeface}. + @attr name android:typeface + */ + public static final int TextAppearance_typeface = 1; + /** Attributes that can be used with a TextClock. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TextClock_format12Hour android:format12Hour} Specifies the formatting pattern used to show the time and/or date + in 12-hour mode.
{@link #TextClock_format24Hour android:format24Hour} Specifies the formatting pattern used to show the time and/or date + in 24-hour mode.
{@link #TextClock_timeZone android:timeZone} Specifies the time zone to use.
+ @see #TextClock_format12Hour + @see #TextClock_format24Hour + @see #TextClock_timeZone + */ + public static final int[] TextClock = { + 0x010103ca, 0x010103cb, 0x010103cc + }; + /** +

+ @attr description + Specifies the formatting pattern used to show the time and/or date + in 12-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "h:mm a". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format12Hour}. + @attr name android:format12Hour + */ + public static final int TextClock_format12Hour = 0; + /** +

+ @attr description + Specifies the formatting pattern used to show the time and/or date + in 24-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "H:mm". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format24Hour}. + @attr name android:format24Hour + */ + public static final int TextClock_format24Hour = 1; + /** +

+ @attr description + Specifies the time zone to use. When this attribute is specified, the + TextClock will ignore the time zone of the system. To use the user's + time zone, do not specify this attribute. The default value is the + user's time zone. Please refer to {@link java.util.TimeZone} for more + information about time zone ids. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#timeZone}. + @attr name android:timeZone + */ + public static final int TextClock_timeZone = 2; + /** Attributes that can be used with a TextSwitcher. + */ + public static final int[] TextSwitcher = { + + }; + /** Use tts-engine as the root tag of the XML resource that + describes a text to speech engine implemented as a subclass of + {@link android.speech.tts.TextToSpeechService}. + + The XML resource must be referenced from its + {@link android.speech.tts.TextToSpeech.Engine#SERVICE_META_DATA} meta-data + entry. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextToSpeechEngine_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #TextToSpeechEngine_settingsActivity + */ + public static final int[] TextToSpeechEngine = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int TextToSpeechEngine_settingsActivity = 0; + /** Attributes that can be used with a TextView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #TextView_autoLink android:autoLink} Controls whether links such as urls and email addresses are + automatically found and converted to clickable links.
{@link #TextView_autoText android:autoText} If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors.
{@link #TextView_bufferType android:bufferType} Determines the minimum type that getText() will return.
{@link #TextView_capitalize android:capitalize} If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types.
{@link #TextView_cursorVisible android:cursorVisible} Makes the cursor visible (the default) or invisible.
{@link #TextView_digits android:digits} If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept.
{@link #TextView_drawableBottom android:drawableBottom} The drawable to be drawn below the text.
{@link #TextView_drawableEnd android:drawableEnd} The drawable to be drawn to the end of the text.
{@link #TextView_drawableLeft android:drawableLeft} The drawable to be drawn to the left of the text.
{@link #TextView_drawablePadding android:drawablePadding} The padding between the drawables and the text.
{@link #TextView_drawableRight android:drawableRight} The drawable to be drawn to the right of the text.
{@link #TextView_drawableStart android:drawableStart} The drawable to be drawn to the start of the text.
{@link #TextView_drawableTop android:drawableTop} The drawable to be drawn above the text.
{@link #TextView_editable android:editable} If set, specifies that this TextView has an input method.
{@link #TextView_editorExtras android:editorExtras} Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method.
{@link #TextView_ellipsize android:ellipsize} If set, causes words that are longer than the view is wide + to be ellipsized instead of broken in the middle.
{@link #TextView_ems android:ems} Makes the TextView be exactly this many ems wide.
{@link #TextView_enabled android:enabled} Specifies whether the widget is enabled.
{@link #TextView_fontFamily android:fontFamily} Font family (named by string) for the text.
{@link #TextView_freezesText android:freezesText} If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position.
{@link #TextView_gravity android:gravity} Specifies how to align the text by the view's x- and/or y-axis + when the text is smaller than the view.
{@link #TextView_height android:height} Makes the TextView be exactly this many pixels tall.
{@link #TextView_hint android:hint} Hint text to display when the text is empty.
{@link #TextView_imeActionId android:imeActionId} Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view.
{@link #TextView_imeActionLabel android:imeActionLabel} Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view.
{@link #TextView_imeOptions android:imeOptions} Additional features you can enable in an IME associated with an editor + to improve the integration with your application.
{@link #TextView_includeFontPadding android:includeFontPadding} Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly.
{@link #TextView_inputMethod android:inputMethod} If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name).
{@link #TextView_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
{@link #TextView_lineSpacingExtra android:lineSpacingExtra} Extra spacing between lines of text.
{@link #TextView_lineSpacingMultiplier android:lineSpacingMultiplier} Extra spacing between lines of text, as a multiplier.
{@link #TextView_lines android:lines} Makes the TextView be exactly this many lines tall.
{@link #TextView_linksClickable android:linksClickable} If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found.
{@link #TextView_marqueeRepeatLimit android:marqueeRepeatLimit} The number of times to repeat the marquee animation.
{@link #TextView_maxEms android:maxEms} Makes the TextView be at most this many ems wide.
{@link #TextView_maxHeight android:maxHeight} Makes the TextView be at most this many pixels tall.
{@link #TextView_maxLength android:maxLength} Set an input filter to constrain the text length to the + specified number.
{@link #TextView_maxLines android:maxLines} Makes the TextView be at most this many lines tall.
{@link #TextView_maxWidth android:maxWidth} Makes the TextView be at most this many pixels wide.
{@link #TextView_minEms android:minEms} Makes the TextView be at least this many ems wide.
{@link #TextView_minHeight android:minHeight} Makes the TextView be at least this many pixels tall.
{@link #TextView_minLines android:minLines} Makes the TextView be at least this many lines tall.
{@link #TextView_minWidth android:minWidth} Makes the TextView be at least this many pixels wide.
{@link #TextView_numeric android:numeric} If set, specifies that this TextView has a numeric input method.
{@link #TextView_password android:password} Whether the characters of the field are displayed as + password dots instead of themselves.
{@link #TextView_phoneNumber android:phoneNumber} If set, specifies that this TextView has a phone number input + method.
{@link #TextView_privateImeOptions android:privateImeOptions} An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method.
{@link #TextView_scrollHorizontally android:scrollHorizontally} Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally).
{@link #TextView_selectAllOnFocus android:selectAllOnFocus} If the text is selectable, select it all when the view takes + focus.
{@link #TextView_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #TextView_shadowDx android:shadowDx} Horizontal offset of the shadow.
{@link #TextView_shadowDy android:shadowDy} Vertical offset of the shadow.
{@link #TextView_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #TextView_singleLine android:singleLine} Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key.
{@link #TextView_text android:text} Text to display.
{@link #TextView_textAllCaps android:textAllCaps} Present the text in ALL CAPS.
{@link #TextView_textAppearance android:textAppearance} Base text color, typeface, size, and style.
{@link #TextView_textColor android:textColor} Text color.
{@link #TextView_textColorHighlight android:textColorHighlight} Color of the text selection highlight.
{@link #TextView_textColorHint android:textColorHint} Color of the hint text.
{@link #TextView_textColorLink android:textColorLink} Text color for links.
{@link #TextView_textCursorDrawable android:textCursorDrawable} Reference to a drawable that will be drawn under the insertion cursor.
{@link #TextView_textEditNoPasteWindowLayout android:textEditNoPasteWindowLayout} Variation of textEditPasteWindowLayout displayed when the clipboard is empty.
{@link #TextView_textEditPasteWindowLayout android:textEditPasteWindowLayout} The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field.
{@link #TextView_textEditSideNoPasteWindowLayout android:textEditSideNoPasteWindowLayout} Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty.
{@link #TextView_textEditSidePasteWindowLayout android:textEditSidePasteWindowLayout} Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top.
{@link #TextView_textEditSuggestionItemLayout android:textEditSuggestionItemLayout} Layout of the TextView item that will populate the suggestion popup window.
{@link #TextView_textIsSelectable android:textIsSelectable} Indicates that the content of a non-editable text can be selected.
{@link #TextView_textScaleX android:textScaleX} Sets the horizontal scaling factor for the text.
{@link #TextView_textSelectHandle android:textSelectHandle} Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text.
{@link #TextView_textSelectHandleLeft android:textSelectHandleLeft} Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region.
{@link #TextView_textSelectHandleRight android:textSelectHandleRight} Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region.
{@link #TextView_textSize android:textSize} Size of the text.
{@link #TextView_textStyle android:textStyle} Style (bold, italic, bolditalic) for the text.
{@link #TextView_typeface android:typeface} Typeface (normal, sans, serif, monospace) for the text.
{@link #TextView_width android:width} Makes the TextView be exactly this many pixels wide.
+ @see #TextView_autoLink + @see #TextView_autoText + @see #TextView_bufferType + @see #TextView_capitalize + @see #TextView_cursorVisible + @see #TextView_digits + @see #TextView_drawableBottom + @see #TextView_drawableEnd + @see #TextView_drawableLeft + @see #TextView_drawablePadding + @see #TextView_drawableRight + @see #TextView_drawableStart + @see #TextView_drawableTop + @see #TextView_editable + @see #TextView_editorExtras + @see #TextView_ellipsize + @see #TextView_ems + @see #TextView_enabled + @see #TextView_fontFamily + @see #TextView_freezesText + @see #TextView_gravity + @see #TextView_height + @see #TextView_hint + @see #TextView_imeActionId + @see #TextView_imeActionLabel + @see #TextView_imeOptions + @see #TextView_includeFontPadding + @see #TextView_inputMethod + @see #TextView_inputType + @see #TextView_lineSpacingExtra + @see #TextView_lineSpacingMultiplier + @see #TextView_lines + @see #TextView_linksClickable + @see #TextView_marqueeRepeatLimit + @see #TextView_maxEms + @see #TextView_maxHeight + @see #TextView_maxLength + @see #TextView_maxLines + @see #TextView_maxWidth + @see #TextView_minEms + @see #TextView_minHeight + @see #TextView_minLines + @see #TextView_minWidth + @see #TextView_numeric + @see #TextView_password + @see #TextView_phoneNumber + @see #TextView_privateImeOptions + @see #TextView_scrollHorizontally + @see #TextView_selectAllOnFocus + @see #TextView_shadowColor + @see #TextView_shadowDx + @see #TextView_shadowDy + @see #TextView_shadowRadius + @see #TextView_singleLine + @see #TextView_text + @see #TextView_textAllCaps + @see #TextView_textAppearance + @see #TextView_textColor + @see #TextView_textColorHighlight + @see #TextView_textColorHint + @see #TextView_textColorLink + @see #TextView_textCursorDrawable + @see #TextView_textEditNoPasteWindowLayout + @see #TextView_textEditPasteWindowLayout + @see #TextView_textEditSideNoPasteWindowLayout + @see #TextView_textEditSidePasteWindowLayout + @see #TextView_textEditSuggestionItemLayout + @see #TextView_textIsSelectable + @see #TextView_textScaleX + @see #TextView_textSelectHandle + @see #TextView_textSelectHandleLeft + @see #TextView_textSelectHandleRight + @see #TextView_textSize + @see #TextView_textStyle + @see #TextView_typeface + @see #TextView_width + */ + public static final int[] TextView = { + 0x0101000e, 0x01010034, 0x01010095, 0x01010096, + 0x01010097, 0x01010098, 0x01010099, 0x0101009a, + 0x0101009b, 0x010100ab, 0x010100af, 0x010100b0, + 0x010100b1, 0x0101011f, 0x01010120, 0x0101013f, + 0x01010140, 0x0101014e, 0x0101014f, 0x01010150, + 0x01010151, 0x01010152, 0x01010153, 0x01010154, + 0x01010155, 0x01010156, 0x01010157, 0x01010158, + 0x01010159, 0x0101015a, 0x0101015b, 0x0101015c, + 0x0101015d, 0x0101015e, 0x0101015f, 0x01010160, + 0x01010161, 0x01010162, 0x01010163, 0x01010164, + 0x01010165, 0x01010166, 0x01010167, 0x01010168, + 0x01010169, 0x0101016a, 0x0101016b, 0x0101016c, + 0x0101016d, 0x0101016e, 0x0101016f, 0x01010170, + 0x01010171, 0x01010217, 0x01010218, 0x0101021d, + 0x01010220, 0x01010223, 0x01010224, 0x01010264, + 0x01010265, 0x01010266, 0x010102c5, 0x010102c6, + 0x010102c7, 0x01010314, 0x01010315, 0x01010316, + 0x0101035e, 0x0101035f, 0x01010362, 0x01010374, + 0x0101038c, 0x01010392, 0x01010393, 0x010103ac + }; + /** +

+ @attr description + Controls whether links such as urls and email addresses are + automatically found and converted to clickable links. The default + value is "none", disabling this feature. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
none0x00 Match no patterns (default).
web0x01 Match Web URLs.
email0x02 Match email addresses.
phone0x04 Match phone numbers.
map0x08 Match map addresses.
all0x0f Match all patterns (equivalent to web|email|phone|map).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoLink}. + @attr name android:autoLink + */ + public static final int TextView_autoLink = 11; + /** +

+ @attr description + If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors. + The default is "false". + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoText}. + @attr name android:autoText + */ + @Deprecated + public static final int TextView_autoText = 45; + /** +

+ @attr description + Determines the minimum type that getText() will return. + The default is "normal". + Note that EditText and LogTextBox always return Editable, + even if you specify something less powerful here. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Can return any CharSequence, possibly a + Spanned one if the source text was Spanned.
spannable1 Can only return Spannable.
editable2 Can only return Spannable and Editable.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#bufferType}. + @attr name android:bufferType + */ + public static final int TextView_bufferType = 17; + /** +

+ @attr description + If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types. + The default is "none". + {@deprecated Use inputType instead.} + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Don't automatically capitalize anything.
sentences1 Capitalize the first word of each sentence.
words2 Capitalize the first letter of every word.
characters3 Capitalize every character.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#capitalize}. + @attr name android:capitalize + */ + @Deprecated + public static final int TextView_capitalize = 44; + /** +

+ @attr description + Makes the cursor visible (the default) or invisible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cursorVisible}. + @attr name android:cursorVisible + */ + public static final int TextView_cursorVisible = 21; + /** +

+ @attr description + If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept. + If this is set, numeric is implied to be true. + The default is false. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#digits}. + @attr name android:digits + */ + public static final int TextView_digits = 41; + /** +

+ @attr description + The drawable to be drawn below the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableBottom}. + @attr name android:drawableBottom + */ + public static final int TextView_drawableBottom = 49; + /** +

+ @attr description + The drawable to be drawn to the end of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableEnd}. + @attr name android:drawableEnd + */ + public static final int TextView_drawableEnd = 74; + /** +

+ @attr description + The drawable to be drawn to the left of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableLeft}. + @attr name android:drawableLeft + */ + public static final int TextView_drawableLeft = 50; + /** +

+ @attr description + The padding between the drawables and the text. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawablePadding}. + @attr name android:drawablePadding + */ + public static final int TextView_drawablePadding = 52; + /** +

+ @attr description + The drawable to be drawn to the right of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableRight}. + @attr name android:drawableRight + */ + public static final int TextView_drawableRight = 51; + /** +

+ @attr description + The drawable to be drawn to the start of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableStart}. + @attr name android:drawableStart + */ + public static final int TextView_drawableStart = 73; + /** +

+ @attr description + The drawable to be drawn above the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableTop}. + @attr name android:drawableTop + */ + public static final int TextView_drawableTop = 48; + /** +

+ @attr description + If set, specifies that this TextView has an input method. + It will be a textual one unless it has otherwise been specified. + For TextView, this is false by default. For EditText, it is + true by default. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editable}. + @attr name android:editable + */ + @Deprecated + public static final int TextView_editable = 46; + /** +

+ @attr description + Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#extras + EditorInfo.extras} field when the input + method is connected. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editorExtras}. + @attr name android:editorExtras + */ + public static final int TextView_editorExtras = 58; + /** +

+ @attr description + If set, causes words that are longer than the view is wide + to be ellipsized instead of broken in the middle. + You will often also want to set scrollHorizontally or singleLine + as well so that the text as a whole is also constrained to + a single line instead of still allowed to be broken onto + multiple lines. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
none0
start1
middle2
end3
marquee4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ellipsize}. + @attr name android:ellipsize + */ + public static final int TextView_ellipsize = 9; + /** +

+ @attr description + Makes the TextView be exactly this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ems}. + @attr name android:ems + */ + public static final int TextView_ems = 27; + /** +

+ @attr description + Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass. + For example, a non-enabled EditText prevents the user from editing the contained text, and + a non-enabled Button prevents the user from tapping the button. + The appearance of enabled and non-enabled widgets may differ, if the drawables referenced + from evaluating state_enabled differ. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int TextView_enabled = 0; + /** +

+ @attr description + Font family (named by string) for the text. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fontFamily}. + @attr name android:fontFamily + */ + public static final int TextView_fontFamily = 75; + /** +

+ @attr description + If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position. By default this is disabled; + it can be useful when the contents of a text view is not stored + in a persistent place such as a content provider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#freezesText}. + @attr name android:freezesText + */ + public static final int TextView_freezesText = 47; + /** +

+ @attr description + Specifies how to align the text by the view's x- and/or y-axis + when the text is smaller than the view. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int TextView_gravity = 10; + /** +

+ @attr description + Makes the TextView be exactly this many pixels tall. + You could get the same effect by specifying this number in the + layout parameters. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int TextView_height = 24; + /** +

+ @attr description + Hint text to display when the text is empty. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hint}. + @attr name android:hint + */ + public static final int TextView_hint = 19; + /** +

+ @attr description + Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeActionId}. + @attr name android:imeActionId + */ + public static final int TextView_imeActionId = 61; + /** +

+ @attr description + Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeActionLabel}. + @attr name android:imeActionLabel + */ + public static final int TextView_imeActionLabel = 60; + /** +

+ @attr description + Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int TextView_imeOptions = 59; + /** +

+ @attr description + Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly. (Normally true). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#includeFontPadding}. + @attr name android:includeFontPadding + */ + public static final int TextView_includeFontPadding = 34; + /** +

+ @attr description + If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name). + {@deprecated Use inputType instead.} + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputMethod}. + @attr name android:inputMethod + */ + @Deprecated + public static final int TextView_inputMethod = 43; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int TextView_inputType = 56; + /** +

+ @attr description + Extra spacing between lines of text. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lineSpacingExtra}. + @attr name android:lineSpacingExtra + */ + public static final int TextView_lineSpacingExtra = 53; + /** +

+ @attr description + Extra spacing between lines of text, as a multiplier. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lineSpacingMultiplier}. + @attr name android:lineSpacingMultiplier + */ + public static final int TextView_lineSpacingMultiplier = 54; + /** +

+ @attr description + Makes the TextView be exactly this many lines tall. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lines}. + @attr name android:lines + */ + public static final int TextView_lines = 23; + /** +

+ @attr description + If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#linksClickable}. + @attr name android:linksClickable + */ + public static final int TextView_linksClickable = 12; + /** +

+ @attr description + The number of times to repeat the marquee animation. Only applied if the + TextView has marquee enabled. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
marquee_forever-1 Indicates that marquee should repeat indefinitely.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#marqueeRepeatLimit}. + @attr name android:marqueeRepeatLimit + */ + public static final int TextView_marqueeRepeatLimit = 55; + /** +

+ @attr description + Makes the TextView be at most this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxEms}. + @attr name android:maxEms + */ + public static final int TextView_maxEms = 26; + /** +

+ @attr description + Makes the TextView be at most this many pixels tall. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int TextView_maxHeight = 14; + /** +

+ @attr description + Set an input filter to constrain the text length to the + specified number. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLength}. + @attr name android:maxLength + */ + public static final int TextView_maxLength = 35; + /** +

+ @attr description + Makes the TextView be at most this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the maxLines attribute to apply. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLines}. + @attr name android:maxLines + */ + public static final int TextView_maxLines = 22; + /** +

+ @attr description + Makes the TextView be at most this many pixels wide. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int TextView_maxWidth = 13; + /** +

+ @attr description + Makes the TextView be at least this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minEms}. + @attr name android:minEms + */ + public static final int TextView_minEms = 29; + /** +

+ @attr description + Makes the TextView be at least this many pixels tall. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int TextView_minHeight = 16; + /** +

+ @attr description + Makes the TextView be at least this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the minLines attribute to apply. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minLines}. + @attr name android:minLines + */ + public static final int TextView_minLines = 25; + /** +

+ @attr description + Makes the TextView be at least this many pixels wide. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int TextView_minWidth = 15; + /** +

+ @attr description + If set, specifies that this TextView has a numeric input method. + The default is false. + {@deprecated Use inputType instead.} + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
integer0x01 Input is numeric.
signed0x03 Input is numeric, with sign allowed.
decimal0x05 Input is numeric, with decimals allowed.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#numeric}. + @attr name android:numeric + */ + @Deprecated + public static final int TextView_numeric = 40; + /** +

+ @attr description + Whether the characters of the field are displayed as + password dots instead of themselves. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#password}. + @attr name android:password + */ + @Deprecated + public static final int TextView_password = 31; + /** +

+ @attr description + If set, specifies that this TextView has a phone number input + method. The default is false. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#phoneNumber}. + @attr name android:phoneNumber + */ + @Deprecated + public static final int TextView_phoneNumber = 42; + /** +

+ @attr description + An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#privateImeOptions + EditorInfo.privateImeOptions} field when the input + method is connected. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#privateImeOptions}. + @attr name android:privateImeOptions + */ + public static final int TextView_privateImeOptions = 57; + /** +

+ @attr description + Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollHorizontally}. + @attr name android:scrollHorizontally + */ + public static final int TextView_scrollHorizontally = 30; + /** +

+ @attr description + If the text is selectable, select it all when the view takes + focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectAllOnFocus}. + @attr name android:selectAllOnFocus + */ + public static final int TextView_selectAllOnFocus = 33; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int TextView_shadowColor = 36; + /** +

+ @attr description + Horizontal offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDx}. + @attr name android:shadowDx + */ + public static final int TextView_shadowDx = 37; + /** +

+ @attr description + Vertical offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDy}. + @attr name android:shadowDy + */ + public static final int TextView_shadowDy = 38; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int TextView_shadowRadius = 39; + /** +

+ @attr description + Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key. + + The default value is false (multi-line wrapped text mode) for non-editable text, but if + you specify any value for inputType, the default is true (single-line input field mode). + + {@deprecated This attribute is deprecated. Use maxLines instead to change + the layout of a static text, and use the textMultiLine flag in the + inputType attribute instead for editable text views (if both singleLine and inputType + are supplied, the inputType flags will override the value of singleLine). } + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleLine}. + @attr name android:singleLine + */ + @Deprecated + public static final int TextView_singleLine = 32; + /** +

+ @attr description + Text to display. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#text}. + @attr name android:text + */ + public static final int TextView_text = 18; + /** +

+ @attr description + Present the text in ALL CAPS. This may use a small-caps form when available. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAllCaps}. + @attr name android:textAllCaps + */ + public static final int TextView_textAllCaps = 72; + /** +

+ @attr description + Base text color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int TextView_textAppearance = 1; + /** +

+ @attr description + Text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int TextView_textColor = 5; + /** +

+ @attr description + Color of the text selection highlight. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlight}. + @attr name android:textColorHighlight + */ + public static final int TextView_textColorHighlight = 6; + /** +

+ @attr description + Color of the hint text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHint}. + @attr name android:textColorHint + */ + public static final int TextView_textColorHint = 7; + /** +

+ @attr description + Text color for links. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLink}. + @attr name android:textColorLink + */ + public static final int TextView_textColorLink = 8; + /** +

+ @attr description + Reference to a drawable that will be drawn under the insertion cursor. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textCursorDrawable}. + @attr name android:textCursorDrawable + */ + public static final int TextView_textCursorDrawable = 70; + /** +

+ @attr description + Variation of textEditPasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditNoPasteWindowLayout}. + @attr name android:textEditNoPasteWindowLayout + */ + public static final int TextView_textEditNoPasteWindowLayout = 66; + /** +

+ @attr description + The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditPasteWindowLayout}. + @attr name android:textEditPasteWindowLayout + */ + public static final int TextView_textEditPasteWindowLayout = 65; + /** +

+ @attr description + Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSideNoPasteWindowLayout}. + @attr name android:textEditSideNoPasteWindowLayout + */ + public static final int TextView_textEditSideNoPasteWindowLayout = 69; + /** +

+ @attr description + Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSidePasteWindowLayout}. + @attr name android:textEditSidePasteWindowLayout + */ + public static final int TextView_textEditSidePasteWindowLayout = 68; + /** +

+ @attr description + Layout of the TextView item that will populate the suggestion popup window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSuggestionItemLayout}. + @attr name android:textEditSuggestionItemLayout + */ + public static final int TextView_textEditSuggestionItemLayout = 71; + /** +

+ @attr description + Indicates that the content of a non-editable text can be selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textIsSelectable}. + @attr name android:textIsSelectable + */ + public static final int TextView_textIsSelectable = 67; + /** +

+ @attr description + Sets the horizontal scaling factor for the text. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textScaleX}. + @attr name android:textScaleX + */ + public static final int TextView_textScaleX = 20; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandle}. + @attr name android:textSelectHandle + */ + public static final int TextView_textSelectHandle = 64; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleLeft}. + @attr name android:textSelectHandleLeft + */ + public static final int TextView_textSelectHandleLeft = 62; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleRight}. + @attr name android:textSelectHandleRight + */ + public static final int TextView_textSelectHandleRight = 63; + /** +

+ @attr description + Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSize}. + @attr name android:textSize + */ + public static final int TextView_textSize = 2; + /** +

+ @attr description + Style (bold, italic, bolditalic) for the text. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textStyle}. + @attr name android:textStyle + */ + public static final int TextView_textStyle = 4; + /** +

+ @attr description + Typeface (normal, sans, serif, monospace) for the text. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#typeface}. + @attr name android:typeface + */ + public static final int TextView_typeface = 3; + /** +

+ @attr description + Makes the TextView be exactly this many pixels wide. + You could get the same effect by specifying this number in the + layout parameters. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int TextView_width = 28; + /** Attributes that can be used with a TextViewAppearance. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextViewAppearance_textAppearance android:textAppearance} Base text color, typeface, size, and style.
+ @see #TextViewAppearance_textAppearance + */ + public static final int[] TextViewAppearance = { + 0x01010034 + }; + /** +

+ @attr description + Base text color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int TextViewAppearance_textAppearance = 0; + /** Attributes that can be used with a TextViewMultiLineBackgroundState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextViewMultiLineBackgroundState_state_multiline android:state_multiline} State identifier indicating a TextView has a multi-line layout.
+ @see #TextViewMultiLineBackgroundState_state_multiline + */ + public static final int[] TextViewMultiLineBackgroundState = { + 0x0101034d + }; + /** +

+ @attr description + State identifier indicating a TextView has a multi-line layout. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_multiline}. + @attr name android:state_multiline + */ + public static final int TextViewMultiLineBackgroundState_state_multiline = 0; + /** These are the standard attributes that make up a complete theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Theme_absListViewStyle android:absListViewStyle} Default AbsListView style.
{@link #Theme_actionBarDivider android:actionBarDivider} Custom divider drawable to use for elements in the action bar.
{@link #Theme_actionBarItemBackground android:actionBarItemBackground} Custom item state list drawable background for action bar items.
{@link #Theme_actionBarSize android:actionBarSize} Size of the Action Bar, including the contextual + bar used to present Action Modes.
{@link #Theme_actionBarSplitStyle android:actionBarSplitStyle} Reference to a style for the split Action Bar.
{@link #Theme_actionBarStyle android:actionBarStyle} Reference to a style for the Action Bar
{@link #Theme_actionBarTabBarStyle android:actionBarTabBarStyle}
{@link #Theme_actionBarTabStyle android:actionBarTabStyle} Default style for tabs within an action bar
{@link #Theme_actionBarTabTextStyle android:actionBarTabTextStyle}
{@link #Theme_actionBarWidgetTheme android:actionBarWidgetTheme} Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar.
{@link #Theme_actionButtonStyle android:actionButtonStyle} Default action button style.
{@link #Theme_actionDropDownStyle android:actionDropDownStyle} Default ActionBar dropdown style.
{@link #Theme_actionMenuTextAppearance android:actionMenuTextAppearance} TextAppearance style that will be applied to text that + appears within action menu items.
{@link #Theme_actionMenuTextColor android:actionMenuTextColor} Color for text that appears within action menu items.
{@link #Theme_actionModeBackground android:actionModeBackground} Background drawable to use for action mode UI
{@link #Theme_actionModeCloseButtonStyle android:actionModeCloseButtonStyle}
{@link #Theme_actionModeCloseDrawable android:actionModeCloseDrawable} Drawable to use for the close action mode button
{@link #Theme_actionModeCopyDrawable android:actionModeCopyDrawable} Drawable to use for the Copy action button in Contextual Action Bar
{@link #Theme_actionModeCutDrawable android:actionModeCutDrawable} Drawable to use for the Cut action button in Contextual Action Bar
{@link #Theme_actionModePasteDrawable android:actionModePasteDrawable} Drawable to use for the Paste action button in Contextual Action Bar
{@link #Theme_actionModeSelectAllDrawable android:actionModeSelectAllDrawable} Drawable to use for the Select all action button in Contextual Action Bar
{@link #Theme_actionModeSplitBackground android:actionModeSplitBackground} Background drawable to use for action mode UI in the lower split bar
{@link #Theme_actionModeStyle android:actionModeStyle}
{@link #Theme_actionOverflowButtonStyle android:actionOverflowButtonStyle}
{@link #Theme_activatedBackgroundIndicator android:activatedBackgroundIndicator} Drawable used as a background for activated items.
{@link #Theme_alertDialogIcon android:alertDialogIcon} Icon drawable to use for alerts
{@link #Theme_alertDialogStyle android:alertDialogStyle}
{@link #Theme_alertDialogTheme android:alertDialogTheme} Theme to use for alert dialogs spawned from this theme.
{@link #Theme_autoCompleteTextViewStyle android:autoCompleteTextViewStyle} Default AutoCompleteTextView style.
{@link #Theme_backgroundDimAmount android:backgroundDimAmount} Default background dim amount when a menu, dialog, or something similar pops up.
{@link #Theme_backgroundDimEnabled android:backgroundDimEnabled} Control whether dimming behind the window is enabled.
{@link #Theme_borderlessButtonStyle android:borderlessButtonStyle} Style for buttons without an explicit border, often used in groups.
{@link #Theme_buttonBarButtonStyle android:buttonBarButtonStyle} Style for buttons within button bars
{@link #Theme_buttonBarStyle android:buttonBarStyle} Style for button bars
{@link #Theme_buttonStyle android:buttonStyle} Normal Button style.
{@link #Theme_buttonStyleInset android:buttonStyleInset} Button style to inset into an EditText.
{@link #Theme_buttonStyleSmall android:buttonStyleSmall} Small Button style.
{@link #Theme_buttonStyleToggle android:buttonStyleToggle} ToggleButton style.
{@link #Theme_calendarViewStyle android:calendarViewStyle} The CalendarView style.
{@link #Theme_candidatesTextStyleSpans android:candidatesTextStyleSpans} A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method.
{@link #Theme_checkBoxPreferenceStyle android:checkBoxPreferenceStyle} Default style for CheckBoxPreference.
{@link #Theme_checkboxStyle android:checkboxStyle} Default Checkbox style.
{@link #Theme_checkedTextViewStyle android:checkedTextViewStyle} Default CheckedTextView style.
{@link #Theme_colorActivatedHighlight android:colorActivatedHighlight} Default highlight color for items that are + activated.
{@link #Theme_colorBackground android:colorBackground} Color that matches (as closely as possible) the window background.
{@link #Theme_colorBackgroundCacheHint android:colorBackgroundCacheHint} This is a hint for a solid color that can be used for caching + rendered views.
{@link #Theme_colorFocusedHighlight android:colorFocusedHighlight} Default highlight color for items that are + focused.
{@link #Theme_colorForeground android:colorForeground} Default color of foreground imagery.
{@link #Theme_colorForegroundInverse android:colorForegroundInverse} Default color of foreground imagery on an inverted background.
{@link #Theme_colorLongPressedHighlight android:colorLongPressedHighlight} Default highlight color for items that are long-pressed.
{@link #Theme_colorMultiSelectHighlight android:colorMultiSelectHighlight} Default highlight color for items in multiple selection + mode.
{@link #Theme_colorPressedHighlight android:colorPressedHighlight} Default highlight color for items that are pressed.
{@link #Theme_datePickerStyle android:datePickerStyle} The DatePicker style.
{@link #Theme_detailsElementBackground android:detailsElementBackground} Background that can be used behind parts of a UI that provide + details on data the user is selecting.
{@link #Theme_dialogPreferenceStyle android:dialogPreferenceStyle} Default style for DialogPreference.
{@link #Theme_dialogTheme android:dialogTheme} Theme to use for dialogs spawned from this theme.
{@link #Theme_disabledAlpha android:disabledAlpha} Default disabled alpha for widgets that set enabled/disabled alpha programmatically.
{@link #Theme_dividerHorizontal android:dividerHorizontal} Drawable to use for generic horizontal dividers.
{@link #Theme_dividerVertical android:dividerVertical} Drawable to use for generic vertical dividers.
{@link #Theme_dropDownHintAppearance android:dropDownHintAppearance} Default style for drop down hints.
{@link #Theme_dropDownItemStyle android:dropDownItemStyle} Default style for drop down items.
{@link #Theme_dropDownListViewStyle android:dropDownListViewStyle} Default ListView style for drop downs.
{@link #Theme_dropDownSpinnerStyle android:dropDownSpinnerStyle} Default dropdown Spinner style.
{@link #Theme_editTextBackground android:editTextBackground} EditText background drawable.
{@link #Theme_editTextColor android:editTextColor} EditText text foreground color.
{@link #Theme_editTextPreferenceStyle android:editTextPreferenceStyle} Default style for EditTextPreference.
{@link #Theme_editTextStyle android:editTextStyle} Default EditText style.
{@link #Theme_expandableListPreferredChildIndicatorLeft android:expandableListPreferredChildIndicatorLeft} The preferred left bound for an expandable list child's indicator.
{@link #Theme_expandableListPreferredChildIndicatorRight android:expandableListPreferredChildIndicatorRight} The preferred right bound for an expandable list child's indicator.
{@link #Theme_expandableListPreferredChildPaddingLeft android:expandableListPreferredChildPaddingLeft} The preferred left padding for an expandable list item that is a child.
{@link #Theme_expandableListPreferredItemIndicatorLeft android:expandableListPreferredItemIndicatorLeft} The preferred left bound for an expandable list item's indicator.
{@link #Theme_expandableListPreferredItemIndicatorRight android:expandableListPreferredItemIndicatorRight} The preferred right bound for an expandable list item's indicator.
{@link #Theme_expandableListPreferredItemPaddingLeft android:expandableListPreferredItemPaddingLeft} The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft).
{@link #Theme_expandableListViewStyle android:expandableListViewStyle} Default ExpandableListView style.
{@link #Theme_expandableListViewWhiteStyle android:expandableListViewWhiteStyle} ExpandableListView with white background.
{@link #Theme_fastScrollOverlayPosition android:fastScrollOverlayPosition} Position of the fast scroll index overlay window.
{@link #Theme_fastScrollPreviewBackgroundLeft android:fastScrollPreviewBackgroundLeft} Drawable to use as the fast scroll index preview window background + when shown on the left.
{@link #Theme_fastScrollPreviewBackgroundRight android:fastScrollPreviewBackgroundRight} Drawable to use as the fast scroll index preview window background + when shown on the right.
{@link #Theme_fastScrollTextColor android:fastScrollTextColor} Text color for the fast scroll index overlay.
{@link #Theme_fastScrollThumbDrawable android:fastScrollThumbDrawable} Drawable to use as the fast scroll thumb.
{@link #Theme_fastScrollTrackDrawable android:fastScrollTrackDrawable} Drawable to use as the track for the fast scroll thumb.
{@link #Theme_galleryItemBackground android:galleryItemBackground} The preferred background for gallery items.
{@link #Theme_galleryStyle android:galleryStyle} Default Gallery style.
{@link #Theme_gridViewStyle android:gridViewStyle} Default GridView style.
{@link #Theme_homeAsUpIndicator android:homeAsUpIndicator} Specifies a drawable to use for the 'home as up' indicator.
{@link #Theme_horizontalScrollViewStyle android:horizontalScrollViewStyle} Default HorizontalScrollView style.
{@link #Theme_imageButtonStyle android:imageButtonStyle} The style resource to use for an ImageButton.
{@link #Theme_imageWellStyle android:imageWellStyle} The style resource to use for an ImageButton that is an image well.
{@link #Theme_listChoiceBackgroundIndicator android:listChoiceBackgroundIndicator} Drawable used as a background for selected list items.
{@link #Theme_listChoiceIndicatorMultiple android:listChoiceIndicatorMultiple} Drawable to use for multiple choice indicators.
{@link #Theme_listChoiceIndicatorSingle android:listChoiceIndicatorSingle} Drawable to use for single choice indicators.
{@link #Theme_listDivider android:listDivider} The drawable for the list divider.
{@link #Theme_listDividerAlertDialog android:listDividerAlertDialog} The list divider used in alert dialogs.
{@link #Theme_listPopupWindowStyle android:listPopupWindowStyle} Default ListPopupWindow style.
{@link #Theme_listPreferredItemHeight android:listPreferredItemHeight} The preferred list item height.
{@link #Theme_listPreferredItemHeightLarge android:listPreferredItemHeightLarge} A larger, more robust list item height.
{@link #Theme_listPreferredItemHeightSmall android:listPreferredItemHeightSmall} A smaller, sleeker list item height.
{@link #Theme_listPreferredItemPaddingEnd android:listPreferredItemPaddingEnd} The preferred padding along the end edge of list items.
{@link #Theme_listPreferredItemPaddingLeft android:listPreferredItemPaddingLeft} The preferred padding along the left edge of list items.
{@link #Theme_listPreferredItemPaddingRight android:listPreferredItemPaddingRight} The preferred padding along the right edge of list items.
{@link #Theme_listPreferredItemPaddingStart android:listPreferredItemPaddingStart} The preferred padding along the start edge of list items.
{@link #Theme_listSeparatorTextViewStyle android:listSeparatorTextViewStyle} TextView style for list separators.
{@link #Theme_listViewStyle android:listViewStyle} Default ListView style.
{@link #Theme_listViewWhiteStyle android:listViewWhiteStyle} ListView with white background.
{@link #Theme_mapViewStyle android:mapViewStyle} Default MapView style.
{@link #Theme_mediaRouteButtonStyle android:mediaRouteButtonStyle} Default style for the MediaRouteButton widget.
{@link #Theme_panelBackground android:panelBackground} The background of a panel when it is inset from the left and right edges of the screen.
{@link #Theme_panelColorBackground android:panelColorBackground} Color that matches (as closely as possible) the panel background.
{@link #Theme_panelColorForeground android:panelColorForeground} Default color of foreground panel imagery.
{@link #Theme_panelFullBackground android:panelFullBackground} The background of a panel when it extends to the left and right edges of the screen.
{@link #Theme_panelTextAppearance android:panelTextAppearance} Default appearance of panel text.
{@link #Theme_popupMenuStyle android:popupMenuStyle} Default PopupMenu style.
{@link #Theme_popupWindowStyle android:popupWindowStyle} Default PopupWindow style.
{@link #Theme_preferenceCategoryStyle android:preferenceCategoryStyle} Default style for PreferenceCategory.
{@link #Theme_preferenceInformationStyle android:preferenceInformationStyle} Default style for informational Preference.
{@link #Theme_preferenceLayoutChild android:preferenceLayoutChild} The preference layout that has the child/tabbed effect.
{@link #Theme_preferenceScreenStyle android:preferenceScreenStyle} Default style for PreferenceScreen.
{@link #Theme_preferenceStyle android:preferenceStyle} Default style for Preference.
{@link #Theme_presentationTheme android:presentationTheme} Theme to use for presentations spawned from this theme.
{@link #Theme_progressBarStyle android:progressBarStyle} Default ProgressBar style.
{@link #Theme_progressBarStyleHorizontal android:progressBarStyleHorizontal} Horizontal ProgressBar style.
{@link #Theme_progressBarStyleInverse android:progressBarStyleInverse} Inverse ProgressBar style.
{@link #Theme_progressBarStyleLarge android:progressBarStyleLarge} Large ProgressBar style.
{@link #Theme_progressBarStyleLargeInverse android:progressBarStyleLargeInverse} Large inverse ProgressBar style.
{@link #Theme_progressBarStyleSmall android:progressBarStyleSmall} Small ProgressBar style.
{@link #Theme_progressBarStyleSmallInverse android:progressBarStyleSmallInverse} Small inverse ProgressBar style.
{@link #Theme_progressBarStyleSmallTitle android:progressBarStyleSmallTitle} Small ProgressBar in title style.
{@link #Theme_quickContactBadgeStyleSmallWindowLarge android:quickContactBadgeStyleSmallWindowLarge} Default quickcontact badge style with large quickcontact window.
{@link #Theme_quickContactBadgeStyleSmallWindowMedium android:quickContactBadgeStyleSmallWindowMedium} Default quickcontact badge style with medium quickcontact window.
{@link #Theme_quickContactBadgeStyleSmallWindowSmall android:quickContactBadgeStyleSmallWindowSmall} Default quickcontact badge style with small quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowLarge android:quickContactBadgeStyleWindowLarge} Default quickcontact badge style with large quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowMedium android:quickContactBadgeStyleWindowMedium} Default quickcontact badge style with medium quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowSmall android:quickContactBadgeStyleWindowSmall} Default quickcontact badge style with small quickcontact window.
{@link #Theme_radioButtonStyle android:radioButtonStyle} Default RadioButton style.
{@link #Theme_ratingBarStyle android:ratingBarStyle} Default RatingBar style.
{@link #Theme_ratingBarStyleIndicator android:ratingBarStyleIndicator} Indicator RatingBar style.
{@link #Theme_ratingBarStyleSmall android:ratingBarStyleSmall} Small indicator RatingBar style.
{@link #Theme_ringtonePreferenceStyle android:ringtonePreferenceStyle} Default style for RingtonePreference.
{@link #Theme_scrollViewStyle android:scrollViewStyle} Default ScrollView style.
{@link #Theme_seekBarStyle android:seekBarStyle} Default SeekBar style.
{@link #Theme_segmentedButtonStyle android:segmentedButtonStyle} Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments.
{@link #Theme_selectableItemBackground android:selectableItemBackground} Background drawable for standalone items that need focus/pressed states.
{@link #Theme_spinnerDropDownItemStyle android:spinnerDropDownItemStyle} Default style for spinner drop down items.
{@link #Theme_spinnerItemStyle android:spinnerItemStyle} Default spinner item style.
{@link #Theme_spinnerStyle android:spinnerStyle} Default Spinner style.
{@link #Theme_starStyle android:starStyle} Default Star style.
{@link #Theme_switchPreferenceStyle android:switchPreferenceStyle} Default style for switch preferences.
{@link #Theme_tabWidgetStyle android:tabWidgetStyle} Default TabWidget style.
{@link #Theme_textAppearance android:textAppearance} Default appearance of text: color, typeface, size, and style.
{@link #Theme_textAppearanceButton android:textAppearanceButton} Text color, typeface, size, and style for the text inside of a button.
{@link #Theme_textAppearanceInverse android:textAppearanceInverse} Default appearance of text against an inverted background: + color, typeface, size, and style.
{@link #Theme_textAppearanceLarge android:textAppearanceLarge} Text color, typeface, size, and style for "large" text.
{@link #Theme_textAppearanceLargeInverse android:textAppearanceLargeInverse} Text color, typeface, size, and style for "large" inverse text.
{@link #Theme_textAppearanceLargePopupMenu android:textAppearanceLargePopupMenu} Text color, typeface, size, and style for the text inside of a popup menu.
{@link #Theme_textAppearanceListItem android:textAppearanceListItem} The preferred TextAppearance for the primary text of list items.
{@link #Theme_textAppearanceListItemSmall android:textAppearanceListItemSmall} The preferred TextAppearance for the primary text of small list items.
{@link #Theme_textAppearanceMedium android:textAppearanceMedium} Text color, typeface, size, and style for "medium" text.
{@link #Theme_textAppearanceMediumInverse android:textAppearanceMediumInverse} Text color, typeface, size, and style for "medium" inverse text.
{@link #Theme_textAppearanceSearchResultSubtitle android:textAppearanceSearchResultSubtitle} Text color, typeface, size, and style for system search result subtitle.
{@link #Theme_textAppearanceSearchResultTitle android:textAppearanceSearchResultTitle} Text color, typeface, size, and style for system search result title.
{@link #Theme_textAppearanceSmall android:textAppearanceSmall} Text color, typeface, size, and style for "small" text.
{@link #Theme_textAppearanceSmallInverse android:textAppearanceSmallInverse} Text color, typeface, size, and style for "small" inverse text.
{@link #Theme_textAppearanceSmallPopupMenu android:textAppearanceSmallPopupMenu} Text color, typeface, size, and style for small text inside of a popup menu.
{@link #Theme_textCheckMark android:textCheckMark} Drawable to use for check marks.
{@link #Theme_textCheckMarkInverse android:textCheckMarkInverse}
{@link #Theme_textColorAlertDialogListItem android:textColorAlertDialogListItem} Color of list item text in alert dialogs.
{@link #Theme_textColorHighlightInverse android:textColorHighlightInverse} Color of highlighted text, when used in a light theme.
{@link #Theme_textColorHintInverse android:textColorHintInverse} Inverse hint text color.
{@link #Theme_textColorLinkInverse android:textColorLinkInverse} Color of link text (URLs), when used in a light theme.
{@link #Theme_textColorPrimary android:textColorPrimary} The most prominent text color.
{@link #Theme_textColorPrimaryDisableOnly android:textColorPrimaryDisableOnly} Bright text color.
{@link #Theme_textColorPrimaryInverse android:textColorPrimaryInverse} Primary inverse text color, useful for inverted backgrounds.
{@link #Theme_textColorPrimaryInverseDisableOnly android:textColorPrimaryInverseDisableOnly} Bright inverse text color.
{@link #Theme_textColorPrimaryInverseNoDisable android:textColorPrimaryInverseNoDisable} Bright inverse text color.
{@link #Theme_textColorPrimaryNoDisable android:textColorPrimaryNoDisable} Bright text color.
{@link #Theme_textColorSecondary android:textColorSecondary} Secondary text color.
{@link #Theme_textColorSecondaryInverse android:textColorSecondaryInverse} Secondary inverse text color, useful for inverted backgrounds.
{@link #Theme_textColorSecondaryInverseNoDisable android:textColorSecondaryInverseNoDisable} Dim inverse text color.
{@link #Theme_textColorSecondaryNoDisable android:textColorSecondaryNoDisable} Dim text color.
{@link #Theme_textColorTertiary android:textColorTertiary} Tertiary text color.
{@link #Theme_textColorTertiaryInverse android:textColorTertiaryInverse} Tertiary inverse text color, useful for inverted backgrounds.
{@link #Theme_textEditNoPasteWindowLayout android:textEditNoPasteWindowLayout} Variation of textEditPasteWindowLayout displayed when the clipboard is empty.
{@link #Theme_textEditPasteWindowLayout android:textEditPasteWindowLayout} The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field.
{@link #Theme_textEditSideNoPasteWindowLayout android:textEditSideNoPasteWindowLayout} Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty.
{@link #Theme_textEditSidePasteWindowLayout android:textEditSidePasteWindowLayout} Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top.
{@link #Theme_textEditSuggestionItemLayout android:textEditSuggestionItemLayout} Layout of the TextView item that will populate the suggestion popup window.
{@link #Theme_textSelectHandle android:textSelectHandle} Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text.
{@link #Theme_textSelectHandleLeft android:textSelectHandleLeft} Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region.
{@link #Theme_textSelectHandleRight android:textSelectHandleRight} Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region.
{@link #Theme_textSelectHandleWindowStyle android:textSelectHandleWindowStyle} Reference to a style that will be used for the window containing a text + selection anchor.
{@link #Theme_textSuggestionsWindowStyle android:textSuggestionsWindowStyle} Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText.
{@link #Theme_textViewStyle android:textViewStyle} Default TextView style.
{@link #Theme_webTextViewStyle android:webTextViewStyle} Default WebTextView style.
{@link #Theme_webViewStyle android:webViewStyle} Default WebView style.
{@link #Theme_windowActionBar android:windowActionBar} Flag indicating whether this window should have an Action Bar + in place of the usual title bar.
{@link #Theme_windowActionBarOverlay android:windowActionBarOverlay} Flag indicating whether this window's Action Bar should overlay + application content.
{@link #Theme_windowActionModeOverlay android:windowActionModeOverlay} Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar).
{@link #Theme_windowAnimationStyle android:windowAnimationStyle} Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}.
{@link #Theme_windowBackground android:windowBackground} Drawable to use as the overall window background.
{@link #Theme_windowCloseOnTouchOutside android:windowCloseOnTouchOutside} Control whether a container should automatically close itself if + the user touches outside of it.
{@link #Theme_windowContentOverlay android:windowContentOverlay} This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title.
{@link #Theme_windowDisablePreview android:windowDisablePreview} Flag allowing you to disable the preview animation for a window.
{@link #Theme_windowEnableSplitTouch android:windowEnableSplitTouch} Flag indicating that this window should allow touches to be split + across other windows that also support split touch.
{@link #Theme_windowFrame android:windowFrame} Drawable to use as a frame around the window.
{@link #Theme_windowFullscreen android:windowFullscreen} Flag indicating whether this window should fill the entire screen.
{@link #Theme_windowIsFloating android:windowIsFloating} Flag indicating whether this is a floating window.
{@link #Theme_windowIsTranslucent android:windowIsTranslucent} Flag indicating whether this is a translucent window.
{@link #Theme_windowNoDisplay android:windowNoDisplay} Flag indicating that this window should not be displayed at all.
{@link #Theme_windowNoTitle android:windowNoTitle} Flag indicating whether there should be no title on this window.
{@link #Theme_windowOverscan android:windowOverscan} Flag indicating whether this window should extend into overscan region.
{@link #Theme_windowShowWallpaper android:windowShowWallpaper} Flag indicating that this window's background should be the + user's current wallpaper.
{@link #Theme_windowSoftInputMode android:windowSoftInputMode} Defines the default soft input state that this window would + like when it is displayed.
{@link #Theme_windowTitleBackgroundStyle android:windowTitleBackgroundStyle} The style resource to use for a window's title area.
{@link #Theme_windowTitleSize android:windowTitleSize} The style resource to use for a window's title bar height.
{@link #Theme_windowTitleStyle android:windowTitleStyle} The style resource to use for a window's title text.
{@link #Theme_windowTranslucentNavigation android:windowTranslucentNavigation} Flag indicating whether this window requests a translucent navigation bar.
{@link #Theme_windowTranslucentStatus android:windowTranslucentStatus} Flag indicating whether this window requests a translucent status bar.
{@link #Theme_yesNoPreferenceStyle android:yesNoPreferenceStyle} Default style for YesNoPreference.
+ @see #Theme_absListViewStyle + @see #Theme_actionBarDivider + @see #Theme_actionBarItemBackground + @see #Theme_actionBarSize + @see #Theme_actionBarSplitStyle + @see #Theme_actionBarStyle + @see #Theme_actionBarTabBarStyle + @see #Theme_actionBarTabStyle + @see #Theme_actionBarTabTextStyle + @see #Theme_actionBarWidgetTheme + @see #Theme_actionButtonStyle + @see #Theme_actionDropDownStyle + @see #Theme_actionMenuTextAppearance + @see #Theme_actionMenuTextColor + @see #Theme_actionModeBackground + @see #Theme_actionModeCloseButtonStyle + @see #Theme_actionModeCloseDrawable + @see #Theme_actionModeCopyDrawable + @see #Theme_actionModeCutDrawable + @see #Theme_actionModePasteDrawable + @see #Theme_actionModeSelectAllDrawable + @see #Theme_actionModeSplitBackground + @see #Theme_actionModeStyle + @see #Theme_actionOverflowButtonStyle + @see #Theme_activatedBackgroundIndicator + @see #Theme_alertDialogIcon + @see #Theme_alertDialogStyle + @see #Theme_alertDialogTheme + @see #Theme_autoCompleteTextViewStyle + @see #Theme_backgroundDimAmount + @see #Theme_backgroundDimEnabled + @see #Theme_borderlessButtonStyle + @see #Theme_buttonBarButtonStyle + @see #Theme_buttonBarStyle + @see #Theme_buttonStyle + @see #Theme_buttonStyleInset + @see #Theme_buttonStyleSmall + @see #Theme_buttonStyleToggle + @see #Theme_calendarViewStyle + @see #Theme_candidatesTextStyleSpans + @see #Theme_checkBoxPreferenceStyle + @see #Theme_checkboxStyle + @see #Theme_checkedTextViewStyle + @see #Theme_colorActivatedHighlight + @see #Theme_colorBackground + @see #Theme_colorBackgroundCacheHint + @see #Theme_colorFocusedHighlight + @see #Theme_colorForeground + @see #Theme_colorForegroundInverse + @see #Theme_colorLongPressedHighlight + @see #Theme_colorMultiSelectHighlight + @see #Theme_colorPressedHighlight + @see #Theme_datePickerStyle + @see #Theme_detailsElementBackground + @see #Theme_dialogPreferenceStyle + @see #Theme_dialogTheme + @see #Theme_disabledAlpha + @see #Theme_dividerHorizontal + @see #Theme_dividerVertical + @see #Theme_dropDownHintAppearance + @see #Theme_dropDownItemStyle + @see #Theme_dropDownListViewStyle + @see #Theme_dropDownSpinnerStyle + @see #Theme_editTextBackground + @see #Theme_editTextColor + @see #Theme_editTextPreferenceStyle + @see #Theme_editTextStyle + @see #Theme_expandableListPreferredChildIndicatorLeft + @see #Theme_expandableListPreferredChildIndicatorRight + @see #Theme_expandableListPreferredChildPaddingLeft + @see #Theme_expandableListPreferredItemIndicatorLeft + @see #Theme_expandableListPreferredItemIndicatorRight + @see #Theme_expandableListPreferredItemPaddingLeft + @see #Theme_expandableListViewStyle + @see #Theme_expandableListViewWhiteStyle + @see #Theme_fastScrollOverlayPosition + @see #Theme_fastScrollPreviewBackgroundLeft + @see #Theme_fastScrollPreviewBackgroundRight + @see #Theme_fastScrollTextColor + @see #Theme_fastScrollThumbDrawable + @see #Theme_fastScrollTrackDrawable + @see #Theme_galleryItemBackground + @see #Theme_galleryStyle + @see #Theme_gridViewStyle + @see #Theme_homeAsUpIndicator + @see #Theme_horizontalScrollViewStyle + @see #Theme_imageButtonStyle + @see #Theme_imageWellStyle + @see #Theme_listChoiceBackgroundIndicator + @see #Theme_listChoiceIndicatorMultiple + @see #Theme_listChoiceIndicatorSingle + @see #Theme_listDivider + @see #Theme_listDividerAlertDialog + @see #Theme_listPopupWindowStyle + @see #Theme_listPreferredItemHeight + @see #Theme_listPreferredItemHeightLarge + @see #Theme_listPreferredItemHeightSmall + @see #Theme_listPreferredItemPaddingEnd + @see #Theme_listPreferredItemPaddingLeft + @see #Theme_listPreferredItemPaddingRight + @see #Theme_listPreferredItemPaddingStart + @see #Theme_listSeparatorTextViewStyle + @see #Theme_listViewStyle + @see #Theme_listViewWhiteStyle + @see #Theme_mapViewStyle + @see #Theme_mediaRouteButtonStyle + @see #Theme_panelBackground + @see #Theme_panelColorBackground + @see #Theme_panelColorForeground + @see #Theme_panelFullBackground + @see #Theme_panelTextAppearance + @see #Theme_popupMenuStyle + @see #Theme_popupWindowStyle + @see #Theme_preferenceCategoryStyle + @see #Theme_preferenceInformationStyle + @see #Theme_preferenceLayoutChild + @see #Theme_preferenceScreenStyle + @see #Theme_preferenceStyle + @see #Theme_presentationTheme + @see #Theme_progressBarStyle + @see #Theme_progressBarStyleHorizontal + @see #Theme_progressBarStyleInverse + @see #Theme_progressBarStyleLarge + @see #Theme_progressBarStyleLargeInverse + @see #Theme_progressBarStyleSmall + @see #Theme_progressBarStyleSmallInverse + @see #Theme_progressBarStyleSmallTitle + @see #Theme_quickContactBadgeStyleSmallWindowLarge + @see #Theme_quickContactBadgeStyleSmallWindowMedium + @see #Theme_quickContactBadgeStyleSmallWindowSmall + @see #Theme_quickContactBadgeStyleWindowLarge + @see #Theme_quickContactBadgeStyleWindowMedium + @see #Theme_quickContactBadgeStyleWindowSmall + @see #Theme_radioButtonStyle + @see #Theme_ratingBarStyle + @see #Theme_ratingBarStyleIndicator + @see #Theme_ratingBarStyleSmall + @see #Theme_ringtonePreferenceStyle + @see #Theme_scrollViewStyle + @see #Theme_seekBarStyle + @see #Theme_segmentedButtonStyle + @see #Theme_selectableItemBackground + @see #Theme_spinnerDropDownItemStyle + @see #Theme_spinnerItemStyle + @see #Theme_spinnerStyle + @see #Theme_starStyle + @see #Theme_switchPreferenceStyle + @see #Theme_tabWidgetStyle + @see #Theme_textAppearance + @see #Theme_textAppearanceButton + @see #Theme_textAppearanceInverse + @see #Theme_textAppearanceLarge + @see #Theme_textAppearanceLargeInverse + @see #Theme_textAppearanceLargePopupMenu + @see #Theme_textAppearanceListItem + @see #Theme_textAppearanceListItemSmall + @see #Theme_textAppearanceMedium + @see #Theme_textAppearanceMediumInverse + @see #Theme_textAppearanceSearchResultSubtitle + @see #Theme_textAppearanceSearchResultTitle + @see #Theme_textAppearanceSmall + @see #Theme_textAppearanceSmallInverse + @see #Theme_textAppearanceSmallPopupMenu + @see #Theme_textCheckMark + @see #Theme_textCheckMarkInverse + @see #Theme_textColorAlertDialogListItem + @see #Theme_textColorHighlightInverse + @see #Theme_textColorHintInverse + @see #Theme_textColorLinkInverse + @see #Theme_textColorPrimary + @see #Theme_textColorPrimaryDisableOnly + @see #Theme_textColorPrimaryInverse + @see #Theme_textColorPrimaryInverseDisableOnly + @see #Theme_textColorPrimaryInverseNoDisable + @see #Theme_textColorPrimaryNoDisable + @see #Theme_textColorSecondary + @see #Theme_textColorSecondaryInverse + @see #Theme_textColorSecondaryInverseNoDisable + @see #Theme_textColorSecondaryNoDisable + @see #Theme_textColorTertiary + @see #Theme_textColorTertiaryInverse + @see #Theme_textEditNoPasteWindowLayout + @see #Theme_textEditPasteWindowLayout + @see #Theme_textEditSideNoPasteWindowLayout + @see #Theme_textEditSidePasteWindowLayout + @see #Theme_textEditSuggestionItemLayout + @see #Theme_textSelectHandle + @see #Theme_textSelectHandleLeft + @see #Theme_textSelectHandleRight + @see #Theme_textSelectHandleWindowStyle + @see #Theme_textSuggestionsWindowStyle + @see #Theme_textViewStyle + @see #Theme_webTextViewStyle + @see #Theme_webViewStyle + @see #Theme_windowActionBar + @see #Theme_windowActionBarOverlay + @see #Theme_windowActionModeOverlay + @see #Theme_windowAnimationStyle + @see #Theme_windowBackground + @see #Theme_windowCloseOnTouchOutside + @see #Theme_windowContentOverlay + @see #Theme_windowDisablePreview + @see #Theme_windowEnableSplitTouch + @see #Theme_windowFrame + @see #Theme_windowFullscreen + @see #Theme_windowIsFloating + @see #Theme_windowIsTranslucent + @see #Theme_windowNoDisplay + @see #Theme_windowNoTitle + @see #Theme_windowOverscan + @see #Theme_windowShowWallpaper + @see #Theme_windowSoftInputMode + @see #Theme_windowTitleBackgroundStyle + @see #Theme_windowTitleSize + @see #Theme_windowTitleStyle + @see #Theme_windowTranslucentNavigation + @see #Theme_windowTranslucentStatus + @see #Theme_yesNoPreferenceStyle + */ + public static final int[] Theme = { + 0x01010030, 0x01010031, 0x01010032, 0x01010033, + 0x01010034, 0x01010035, 0x01010036, 0x01010037, + 0x01010038, 0x01010039, 0x0101003a, 0x0101003b, + 0x0101003c, 0x0101003d, 0x0101003e, 0x0101003f, + 0x01010040, 0x01010041, 0x01010042, 0x01010043, + 0x01010044, 0x01010045, 0x01010046, 0x01010047, + 0x01010048, 0x01010049, 0x0101004a, 0x0101004b, + 0x0101004c, 0x0101004d, 0x0101004e, 0x0101004f, + 0x01010050, 0x01010051, 0x01010052, 0x01010053, + 0x01010054, 0x01010055, 0x01010056, 0x01010057, + 0x01010058, 0x01010059, 0x0101005a, 0x0101005b, + 0x0101005c, 0x0101005d, 0x0101005e, 0x0101005f, + 0x01010060, 0x01010061, 0x01010062, 0x0101006a, + 0x0101006b, 0x0101006c, 0x0101006d, 0x0101006e, + 0x0101006f, 0x01010070, 0x01010071, 0x01010072, + 0x01010073, 0x01010074, 0x01010075, 0x01010076, + 0x01010077, 0x01010078, 0x01010079, 0x0101007a, + 0x0101007b, 0x0101007c, 0x0101007d, 0x0101007e, + 0x01010080, 0x01010081, 0x01010082, 0x01010083, + 0x01010084, 0x01010085, 0x01010086, 0x01010087, + 0x01010088, 0x01010089, 0x0101008a, 0x0101008b, + 0x0101008c, 0x0101008d, 0x0101008e, 0x0101008f, + 0x01010090, 0x01010091, 0x01010092, 0x01010093, + 0x01010094, 0x010100ae, 0x01010206, 0x01010207, + 0x01010208, 0x0101020d, 0x0101020f, 0x01010210, + 0x01010212, 0x01010213, 0x01010214, 0x01010219, + 0x0101021a, 0x0101021e, 0x0101021f, 0x01010222, + 0x0101022b, 0x01010230, 0x01010267, 0x01010287, + 0x01010288, 0x01010289, 0x0101028b, 0x01010292, + 0x010102a0, 0x010102a1, 0x010102ab, 0x010102ae, + 0x010102af, 0x010102b0, 0x010102b1, 0x010102b2, + 0x010102b3, 0x010102b6, 0x010102b9, 0x010102c5, + 0x010102c6, 0x010102c7, 0x010102c8, 0x010102cd, + 0x010102ce, 0x010102d6, 0x010102d7, 0x010102d8, + 0x010102db, 0x010102dc, 0x010102dd, 0x010102e4, + 0x010102eb, 0x010102f0, 0x010102f3, 0x010102f4, + 0x010102f5, 0x010102f6, 0x010102f7, 0x010102fd, + 0x010102ff, 0x01010300, 0x01010301, 0x01010302, + 0x01010305, 0x01010306, 0x01010308, 0x01010309, + 0x0101030a, 0x0101030b, 0x0101030e, 0x01010311, + 0x01010312, 0x01010313, 0x01010314, 0x01010315, + 0x01010317, 0x0101032b, 0x0101032c, 0x0101032e, + 0x0101032f, 0x01010330, 0x01010336, 0x01010337, + 0x01010338, 0x01010339, 0x0101033a, 0x0101034e, + 0x0101034f, 0x01010350, 0x01010351, 0x01010352, + 0x01010353, 0x01010355, 0x01010359, 0x0101035b, + 0x0101035c, 0x0101035d, 0x0101035e, 0x0101035f, + 0x01010360, 0x01010361, 0x0101036d, 0x01010373, + 0x01010374, 0x0101037e, 0x01010386, 0x01010387, + 0x01010388, 0x0101038d, 0x0101038e, 0x0101038f, + 0x01010390, 0x01010391, 0x01010394, 0x01010397, + 0x0101039b, 0x0101039c, 0x0101039d, 0x0101039e, + 0x0101039f, 0x010103a3, 0x010103a4, 0x010103a8, + 0x010103ad, 0x010103bd, 0x010103be, 0x010103c0, + 0x010103c3, 0x010103c8, 0x010103cf, 0x010103ef, + 0x010103f0, 0x010103f2, 0x010103f3, 0x010103f4, + 0x010103f5, 0x010103f6, 0x010103f7, 0x010103f8, + 0x010103f9, 0x010103fa, 0x010103fb, 0x010103fc, + 0x010103fd, 0x010103fe, 0x010103ff, 0x01010400, + 0x01010401, 0x01010402, 0x01010403, 0x01010404, + 0x01010405, 0x01010406, 0x01010407, 0x01010408, + 0x01010409, 0x0101040a, 0x0101040b, 0x0101040c, + 0x0101040d, 0x0101040e, 0x0101040f, 0x01010410, + 0x01010411, 0x01010412, 0x01010413, 0x01010414, + 0x01010415, 0x01010416, 0x01010417, 0x01010418, + 0x01010419, 0x0101041a, 0x0101041b, 0x0101041c, + 0x0101041d, 0x0101041e, 0x0101041f, 0x01010420, + 0x01010421, 0x01010422, 0x01010423 + }; + /** +

+ @attr description + Default AbsListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#absListViewStyle}. + @attr name android:absListViewStyle + */ + public static final int Theme_absListViewStyle = 51; + /** +

+ @attr description + Custom divider drawable to use for elements in the action bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarDivider}. + @attr name android:actionBarDivider + */ + public static final int Theme_actionBarDivider = 204; + /** +

+ @attr description + Custom item state list drawable background for action bar items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarItemBackground}. + @attr name android:actionBarItemBackground + */ + public static final int Theme_actionBarItemBackground = 205; + /** +

+ @attr description + Size of the Action Bar, including the contextual + bar used to present Action Modes. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
wrap_content0
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarSize}. + @attr name android:actionBarSize + */ + public static final int Theme_actionBarSize = 140; + /** +

+ @attr description + Reference to a style for the split Action Bar. This style + controls the split component that holds the menu/action + buttons. actionBarStyle is still used for the primary + bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarSplitStyle}. + @attr name android:actionBarSplitStyle + */ + public static final int Theme_actionBarSplitStyle = 196; + /** +

+ @attr description + Reference to a style for the Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarStyle}. + @attr name android:actionBarStyle + */ + public static final int Theme_actionBarStyle = 132; + /** +

This symbol is the offset where the {@link android.R.attr#actionBarTabBarStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionBarTabBarStyle + */ + public static final int Theme_actionBarTabBarStyle = 143; + /** +

+ @attr description + Default style for tabs within an action bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarTabStyle}. + @attr name android:actionBarTabStyle + */ + public static final int Theme_actionBarTabStyle = 142; + /** +

This symbol is the offset where the {@link android.R.attr#actionBarTabTextStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionBarTabTextStyle + */ + public static final int Theme_actionBarTabTextStyle = 144; + /** +

+ @attr description + Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar. Most of the time + this will be a reference to the current theme, but when + the action bar has a significantly different contrast + profile than the rest of the activity the difference + can become important. If this is set to @null the current + theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarWidgetTheme}. + @attr name android:actionBarWidgetTheme + */ + public static final int Theme_actionBarWidgetTheme = 203; + /** +

+ @attr description + Default action button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionButtonStyle}. + @attr name android:actionButtonStyle + */ + public static final int Theme_actionButtonStyle = 135; + /** +

+ @attr description + Default ActionBar dropdown style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionDropDownStyle}. + @attr name android:actionDropDownStyle + */ + public static final int Theme_actionDropDownStyle = 134; + /** +

+ @attr description + TextAppearance style that will be applied to text that + appears within action menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionMenuTextAppearance}. + @attr name android:actionMenuTextAppearance + */ + public static final int Theme_actionMenuTextAppearance = 188; + /** +

+ @attr description + Color for text that appears within action menu items. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionMenuTextColor}. + @attr name android:actionMenuTextColor + */ + public static final int Theme_actionMenuTextColor = 189; + /** +

+ @attr description + Background drawable to use for action mode UI + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeBackground}. + @attr name android:actionModeBackground + */ + public static final int Theme_actionModeBackground = 136; + /** +

This symbol is the offset where the {@link android.R.attr#actionModeCloseButtonStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionModeCloseButtonStyle + */ + public static final int Theme_actionModeCloseButtonStyle = 146; + /** +

+ @attr description + Drawable to use for the close action mode button + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCloseDrawable}. + @attr name android:actionModeCloseDrawable + */ + public static final int Theme_actionModeCloseDrawable = 137; + /** +

+ @attr description + Drawable to use for the Copy action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCopyDrawable}. + @attr name android:actionModeCopyDrawable + */ + public static final int Theme_actionModeCopyDrawable = 160; + /** +

+ @attr description + Drawable to use for the Cut action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCutDrawable}. + @attr name android:actionModeCutDrawable + */ + public static final int Theme_actionModeCutDrawable = 159; + /** +

+ @attr description + Drawable to use for the Paste action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModePasteDrawable}. + @attr name android:actionModePasteDrawable + */ + public static final int Theme_actionModePasteDrawable = 161; + /** +

+ @attr description + Drawable to use for the Select all action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSelectAllDrawable}. + @attr name android:actionModeSelectAllDrawable + */ + public static final int Theme_actionModeSelectAllDrawable = 193; + /** +

+ @attr description + Background drawable to use for action mode UI in the lower split bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSplitBackground}. + @attr name android:actionModeSplitBackground + */ + public static final int Theme_actionModeSplitBackground = 206; + /** +

This symbol is the offset where the {@link android.R.attr#actionModeStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionModeStyle + */ + public static final int Theme_actionModeStyle = 202; + /** +

This symbol is the offset where the {@link android.R.attr#actionOverflowButtonStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionOverflowButtonStyle + */ + public static final int Theme_actionOverflowButtonStyle = 145; + /** +

+ @attr description + Drawable used as a background for activated items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activatedBackgroundIndicator}. + @attr name android:activatedBackgroundIndicator + */ + public static final int Theme_activatedBackgroundIndicator = 147; + /** +

+ @attr description + Icon drawable to use for alerts + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alertDialogIcon}. + @attr name android:alertDialogIcon + */ + public static final int Theme_alertDialogIcon = 181; + /** +

This symbol is the offset where the {@link android.R.attr#alertDialogStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:alertDialogStyle + */ + public static final int Theme_alertDialogStyle = 45; + /** +

+ @attr description + Theme to use for alert dialogs spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alertDialogTheme}. + @attr name android:alertDialogTheme + */ + public static final int Theme_alertDialogTheme = 155; + /** +

+ @attr description + Default AutoCompleteTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoCompleteTextViewStyle}. + @attr name android:autoCompleteTextViewStyle + */ + public static final int Theme_autoCompleteTextViewStyle = 52; + /** +

+ @attr description + Default background dim amount when a menu, dialog, or something similar pops up. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimAmount}. + @attr name android:backgroundDimAmount + */ + public static final int Theme_backgroundDimAmount = 2; + /** +

+ @attr description + Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimEnabled}. + @attr name android:backgroundDimEnabled + */ + public static final int Theme_backgroundDimEnabled = 106; + /** +

+ @attr description + Style for buttons without an explicit border, often used in groups. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#borderlessButtonStyle}. + @attr name android:borderlessButtonStyle + */ + public static final int Theme_borderlessButtonStyle = 165; + /** +

+ @attr description + Style for buttons within button bars + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonBarButtonStyle}. + @attr name android:buttonBarButtonStyle + */ + public static final int Theme_buttonBarButtonStyle = 168; + /** +

+ @attr description + Style for button bars + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonBarStyle}. + @attr name android:buttonBarStyle + */ + public static final int Theme_buttonBarStyle = 167; + /** +

+ @attr description + Normal Button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyle}. + @attr name android:buttonStyle + */ + public static final int Theme_buttonStyle = 24; + /** +

+ @attr description + Button style to inset into an EditText. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleInset}. + @attr name android:buttonStyleInset + */ + public static final int Theme_buttonStyleInset = 26; + /** +

+ @attr description + Small Button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleSmall}. + @attr name android:buttonStyleSmall + */ + public static final int Theme_buttonStyleSmall = 25; + /** +

+ @attr description + ToggleButton style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleToggle}. + @attr name android:buttonStyleToggle + */ + public static final int Theme_buttonStyleToggle = 27; + /** +

+ @attr description + The CalendarView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#calendarViewStyle}. + @attr name android:calendarViewStyle + */ + public static final int Theme_calendarViewStyle = 185; + /** +

+ @attr description + A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method. The + text itself will be ignored, but the style spans will be applied + to the candidate text as it is edited. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#candidatesTextStyleSpans}. + @attr name android:candidatesTextStyleSpans + */ + public static final int Theme_candidatesTextStyleSpans = 109; + /** +

+ @attr description + Default style for CheckBoxPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkBoxPreferenceStyle}. + @attr name android:checkBoxPreferenceStyle + */ + public static final int Theme_checkBoxPreferenceStyle = 87; + /** +

+ @attr description + Default Checkbox style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkboxStyle}. + @attr name android:checkboxStyle + */ + public static final int Theme_checkboxStyle = 53; + /** +

+ @attr description + Default CheckedTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkedTextViewStyle}. + @attr name android:checkedTextViewStyle + */ + public static final int Theme_checkedTextViewStyle = 217; + /** +

+ @attr description + Default highlight color for items that are + activated. (Activated meaning persistent selection.) + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorActivatedHighlight}. + @attr name android:colorActivatedHighlight + */ + public static final int Theme_colorActivatedHighlight = 200; + /** +

+ @attr description + Color that matches (as closely as possible) the window background. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorBackground}. + @attr name android:colorBackground + */ + public static final int Theme_colorBackground = 1; + /** +

+ @attr description + This is a hint for a solid color that can be used for caching + rendered views. This should be the color of the background when + there is a solid background color; it should be null when the + background is a texture or translucent. When a device is able + to use accelerated drawing (thus setting state_accelerated), the + cache hint is ignored and always assumed to be transparent. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorBackgroundCacheHint}. + @attr name android:colorBackgroundCacheHint + */ + public static final int Theme_colorBackgroundCacheHint = 118; + /** +

+ @attr description + Default highlight color for items that are + focused. (Focused meaning cursor-based selection.) + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorFocusedHighlight}. + @attr name android:colorFocusedHighlight + */ + public static final int Theme_colorFocusedHighlight = 199; + /** +

+ @attr description + Default color of foreground imagery. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorForeground}. + @attr name android:colorForeground + */ + public static final int Theme_colorForeground = 0; + /** +

+ @attr description + Default color of foreground imagery on an inverted background. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorForegroundInverse}. + @attr name android:colorForegroundInverse + */ + public static final int Theme_colorForegroundInverse = 94; + /** +

+ @attr description + Default highlight color for items that are long-pressed. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorLongPressedHighlight}. + @attr name android:colorLongPressedHighlight + */ + public static final int Theme_colorLongPressedHighlight = 198; + /** +

+ @attr description + Default highlight color for items in multiple selection + mode. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorMultiSelectHighlight}. + @attr name android:colorMultiSelectHighlight + */ + public static final int Theme_colorMultiSelectHighlight = 201; + /** +

+ @attr description + Default highlight color for items that are pressed. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorPressedHighlight}. + @attr name android:colorPressedHighlight + */ + public static final int Theme_colorPressedHighlight = 197; + /** +

+ @attr description + The DatePicker style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#datePickerStyle}. + @attr name android:datePickerStyle + */ + public static final int Theme_datePickerStyle = 184; + /** +

+ @attr description + Background that can be used behind parts of a UI that provide + details on data the user is selecting. For example, this is + the background element of PreferenceActivity's embedded + preference fragment. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailsElementBackground}. + @attr name android:detailsElementBackground + */ + public static final int Theme_detailsElementBackground = 175; + /** +

+ @attr description + Default style for DialogPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogPreferenceStyle}. + @attr name android:dialogPreferenceStyle + */ + public static final int Theme_dialogPreferenceStyle = 89; + /** +

+ @attr description + Theme to use for dialogs spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogTheme}. + @attr name android:dialogTheme + */ + public static final int Theme_dialogTheme = 154; + /** +

+ @attr description + Default disabled alpha for widgets that set enabled/disabled alpha programmatically. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disabledAlpha}. + @attr name android:disabledAlpha + */ + public static final int Theme_disabledAlpha = 3; + /** +

+ @attr description + Drawable to use for generic horizontal dividers. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerHorizontal}. + @attr name android:dividerHorizontal + */ + public static final int Theme_dividerHorizontal = 166; + /** +

+ @attr description + Drawable to use for generic vertical dividers. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerVertical}. + @attr name android:dividerVertical + */ + public static final int Theme_dividerVertical = 156; + /** +

+ @attr description + Default style for drop down hints. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHintAppearance}. + @attr name android:dropDownHintAppearance + */ + public static final int Theme_dropDownHintAppearance = 80; + /** +

+ @attr description + Default style for drop down items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownItemStyle}. + @attr name android:dropDownItemStyle + */ + public static final int Theme_dropDownItemStyle = 78; + /** +

+ @attr description + Default ListView style for drop downs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownListViewStyle}. + @attr name android:dropDownListViewStyle + */ + public static final int Theme_dropDownListViewStyle = 54; + /** +

+ @attr description + Default dropdown Spinner style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSpinnerStyle}. + @attr name android:dropDownSpinnerStyle + */ + public static final int Theme_dropDownSpinnerStyle = 133; + /** +

+ @attr description + EditText background drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextBackground}. + @attr name android:editTextBackground + */ + public static final int Theme_editTextBackground = 179; + /** +

+ @attr description + EditText text foreground color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextColor}. + @attr name android:editTextColor + */ + public static final int Theme_editTextColor = 178; + /** +

+ @attr description + Default style for EditTextPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextPreferenceStyle}. + @attr name android:editTextPreferenceStyle + */ + public static final int Theme_editTextPreferenceStyle = 90; + /** +

+ @attr description + Default EditText style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextStyle}. + @attr name android:editTextStyle + */ + public static final int Theme_editTextStyle = 55; + /** +

+ @attr description + The preferred left bound for an expandable list child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildIndicatorLeft}. + @attr name android:expandableListPreferredChildIndicatorLeft + */ + public static final int Theme_expandableListPreferredChildIndicatorLeft = 34; + /** +

+ @attr description + The preferred right bound for an expandable list child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildIndicatorRight}. + @attr name android:expandableListPreferredChildIndicatorRight + */ + public static final int Theme_expandableListPreferredChildIndicatorRight = 35; + /** +

+ @attr description + The preferred left padding for an expandable list item that is a child. + If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildPaddingLeft}. + @attr name android:expandableListPreferredChildPaddingLeft + */ + public static final int Theme_expandableListPreferredChildPaddingLeft = 31; + /** +

+ @attr description + The preferred left bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemIndicatorLeft}. + @attr name android:expandableListPreferredItemIndicatorLeft + */ + public static final int Theme_expandableListPreferredItemIndicatorLeft = 32; + /** +

+ @attr description + The preferred right bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorRight. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemIndicatorRight}. + @attr name android:expandableListPreferredItemIndicatorRight + */ + public static final int Theme_expandableListPreferredItemIndicatorRight = 33; + /** +

+ @attr description + The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft). This takes into account + the indicator that will be shown to next to the item. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemPaddingLeft}. + @attr name android:expandableListPreferredItemPaddingLeft + */ + public static final int Theme_expandableListPreferredItemPaddingLeft = 30; + /** +

+ @attr description + Default ExpandableListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListViewStyle}. + @attr name android:expandableListViewStyle + */ + public static final int Theme_expandableListViewStyle = 56; + /** +

+ @attr description + ExpandableListView with white background. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListViewWhiteStyle}. + @attr name android:expandableListViewWhiteStyle + */ + public static final int Theme_expandableListViewWhiteStyle = 125; + /** +

+ @attr description + Position of the fast scroll index overlay window. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floating0
atThumb1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollOverlayPosition}. + @attr name android:fastScrollOverlayPosition + */ + public static final int Theme_fastScrollOverlayPosition = 174; + /** +

+ @attr description + Drawable to use as the fast scroll index preview window background + when shown on the left. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollPreviewBackgroundLeft}. + @attr name android:fastScrollPreviewBackgroundLeft + */ + public static final int Theme_fastScrollPreviewBackgroundLeft = 171; + /** +

+ @attr description + Drawable to use as the fast scroll index preview window background + when shown on the right. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollPreviewBackgroundRight}. + @attr name android:fastScrollPreviewBackgroundRight + */ + public static final int Theme_fastScrollPreviewBackgroundRight = 172; + /** +

+ @attr description + Text color for the fast scroll index overlay. Make sure it + plays nicely with fastScrollPreviewBackground[Left|Right]. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollTextColor}. + @attr name android:fastScrollTextColor + */ + public static final int Theme_fastScrollTextColor = 182; + /** +

+ @attr description + Drawable to use as the fast scroll thumb. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollThumbDrawable}. + @attr name android:fastScrollThumbDrawable + */ + public static final int Theme_fastScrollThumbDrawable = 170; + /** +

+ @attr description + Drawable to use as the track for the fast scroll thumb. + This may be null. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollTrackDrawable}. + @attr name android:fastScrollTrackDrawable + */ + public static final int Theme_fastScrollTrackDrawable = 173; + /** +

+ @attr description + The preferred background for gallery items. This should be set + as the background of any Views you provide from the Adapter. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#galleryItemBackground}. + @attr name android:galleryItemBackground + */ + public static final int Theme_galleryItemBackground = 28; + /** +

+ @attr description + Default Gallery style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#galleryStyle}. + @attr name android:galleryStyle + */ + public static final int Theme_galleryStyle = 57; + /** +

+ @attr description + Default GridView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gridViewStyle}. + @attr name android:gridViewStyle + */ + public static final int Theme_gridViewStyle = 58; + /** +

+ @attr description + Specifies a drawable to use for the 'home as up' indicator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#homeAsUpIndicator}. + @attr name android:homeAsUpIndicator + */ + public static final int Theme_homeAsUpIndicator = 157; + /** +

+ @attr description + Default HorizontalScrollView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalScrollViewStyle}. + @attr name android:horizontalScrollViewStyle + */ + public static final int Theme_horizontalScrollViewStyle = 180; + /** +

+ @attr description + The style resource to use for an ImageButton. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imageButtonStyle}. + @attr name android:imageButtonStyle + */ + public static final int Theme_imageButtonStyle = 59; + /** +

+ @attr description + The style resource to use for an ImageButton that is an image well. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imageWellStyle}. + @attr name android:imageWellStyle + */ + public static final int Theme_imageWellStyle = 60; + /** +

+ @attr description + Drawable used as a background for selected list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceBackgroundIndicator}. + @attr name android:listChoiceBackgroundIndicator + */ + public static final int Theme_listChoiceBackgroundIndicator = 141; + /** +

+ @attr description + Drawable to use for multiple choice indicators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceIndicatorMultiple}. + @attr name android:listChoiceIndicatorMultiple + */ + public static final int Theme_listChoiceIndicatorMultiple = 104; + /** +

+ @attr description + Drawable to use for single choice indicators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceIndicatorSingle}. + @attr name android:listChoiceIndicatorSingle + */ + public static final int Theme_listChoiceIndicatorSingle = 103; + /** +

+ @attr description + The drawable for the list divider. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listDivider}. + @attr name android:listDivider + */ + public static final int Theme_listDivider = 102; + /** +

+ @attr description + The list divider used in alert dialogs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listDividerAlertDialog}. + @attr name android:listDividerAlertDialog + */ + public static final int Theme_listDividerAlertDialog = 152; + /** +

+ @attr description + Default ListPopupWindow style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPopupWindowStyle}. + @attr name android:listPopupWindowStyle + */ + public static final int Theme_listPopupWindowStyle = 148; + /** +

+ @attr description + The preferred list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeight}. + @attr name android:listPreferredItemHeight + */ + public static final int Theme_listPreferredItemHeight = 29; + /** +

+ @attr description + A larger, more robust list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeightLarge}. + @attr name android:listPreferredItemHeightLarge + */ + public static final int Theme_listPreferredItemHeightLarge = 194; + /** +

+ @attr description + A smaller, sleeker list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeightSmall}. + @attr name android:listPreferredItemHeightSmall + */ + public static final int Theme_listPreferredItemHeightSmall = 195; + /** +

+ @attr description + The preferred padding along the end edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingEnd}. + @attr name android:listPreferredItemPaddingEnd + */ + public static final int Theme_listPreferredItemPaddingEnd = 214; + /** +

+ @attr description + The preferred padding along the left edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingLeft}. + @attr name android:listPreferredItemPaddingLeft + */ + public static final int Theme_listPreferredItemPaddingLeft = 209; + /** +

+ @attr description + The preferred padding along the right edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingRight}. + @attr name android:listPreferredItemPaddingRight + */ + public static final int Theme_listPreferredItemPaddingRight = 210; + /** +

+ @attr description + The preferred padding along the start edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingStart}. + @attr name android:listPreferredItemPaddingStart + */ + public static final int Theme_listPreferredItemPaddingStart = 213; + /** +

+ @attr description + TextView style for list separators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listSeparatorTextViewStyle}. + @attr name android:listSeparatorTextViewStyle + */ + public static final int Theme_listSeparatorTextViewStyle = 96; + /** +

+ @attr description + Default ListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listViewStyle}. + @attr name android:listViewStyle + */ + public static final int Theme_listViewStyle = 61; + /** +

+ @attr description + ListView with white background. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listViewWhiteStyle}. + @attr name android:listViewWhiteStyle + */ + public static final int Theme_listViewWhiteStyle = 62; + /** +

+ @attr description + Default MapView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mapViewStyle}. + @attr name android:mapViewStyle + */ + public static final int Theme_mapViewStyle = 82; + /** +

+ @attr description + Default style for the MediaRouteButton widget. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mediaRouteButtonStyle}. + @attr name android:mediaRouteButtonStyle + */ + public static final int Theme_mediaRouteButtonStyle = 212; + /** +

+ @attr description + The background of a panel when it is inset from the left and right edges of the screen. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelBackground}. + @attr name android:panelBackground + */ + public static final int Theme_panelBackground = 46; + /** +

+ @attr description + Color that matches (as closely as possible) the panel background. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelColorBackground}. + @attr name android:panelColorBackground + */ + public static final int Theme_panelColorBackground = 49; + /** +

+ @attr description + Default color of foreground panel imagery. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelColorForeground}. + @attr name android:panelColorForeground + */ + public static final int Theme_panelColorForeground = 48; + /** +

+ @attr description + The background of a panel when it extends to the left and right edges of the screen. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelFullBackground}. + @attr name android:panelFullBackground + */ + public static final int Theme_panelFullBackground = 47; + /** +

+ @attr description + Default appearance of panel text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelTextAppearance}. + @attr name android:panelTextAppearance + */ + public static final int Theme_panelTextAppearance = 50; + /** +

+ @attr description + Default PopupMenu style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupMenuStyle}. + @attr name android:popupMenuStyle + */ + public static final int Theme_popupMenuStyle = 149; + /** +

+ @attr description + Default PopupWindow style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupWindowStyle}. + @attr name android:popupWindowStyle + */ + public static final int Theme_popupWindowStyle = 63; + /** +

+ @attr description + Default style for PreferenceCategory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceCategoryStyle}. + @attr name android:preferenceCategoryStyle + */ + public static final int Theme_preferenceCategoryStyle = 84; + /** +

+ @attr description + Default style for informational Preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceInformationStyle}. + @attr name android:preferenceInformationStyle + */ + public static final int Theme_preferenceInformationStyle = 85; + /** +

+ @attr description + The preference layout that has the child/tabbed effect. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceLayoutChild}. + @attr name android:preferenceLayoutChild + */ + public static final int Theme_preferenceLayoutChild = 92; + /** +

+ @attr description + Default style for PreferenceScreen. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceScreenStyle}. + @attr name android:preferenceScreenStyle + */ + public static final int Theme_preferenceScreenStyle = 83; + /** +

+ @attr description + Default style for Preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceStyle}. + @attr name android:preferenceStyle + */ + public static final int Theme_preferenceStyle = 86; + /** +

+ @attr description + Theme to use for presentations spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#presentationTheme}. + @attr name android:presentationTheme + */ + public static final int Theme_presentationTheme = 215; + /** +

+ @attr description + Default ProgressBar style. This is a medium circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyle}. + @attr name android:progressBarStyle + */ + public static final int Theme_progressBarStyle = 64; + /** +

+ @attr description + Horizontal ProgressBar style. This is a horizontal progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleHorizontal}. + @attr name android:progressBarStyleHorizontal + */ + public static final int Theme_progressBarStyleHorizontal = 65; + /** +

+ @attr description + Inverse ProgressBar style. This is a medium circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleInverse}. + @attr name android:progressBarStyleInverse + */ + public static final int Theme_progressBarStyleInverse = 111; + /** +

+ @attr description + Large ProgressBar style. This is a large circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleLarge}. + @attr name android:progressBarStyleLarge + */ + public static final int Theme_progressBarStyleLarge = 67; + /** +

+ @attr description + Large inverse ProgressBar style. This is a large circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleLargeInverse}. + @attr name android:progressBarStyleLargeInverse + */ + public static final int Theme_progressBarStyleLargeInverse = 113; + /** +

+ @attr description + Small ProgressBar style. This is a small circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmall}. + @attr name android:progressBarStyleSmall + */ + public static final int Theme_progressBarStyleSmall = 66; + /** +

+ @attr description + Small inverse ProgressBar style. This is a small circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmallInverse}. + @attr name android:progressBarStyleSmallInverse + */ + public static final int Theme_progressBarStyleSmallInverse = 112; + /** +

+ @attr description + Small ProgressBar in title style. This is a small circular progress bar that will be placed in title bars. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmallTitle}. + @attr name android:progressBarStyleSmallTitle + */ + public static final int Theme_progressBarStyleSmallTitle = 98; + /** +

+ @attr description + Default quickcontact badge style with large quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowLarge}. + @attr name android:quickContactBadgeStyleSmallWindowLarge + */ + public static final int Theme_quickContactBadgeStyleSmallWindowLarge = 124; + /** +

+ @attr description + Default quickcontact badge style with medium quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowMedium}. + @attr name android:quickContactBadgeStyleSmallWindowMedium + */ + public static final int Theme_quickContactBadgeStyleSmallWindowMedium = 123; + /** +

+ @attr description + Default quickcontact badge style with small quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowSmall}. + @attr name android:quickContactBadgeStyleSmallWindowSmall + */ + public static final int Theme_quickContactBadgeStyleSmallWindowSmall = 122; + /** +

+ @attr description + Default quickcontact badge style with large quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowLarge}. + @attr name android:quickContactBadgeStyleWindowLarge + */ + public static final int Theme_quickContactBadgeStyleWindowLarge = 121; + /** +

+ @attr description + Default quickcontact badge style with medium quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowMedium}. + @attr name android:quickContactBadgeStyleWindowMedium + */ + public static final int Theme_quickContactBadgeStyleWindowMedium = 120; + /** +

+ @attr description + Default quickcontact badge style with small quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowSmall}. + @attr name android:quickContactBadgeStyleWindowSmall + */ + public static final int Theme_quickContactBadgeStyleWindowSmall = 119; + /** +

+ @attr description + Default RadioButton style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#radioButtonStyle}. + @attr name android:radioButtonStyle + */ + public static final int Theme_radioButtonStyle = 71; + /** +

+ @attr description + Default RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyle}. + @attr name android:ratingBarStyle + */ + public static final int Theme_ratingBarStyle = 69; + /** +

+ @attr description + Indicator RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyleIndicator}. + @attr name android:ratingBarStyleIndicator + */ + public static final int Theme_ratingBarStyleIndicator = 99; + /** +

+ @attr description + Small indicator RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyleSmall}. + @attr name android:ratingBarStyleSmall + */ + public static final int Theme_ratingBarStyleSmall = 70; + /** +

+ @attr description + Default style for RingtonePreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ringtonePreferenceStyle}. + @attr name android:ringtonePreferenceStyle + */ + public static final int Theme_ringtonePreferenceStyle = 91; + /** +

+ @attr description + Default ScrollView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollViewStyle}. + @attr name android:scrollViewStyle + */ + public static final int Theme_scrollViewStyle = 72; + /** +

+ @attr description + Default SeekBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#seekBarStyle}. + @attr name android:seekBarStyle + */ + public static final int Theme_seekBarStyle = 68; + /** +

+ @attr description + Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#segmentedButtonStyle}. + @attr name android:segmentedButtonStyle + */ + public static final int Theme_segmentedButtonStyle = 169; + /** +

+ @attr description + Background drawable for standalone items that need focus/pressed states. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectableItemBackground}. + @attr name android:selectableItemBackground + */ + public static final int Theme_selectableItemBackground = 158; + /** +

+ @attr description + Default style for spinner drop down items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerDropDownItemStyle}. + @attr name android:spinnerDropDownItemStyle + */ + public static final int Theme_spinnerDropDownItemStyle = 79; + /** +

+ @attr description + Default spinner item style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerItemStyle}. + @attr name android:spinnerItemStyle + */ + public static final int Theme_spinnerItemStyle = 81; + /** +

+ @attr description + Default Spinner style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerStyle}. + @attr name android:spinnerStyle + */ + public static final int Theme_spinnerStyle = 73; + /** +

+ @attr description + Default Star style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#starStyle}. + @attr name android:starStyle + */ + public static final int Theme_starStyle = 74; + /** +

+ @attr description + Default style for switch preferences. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchPreferenceStyle}. + @attr name android:switchPreferenceStyle + */ + public static final int Theme_switchPreferenceStyle = 190; + /** +

+ @attr description + Default TabWidget style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabWidgetStyle}. + @attr name android:tabWidgetStyle + */ + public static final int Theme_tabWidgetStyle = 75; + /** +

+ @attr description + Default appearance of text: color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int Theme_textAppearance = 4; + /** +

+ @attr description + Text color, typeface, size, and style for the text inside of a button. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceButton}. + @attr name android:textAppearanceButton + */ + public static final int Theme_textAppearanceButton = 95; + /** +

+ @attr description + Default appearance of text against an inverted background: + color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceInverse}. + @attr name android:textAppearanceInverse + */ + public static final int Theme_textAppearanceInverse = 5; + /** +

+ @attr description + Text color, typeface, size, and style for "large" text. Defaults to primary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLarge}. + @attr name android:textAppearanceLarge + */ + public static final int Theme_textAppearanceLarge = 16; + /** +

+ @attr description + Text color, typeface, size, and style for "large" inverse text. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLargeInverse}. + @attr name android:textAppearanceLargeInverse + */ + public static final int Theme_textAppearanceLargeInverse = 19; + /** +

+ @attr description + Text color, typeface, size, and style for the text inside of a popup menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLargePopupMenu}. + @attr name android:textAppearanceLargePopupMenu + */ + public static final int Theme_textAppearanceLargePopupMenu = 150; + /** +

+ @attr description + The preferred TextAppearance for the primary text of list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceListItem}. + @attr name android:textAppearanceListItem + */ + public static final int Theme_textAppearanceListItem = 207; + /** +

+ @attr description + The preferred TextAppearance for the primary text of small list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceListItemSmall}. + @attr name android:textAppearanceListItemSmall + */ + public static final int Theme_textAppearanceListItemSmall = 208; + /** +

+ @attr description + Text color, typeface, size, and style for "medium" text. Defaults to primary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceMedium}. + @attr name android:textAppearanceMedium + */ + public static final int Theme_textAppearanceMedium = 17; + /** +

+ @attr description + Text color, typeface, size, and style for "medium" inverse text. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceMediumInverse}. + @attr name android:textAppearanceMediumInverse + */ + public static final int Theme_textAppearanceMediumInverse = 20; + /** +

+ @attr description + Text color, typeface, size, and style for system search result subtitle. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSearchResultSubtitle}. + @attr name android:textAppearanceSearchResultSubtitle + */ + public static final int Theme_textAppearanceSearchResultSubtitle = 116; + /** +

+ @attr description + Text color, typeface, size, and style for system search result title. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSearchResultTitle}. + @attr name android:textAppearanceSearchResultTitle + */ + public static final int Theme_textAppearanceSearchResultTitle = 117; + /** +

+ @attr description + Text color, typeface, size, and style for "small" text. Defaults to secondary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmall}. + @attr name android:textAppearanceSmall + */ + public static final int Theme_textAppearanceSmall = 18; + /** +

+ @attr description + Text color, typeface, size, and style for "small" inverse text. Defaults to secondary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmallInverse}. + @attr name android:textAppearanceSmallInverse + */ + public static final int Theme_textAppearanceSmallInverse = 21; + /** +

+ @attr description + Text color, typeface, size, and style for small text inside of a popup menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmallPopupMenu}. + @attr name android:textAppearanceSmallPopupMenu + */ + public static final int Theme_textAppearanceSmallPopupMenu = 151; + /** +

+ @attr description + Drawable to use for check marks. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textCheckMark}. + @attr name android:textCheckMark + */ + public static final int Theme_textCheckMark = 22; + /** +

This symbol is the offset where the {@link android.R.attr#textCheckMarkInverse} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:textCheckMarkInverse + */ + public static final int Theme_textCheckMarkInverse = 23; + /** +

+ @attr description + Color of list item text in alert dialogs. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorAlertDialogListItem}. + @attr name android:textColorAlertDialogListItem + */ + public static final int Theme_textColorAlertDialogListItem = 153; + /** +

+ @attr description + Color of highlighted text, when used in a light theme. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlightInverse}. + @attr name android:textColorHighlightInverse + */ + public static final int Theme_textColorHighlightInverse = 176; + /** +

+ @attr description + Inverse hint text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHintInverse}. + @attr name android:textColorHintInverse + */ + public static final int Theme_textColorHintInverse = 15; + /** +

+ @attr description + Color of link text (URLs), when used in a light theme. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLinkInverse}. + @attr name android:textColorLinkInverse + */ + public static final int Theme_textColorLinkInverse = 177; + /** +

+ @attr description + The most prominent text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimary}. + @attr name android:textColorPrimary + */ + public static final int Theme_textColorPrimary = 6; + /** +

+ @attr description + Bright text color. Only differentiates based on the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryDisableOnly}. + @attr name android:textColorPrimaryDisableOnly + */ + public static final int Theme_textColorPrimaryDisableOnly = 7; + /** +

+ @attr description + Primary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverse}. + @attr name android:textColorPrimaryInverse + */ + public static final int Theme_textColorPrimaryInverse = 9; + /** +

+ @attr description + Bright inverse text color. Only differentiates based on the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverseDisableOnly}. + @attr name android:textColorPrimaryInverseDisableOnly + */ + public static final int Theme_textColorPrimaryInverseDisableOnly = 114; + /** +

+ @attr description + Bright inverse text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverseNoDisable}. + @attr name android:textColorPrimaryInverseNoDisable + */ + public static final int Theme_textColorPrimaryInverseNoDisable = 13; + /** +

+ @attr description + Bright text color. This does not differentiate the disabled state. As an example, + buttons use this since they display the disabled state via the background and not the + foreground text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryNoDisable}. + @attr name android:textColorPrimaryNoDisable + */ + public static final int Theme_textColorPrimaryNoDisable = 11; + /** +

+ @attr description + Secondary text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondary}. + @attr name android:textColorSecondary + */ + public static final int Theme_textColorSecondary = 8; + /** +

+ @attr description + Secondary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryInverse}. + @attr name android:textColorSecondaryInverse + */ + public static final int Theme_textColorSecondaryInverse = 10; + /** +

+ @attr description + Dim inverse text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryInverseNoDisable}. + @attr name android:textColorSecondaryInverseNoDisable + */ + public static final int Theme_textColorSecondaryInverseNoDisable = 14; + /** +

+ @attr description + Dim text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryNoDisable}. + @attr name android:textColorSecondaryNoDisable + */ + public static final int Theme_textColorSecondaryNoDisable = 12; + /** +

+ @attr description + Tertiary text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorTertiary}. + @attr name android:textColorTertiary + */ + public static final int Theme_textColorTertiary = 100; + /** +

+ @attr description + Tertiary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorTertiaryInverse}. + @attr name android:textColorTertiaryInverse + */ + public static final int Theme_textColorTertiaryInverse = 101; + /** +

+ @attr description + Variation of textEditPasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditNoPasteWindowLayout}. + @attr name android:textEditNoPasteWindowLayout + */ + public static final int Theme_textEditNoPasteWindowLayout = 163; + /** +

+ @attr description + The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditPasteWindowLayout}. + @attr name android:textEditPasteWindowLayout + */ + public static final int Theme_textEditPasteWindowLayout = 162; + /** +

+ @attr description + Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSideNoPasteWindowLayout}. + @attr name android:textEditSideNoPasteWindowLayout + */ + public static final int Theme_textEditSideNoPasteWindowLayout = 187; + /** +

+ @attr description + Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSidePasteWindowLayout}. + @attr name android:textEditSidePasteWindowLayout + */ + public static final int Theme_textEditSidePasteWindowLayout = 186; + /** +

+ @attr description + Layout of the TextView item that will populate the suggestion popup window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSuggestionItemLayout}. + @attr name android:textEditSuggestionItemLayout + */ + public static final int Theme_textEditSuggestionItemLayout = 192; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandle}. + @attr name android:textSelectHandle + */ + public static final int Theme_textSelectHandle = 129; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleLeft}. + @attr name android:textSelectHandleLeft + */ + public static final int Theme_textSelectHandleLeft = 127; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleRight}. + @attr name android:textSelectHandleRight + */ + public static final int Theme_textSelectHandleRight = 128; + /** +

+ @attr description + Reference to a style that will be used for the window containing a text + selection anchor. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleWindowStyle}. + @attr name android:textSelectHandleWindowStyle + */ + public static final int Theme_textSelectHandleWindowStyle = 130; + /** +

+ @attr description + Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSuggestionsWindowStyle}. + @attr name android:textSuggestionsWindowStyle + */ + public static final int Theme_textSuggestionsWindowStyle = 191; + /** +

+ @attr description + Default TextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textViewStyle}. + @attr name android:textViewStyle + */ + public static final int Theme_textViewStyle = 76; + /** +

+ @attr description + Default WebTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#webTextViewStyle}. + @attr name android:webTextViewStyle + */ + public static final int Theme_webTextViewStyle = 126; + /** +

+ @attr description + Default WebView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#webViewStyle}. + @attr name android:webViewStyle + */ + public static final int Theme_webViewStyle = 77; + /** +

+ @attr description + Flag indicating whether this window should have an Action Bar + in place of the usual title bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBar}. + @attr name android:windowActionBar + */ + public static final int Theme_windowActionBar = 131; + /** +

+ @attr description + Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBarOverlay}. + @attr name android:windowActionBarOverlay + */ + public static final int Theme_windowActionBarOverlay = 139; + /** +

+ @attr description + Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionModeOverlay}. + @attr name android:windowActionModeOverlay + */ + public static final int Theme_windowActionModeOverlay = 138; + /** +

+ @attr description + Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int Theme_windowAnimationStyle = 93; + /** +

+ @attr description + Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+ + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowBackground}. + @attr name android:windowBackground + */ + public static final int Theme_windowBackground = 36; + /** +

+ @attr description + Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowCloseOnTouchOutside}. + @attr name android:windowCloseOnTouchOutside + */ + public static final int Theme_windowCloseOnTouchOutside = 183; + /** +

+ @attr description + This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowContentOverlay}. + @attr name android:windowContentOverlay + */ + public static final int Theme_windowContentOverlay = 41; + /** +

+ @attr description + Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowDisablePreview}. + @attr name android:windowDisablePreview + */ + public static final int Theme_windowDisablePreview = 107; + /** +

+ @attr description + Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnableSplitTouch}. + @attr name android:windowEnableSplitTouch + */ + public static final int Theme_windowEnableSplitTouch = 164; + /** +

+ @attr description + Drawable to use as a frame around the window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFrame}. + @attr name android:windowFrame + */ + public static final int Theme_windowFrame = 37; + /** +

+ @attr description + Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFullscreen}. + @attr name android:windowFullscreen + */ + public static final int Theme_windowFullscreen = 97; + /** +

+ @attr description + Flag indicating whether this is a floating window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsFloating}. + @attr name android:windowIsFloating + */ + public static final int Theme_windowIsFloating = 39; + /** +

+ @attr description + Flag indicating whether this is a translucent window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsTranslucent}. + @attr name android:windowIsTranslucent + */ + public static final int Theme_windowIsTranslucent = 40; + /** +

+ @attr description + Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoDisplay}. + @attr name android:windowNoDisplay + */ + public static final int Theme_windowNoDisplay = 105; + /** +

+ @attr description + Flag indicating whether there should be no title on this window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoTitle}. + @attr name android:windowNoTitle + */ + public static final int Theme_windowNoTitle = 38; + /** +

+ @attr description + Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowOverscan}. + @attr name android:windowOverscan + */ + public static final int Theme_windowOverscan = 218; + /** +

+ @attr description + Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowWallpaper}. + @attr name android:windowShowWallpaper + */ + public static final int Theme_windowShowWallpaper = 115; + /** +

+ @attr description + Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int Theme_windowSoftInputMode = 108; + /** +

+ @attr description + The style resource to use for a window's title area. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleBackgroundStyle}. + @attr name android:windowTitleBackgroundStyle + */ + public static final int Theme_windowTitleBackgroundStyle = 44; + /** +

+ @attr description + The style resource to use for a window's title bar height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleSize}. + @attr name android:windowTitleSize + */ + public static final int Theme_windowTitleSize = 42; + /** +

+ @attr description + The style resource to use for a window's title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleStyle}. + @attr name android:windowTitleStyle + */ + public static final int Theme_windowTitleStyle = 43; + /** +

+ @attr description + Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentNavigation}. + @attr name android:windowTranslucentNavigation + */ + public static final int Theme_windowTranslucentNavigation = 220; + /** +

+ @attr description + Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentStatus}. + @attr name android:windowTranslucentStatus + */ + public static final int Theme_windowTranslucentStatus = 219; + /** +

+ @attr description + Default style for YesNoPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#yesNoPreferenceStyle}. + @attr name android:yesNoPreferenceStyle + */ + public static final int Theme_yesNoPreferenceStyle = 88; + /** Attributes that can be used with a TimePicker. +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] TimePicker = { + 0x0101043c + }; + /** Attributes that can be used with a ToggleButton. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ToggleButton_disabledAlpha android:disabledAlpha} The alpha to apply to the indicator when disabled.
{@link #ToggleButton_textOff android:textOff} The text for the button when it is not checked.
{@link #ToggleButton_textOn android:textOn} The text for the button when it is checked.
+ @see #ToggleButton_disabledAlpha + @see #ToggleButton_textOff + @see #ToggleButton_textOn + */ + public static final int[] ToggleButton = { + 0x01010033, 0x01010124, 0x01010125 + }; + /** +

+ @attr description + The alpha to apply to the indicator when disabled. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disabledAlpha}. + @attr name android:disabledAlpha + */ + public static final int ToggleButton_disabledAlpha = 0; + /** +

+ @attr description + The text for the button when it is not checked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOff}. + @attr name android:textOff + */ + public static final int ToggleButton_textOff = 2; + /** +

+ @attr description + The text for the button when it is checked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOn}. + @attr name android:textOn + */ + public static final int ToggleButton_textOn = 1; + /** Use specific transition subclass names as the root tag of the XML resource that + describes a {@link android.transition.Transition Transition}, + such as move, fade, and set. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #Transition_duration android:duration} Amount of time (in milliseconds) that the transition should run.
{@link #Transition_interpolator android:interpolator} Interpolator to be used in the animations spawned by this transition.
{@link #Transition_startDelay android:startDelay} Delay in milliseconds before the transition starts.
+ @see #Transition_duration + @see #Transition_interpolator + @see #Transition_startDelay + */ + public static final int[] Transition = { + 0x01010141, 0x01010198, 0x010103e2 + }; + /** +

+ @attr description + Amount of time (in milliseconds) that the transition should run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Transition_duration = 1; + /** +

+ @attr description + Interpolator to be used in the animations spawned by this transition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Transition_interpolator = 0; + /** +

+ @attr description + Delay in milliseconds before the transition starts. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startDelay}. + @attr name android:startDelay + */ + public static final int Transition_startDelay = 2; + /** Use transitionManager as the root tag of the XML resource that + describes a {@link android.transition.TransitionManager + TransitionManager}. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TransitionManager_fromScene android:fromScene} The originating scene in this scene change.
{@link #TransitionManager_toScene android:toScene} The destination scene in this scene change.
{@link #TransitionManager_transition android:transition} The id of a transition to be used in a particular scene change.
+ @see #TransitionManager_fromScene + @see #TransitionManager_toScene + @see #TransitionManager_transition + */ + public static final int[] TransitionManager = { + 0x010103dd, 0x010103de, 0x010103df + }; + /** +

+ @attr description + The originating scene in this scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fromScene}. + @attr name android:fromScene + */ + public static final int TransitionManager_fromScene = 0; + /** +

+ @attr description + The destination scene in this scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#toScene}. + @attr name android:toScene + */ + public static final int TransitionManager_toScene = 1; + /** +

+ @attr description + The id of a transition to be used in a particular scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transition}. + @attr name android:transition + */ + public static final int TransitionManager_transition = 2; + /** Use set as the root tag of the XML resource that + describes a {@link android.transition.TransitionSet + TransitionSet} transition. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TransitionSet_transitionOrdering android:transitionOrdering}
+ @see #TransitionSet_transitionOrdering + */ + public static final int[] TransitionSet = { + 0x010103e0 + }; + /** +

This symbol is the offset where the {@link android.R.attr#transitionOrdering} + attribute's value can be found in the {@link #TransitionSet} array. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child transitions should be played together.
sequential1 child transitions should be played sequentially, in the same order + as the xml.
+ @attr name android:transitionOrdering + */ + public static final int TransitionSet_transitionOrdering = 0; + /** Use target as the root tag of the XML resource that + describes a {@link android.transition.Transition#addTarget(int) + targetId} of a transition. There can be one or more targets inside + a targets tag, which is itself inside an appropriate + {@link android.R.styleable#Transition Transition} tag. + +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TransitionTarget_targetId android:targetId} The id of a target on which this transition will animate changes.
+ @see #TransitionTarget_targetId + */ + public static final int[] TransitionTarget = { + 0x010103dc + }; + /** +

+ @attr description + The id of a target on which this transition will animate changes. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetId}. + @attr name android:targetId + */ + public static final int TransitionTarget_targetId = 0; + /** Attributes that can be used with a TranslateAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #TranslateAnimation_fromXDelta android:fromXDelta}
{@link #TranslateAnimation_fromYDelta android:fromYDelta}
{@link #TranslateAnimation_toXDelta android:toXDelta}
{@link #TranslateAnimation_toYDelta android:toYDelta}
+ @see #TranslateAnimation_fromXDelta + @see #TranslateAnimation_fromYDelta + @see #TranslateAnimation_toXDelta + @see #TranslateAnimation_toYDelta + */ + public static final int[] TranslateAnimation = { + 0x010101c6, 0x010101c7, 0x010101c8, 0x010101c9 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromXDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromXDelta + */ + public static final int TranslateAnimation_fromXDelta = 0; + /** +

This symbol is the offset where the {@link android.R.attr#fromYDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromYDelta + */ + public static final int TranslateAnimation_fromYDelta = 2; + /** +

This symbol is the offset where the {@link android.R.attr#toXDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toXDelta + */ + public static final int TranslateAnimation_toXDelta = 1; + /** +

This symbol is the offset where the {@link android.R.attr#toYDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toYDelta + */ + public static final int TranslateAnimation_toYDelta = 3; + /** Attributes that can be used with a TwoLineListItem. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TwoLineListItem_mode android:mode}
+ @see #TwoLineListItem_mode + */ + public static final int[] TwoLineListItem = { + 0x0101017e + }; + /** +

This symbol is the offset where the {@link android.R.attr#mode} + attribute's value can be found in the {@link #TwoLineListItem} array. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
oneLine1 Always show only the first line.
collapsing2 When selected show both lines, otherwise show only the first line. + This is the default mode.
twoLine3 Always show both lines.
+ @attr name android:mode + */ + public static final int TwoLineListItem_mode = 0; + /** Attributes that can be used with a VerticalSlider_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #VerticalSlider_Layout_layout_scale android:layout_scale}
+ @see #VerticalSlider_Layout_layout_scale + */ + public static final int[] VerticalSlider_Layout = { + 0x01010193 + }; + /** +

This symbol is the offset where the {@link android.R.attr#layout_scale} + attribute's value can be found in the {@link #VerticalSlider_Layout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_scale + */ + public static final int VerticalSlider_Layout_layout_scale = 0; + /** Attributes that can be used with {@link android.view.View} or + any of its subclasses. Also see {@link #ViewGroup_Layout} for + attributes that are processed by the view's parent. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #View_accessibilityLiveRegion android:accessibilityLiveRegion} Indicates to accessibility services whether the user should be notified when + this view changes.
{@link #View_alpha android:alpha} alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque).
{@link #View_background android:background} A drawable to use as the background.
{@link #View_clickable android:clickable} Defines whether this view reacts to click events.
{@link #View_contentDescription android:contentDescription} Defines text that briefly describes content of the view.
{@link #View_drawingCacheQuality android:drawingCacheQuality} Defines the quality of translucent drawing caches.
{@link #View_duplicateParentState android:duplicateParentState} When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.
{@link #View_fadeScrollbars android:fadeScrollbars} Defines whether to fade out scrollbars when they are not in use.
{@link #View_fadingEdge android:fadingEdge} This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}).
{@link #View_fadingEdgeLength android:fadingEdgeLength} Defines the length of the fading edges.
{@link #View_filterTouchesWhenObscured android:filterTouchesWhenObscured} Specifies whether to filter touches when the view's window is obscured by + another visible window.
{@link #View_fitsSystemWindows android:fitsSystemWindows} Boolean internal attribute to adjust view layout based on + system windows such as the status bar.
{@link #View_focusable android:focusable} Boolean that controls whether a view can take focus.
{@link #View_focusableInTouchMode android:focusableInTouchMode} Boolean that controls whether a view can take focus while in touch mode.
{@link #View_hapticFeedbackEnabled android:hapticFeedbackEnabled} Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses.
{@link #View_id android:id} Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}.
{@link #View_importantForAccessibility android:importantForAccessibility} Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen.
{@link #View_isScrollContainer android:isScrollContainer} Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method.
{@link #View_keepScreenOn android:keepScreenOn} Controls whether the view's window should keep the screen on + while visible.
{@link #View_labelFor android:labelFor} Specifies the id of a view for which this view serves as a label for + accessibility purposes.
{@link #View_layerType android:layerType} Specifies the type of layer backing this view.
{@link #View_layoutDirection android:layoutDirection} Defines the direction of layout drawing.
{@link #View_longClickable android:longClickable} Defines whether this view reacts to long click events.
{@link #View_minHeight android:minHeight} Defines the minimum height of the view.
{@link #View_minWidth android:minWidth} Defines the minimum width of the view.
{@link #View_nextFocusDown android:nextFocusDown} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusForward android:nextFocusForward} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusLeft android:nextFocusLeft} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}.
{@link #View_nextFocusRight android:nextFocusRight} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusUp android:nextFocusUp} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_onClick android:onClick} Name of the method in this View's context to invoke when the view is + clicked.
{@link #View_overScrollMode android:overScrollMode} Defines over-scrolling behavior.
{@link #View_padding android:padding} Sets the padding, in pixels, of all four edges.
{@link #View_paddingBottom android:paddingBottom} Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}.
{@link #View_paddingEnd android:paddingEnd} Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}.
{@link #View_paddingLeft android:paddingLeft} Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}.
{@link #View_paddingRight android:paddingRight} Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}.
{@link #View_paddingStart android:paddingStart} Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}.
{@link #View_paddingTop android:paddingTop} Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}.
{@link #View_requiresFadingEdge android:requiresFadingEdge} Defines which edges should be faded on scrolling.
{@link #View_rotation android:rotation} rotation of the view, in degrees.
{@link #View_rotationX android:rotationX} rotation of the view around the x axis, in degrees.
{@link #View_rotationY android:rotationY} rotation of the view around the y axis, in degrees.
{@link #View_saveEnabled android:saveEnabled} If unset, no state will be saved for this view when it is being + frozen.
{@link #View_scaleX android:scaleX} scale of the view in the x direction.
{@link #View_scaleY android:scaleY} scale of the view in the y direction.
{@link #View_scrollX android:scrollX} The initial horizontal scroll offset, in pixels.
{@link #View_scrollY android:scrollY} The initial vertical scroll offset, in pixels.
{@link #View_scrollbarAlwaysDrawHorizontalTrack android:scrollbarAlwaysDrawHorizontalTrack} Defines whether the horizontal scrollbar track should always be drawn.
{@link #View_scrollbarAlwaysDrawVerticalTrack android:scrollbarAlwaysDrawVerticalTrack} Defines whether the vertical scrollbar track should always be drawn.
{@link #View_scrollbarDefaultDelayBeforeFade android:scrollbarDefaultDelayBeforeFade} Defines the delay in milliseconds that a scrollbar waits before fade out.
{@link #View_scrollbarFadeDuration android:scrollbarFadeDuration} Defines the delay in milliseconds that a scrollbar takes to fade out.
{@link #View_scrollbarSize android:scrollbarSize} Sets the width of vertical scrollbars and height of horizontal scrollbars.
{@link #View_scrollbarStyle android:scrollbarStyle} Controls the scrollbar style and position.
{@link #View_scrollbarThumbHorizontal android:scrollbarThumbHorizontal} Defines the horizontal scrollbar thumb drawable.
{@link #View_scrollbarThumbVertical android:scrollbarThumbVertical} Defines the vertical scrollbar thumb drawable.
{@link #View_scrollbarTrackHorizontal android:scrollbarTrackHorizontal} Defines the horizontal scrollbar track drawable.
{@link #View_scrollbarTrackVertical android:scrollbarTrackVertical} Defines the vertical scrollbar track drawable.
{@link #View_scrollbars android:scrollbars} Defines which scrollbars should be displayed on scrolling or not.
{@link #View_soundEffectsEnabled android:soundEffectsEnabled} Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching.
{@link #View_tag android:tag} Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}.
{@link #View_textAlignment android:textAlignment} Defines the alignment of the text.
{@link #View_textDirection android:textDirection} Defines the direction of the text.
{@link #View_transformPivotX android:transformPivotX} x location of the pivot point around which the view will rotate and scale.
{@link #View_transformPivotY android:transformPivotY} y location of the pivot point around which the view will rotate and scale.
{@link #View_translationX android:translationX} translation in x of the view.
{@link #View_translationY android:translationY} translation in y of the view.
{@link #View_verticalScrollbarPosition android:verticalScrollbarPosition} Determines which side the vertical scroll bar should be placed on.
{@link #View_visibility android:visibility} Controls the initial visibility of the view.
+ @see #View_accessibilityLiveRegion + @see #View_alpha + @see #View_background + @see #View_clickable + @see #View_contentDescription + @see #View_drawingCacheQuality + @see #View_duplicateParentState + @see #View_fadeScrollbars + @see #View_fadingEdge + @see #View_fadingEdgeLength + @see #View_filterTouchesWhenObscured + @see #View_fitsSystemWindows + @see #View_focusable + @see #View_focusableInTouchMode + @see #View_hapticFeedbackEnabled + @see #View_id + @see #View_importantForAccessibility + @see #View_isScrollContainer + @see #View_keepScreenOn + @see #View_labelFor + @see #View_layerType + @see #View_layoutDirection + @see #View_longClickable + @see #View_minHeight + @see #View_minWidth + @see #View_nextFocusDown + @see #View_nextFocusForward + @see #View_nextFocusLeft + @see #View_nextFocusRight + @see #View_nextFocusUp + @see #View_onClick + @see #View_overScrollMode + @see #View_padding + @see #View_paddingBottom + @see #View_paddingEnd + @see #View_paddingLeft + @see #View_paddingRight + @see #View_paddingStart + @see #View_paddingTop + @see #View_requiresFadingEdge + @see #View_rotation + @see #View_rotationX + @see #View_rotationY + @see #View_saveEnabled + @see #View_scaleX + @see #View_scaleY + @see #View_scrollX + @see #View_scrollY + @see #View_scrollbarAlwaysDrawHorizontalTrack + @see #View_scrollbarAlwaysDrawVerticalTrack + @see #View_scrollbarDefaultDelayBeforeFade + @see #View_scrollbarFadeDuration + @see #View_scrollbarSize + @see #View_scrollbarStyle + @see #View_scrollbarThumbHorizontal + @see #View_scrollbarThumbVertical + @see #View_scrollbarTrackHorizontal + @see #View_scrollbarTrackVertical + @see #View_scrollbars + @see #View_soundEffectsEnabled + @see #View_tag + @see #View_textAlignment + @see #View_textDirection + @see #View_transformPivotX + @see #View_transformPivotY + @see #View_translationX + @see #View_translationY + @see #View_verticalScrollbarPosition + @see #View_visibility + */ + public static final int[] View = { + 0x01010063, 0x01010064, 0x01010065, 0x01010066, + 0x01010067, 0x01010068, 0x01010069, 0x0101007f, + 0x010100d0, 0x010100d1, 0x010100d2, 0x010100d3, + 0x010100d4, 0x010100d5, 0x010100d6, 0x010100d7, + 0x010100d8, 0x010100d9, 0x010100da, 0x010100db, + 0x010100dc, 0x010100dd, 0x010100de, 0x010100df, + 0x010100e0, 0x010100e1, 0x010100e2, 0x010100e3, + 0x010100e4, 0x010100e5, 0x010100e6, 0x010100e7, + 0x010100e8, 0x010100e9, 0x0101013f, 0x01010140, + 0x01010215, 0x01010216, 0x0101024e, 0x0101025e, + 0x0101026f, 0x01010273, 0x010102a8, 0x010102a9, + 0x010102aa, 0x010102c1, 0x010102c4, 0x0101031f, + 0x01010320, 0x01010321, 0x01010322, 0x01010323, + 0x01010324, 0x01010325, 0x01010326, 0x01010327, + 0x01010328, 0x01010334, 0x0101033c, 0x01010354, + 0x010103a5, 0x010103aa, 0x010103b0, 0x010103b1, + 0x010103b2, 0x010103b3, 0x010103b4, 0x010103c6, + 0x010103ee + }; + /** +

+ @attr description + Indicates to accessibility services whether the user should be notified when + this view changes. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Accessibility services should not announce changes to this view.
polite1 Accessibility services should announce changes to this view.
assertive2 Accessibility services should interrupt ongoing speech to immediately + announce changes to this view.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityLiveRegion}. + @attr name android:accessibilityLiveRegion + */ + public static final int View_accessibilityLiveRegion = 68; + /** +

+ @attr description + alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque). + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alpha}. + @attr name android:alpha + */ + public static final int View_alpha = 47; + /** +

+ @attr description + A drawable to use as the background. This can be either a reference + to a full drawable resource (such as a PNG image, 9-patch, + XML state list description, etc), or a solid color such as "#ff000000" + (black). + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int View_background = 12; + /** +

+ @attr description + Defines whether this view reacts to click events. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clickable}. + @attr name android:clickable + */ + public static final int View_clickable = 29; + /** +

+ @attr description + Defines text that briefly describes content of the view. This property is used + primarily for accessibility. Since some views do not have textual + representation this attribute can be used for providing such. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#contentDescription}. + @attr name android:contentDescription + */ + public static final int View_contentDescription = 41; + /** +

+ @attr description + Defines the quality of translucent drawing caches. This property is used + only when the drawing cache is enabled and translucent. The default value is auto. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Lets the framework decide what quality level should be used + for the drawing cache.
low1 Low quality. When set to low quality, the drawing cache uses a lower color + depth, thus losing precision in rendering gradients, but uses less memory.
high2 High quality. When set to high quality, the drawing cache uses a higher + color depth but uses more memory.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawingCacheQuality}. + @attr name android:drawingCacheQuality + */ + public static final int View_drawingCacheQuality = 32; + /** +

+ @attr description + When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.) from its direct parent rather than from itself. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duplicateParentState}. + @attr name android:duplicateParentState + */ + public static final int View_duplicateParentState = 33; + /** +

+ @attr description + Defines whether to fade out scrollbars when they are not in use. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeScrollbars}. + @attr name android:fadeScrollbars + */ + public static final int View_fadeScrollbars = 44; + /** +

+ @attr description + This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}). + Using fading edges may introduce noticeable performance + degradations and should be used only when required by the application's + visual design. To request fading edges with API level 14 and above, + use the android:requiresFadingEdge attribute instead. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadingEdge}. + @attr name android:fadingEdge + */ + public static final int View_fadingEdge = 23; + /** +

+ @attr description + Defines the length of the fading edges. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadingEdgeLength}. + @attr name android:fadingEdgeLength + */ + public static final int View_fadingEdgeLength = 24; + /** +

+ @attr description + Specifies whether to filter touches when the view's window is obscured by + another visible window. When set to true, the view will not receive touches + whenever a toast, dialog or other window appears above the view's window. + Refer to the {@link android.view.View} security documentation for more details. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#filterTouchesWhenObscured}. + @attr name android:filterTouchesWhenObscured + */ + public static final int View_filterTouchesWhenObscured = 46; + /** +

+ @attr description + Boolean internal attribute to adjust view layout based on + system windows such as the status bar. + If true, adjusts the padding of this view to leave space for the system windows. + Will only take effect if this view is in a non-embedded activity. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fitsSystemWindows}. + @attr name android:fitsSystemWindows + */ + public static final int View_fitsSystemWindows = 21; + /** +

+ @attr description + Boolean that controls whether a view can take focus. By default the user can not + move focus to a view; by setting this attribute to true the view is + allowed to take focus. This value does not impact the behavior of + directly calling {@link android.view.View#requestFocus}, which will + always request focus regardless of this view. It only impacts where + focus navigation will try to move focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusable}. + @attr name android:focusable + */ + public static final int View_focusable = 18; + /** +

+ @attr description + Boolean that controls whether a view can take focus while in touch mode. + If this is true for a view, that view can gain focus when clicked on, and can keep + focus if another view is clicked on that doesn't have this attribute set to true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusableInTouchMode}. + @attr name android:focusableInTouchMode + */ + public static final int View_focusableInTouchMode = 19; + /** +

+ @attr description + Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hapticFeedbackEnabled}. + @attr name android:hapticFeedbackEnabled + */ + public static final int View_hapticFeedbackEnabled = 39; + /** +

+ @attr description + Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int View_id = 8; + /** +

+ @attr description + Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen. Note: While not recommended, an accessibility service may + decide to ignore this attribute and operate on all views in the view tree. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
auto0 The system determines whether the view is important for accessibility - default + (recommended).
yes1 The view is important for accessibility.
no2 The view is not important for accessibility.
noHideDescendants4 The view is not important for accessibility, nor are any of its descendant + views.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#importantForAccessibility}. + @attr name android:importantForAccessibility + */ + public static final int View_importantForAccessibility = 61; + /** +

+ @attr description + Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method. If not set, the default + value will be true if "scrollbars" has the vertical scrollbar + set, else it will be false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isScrollContainer}. + @attr name android:isScrollContainer + */ + public static final int View_isScrollContainer = 38; + /** +

+ @attr description + Controls whether the view's window should keep the screen on + while visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keepScreenOn}. + @attr name android:keepScreenOn + */ + public static final int View_keepScreenOn = 37; + /** +

+ @attr description + Specifies the id of a view for which this view serves as a label for + accessibility purposes. For example, a TextView before an EditText in + the UI usually specifies what infomation is contained in the EditText. + Hence, the TextView is a label for the EditText. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#labelFor}. + @attr name android:labelFor + */ + public static final int View_labelFor = 67; + /** +

+ @attr description + Specifies the type of layer backing this view. The default value is none. + Refer to {@link android.view.View#setLayerType(int, android.graphics.Paint)} + for more information. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Don't use a layer.
software1 Use a software layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
hardware2 Use a hardware layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layerType}. + @attr name android:layerType + */ + public static final int View_layerType = 59; + /** +

+ @attr description + Defines the direction of layout drawing. This typically is associated with writing + direction of the language script used. The possible values are "ltr" for Left-to-Right, + "rtl" for Right-to-Left, "locale" and "inherit" from parent view. If there is nothing + to inherit, "locale" is used. "locale" falls back to "en-US". "ltr" is the direction + used in "en-US". The default for this attribute is "inherit". + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ltr0 Left-to-Right
rtl1 Right-to-Left
inherit2 Inherit from parent
locale3 Locale
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutDirection}. + @attr name android:layoutDirection + */ + public static final int View_layoutDirection = 64; + /** +

+ @attr description + Defines whether this view reacts to long click events. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#longClickable}. + @attr name android:longClickable + */ + public static final int View_longClickable = 30; + /** +

+ @attr description + Defines the minimum height of the view. It is not guaranteed + the view will be able to achieve this minimum height (for example, + if its parent layout constrains it with less available height). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int View_minHeight = 35; + /** +

+ @attr description + Defines the minimum width of the view. It is not guaranteed + the view will be able to achieve this minimum width (for example, + if its parent layout constrains it with less available width). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int View_minWidth = 34; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusDown}. + @attr name android:nextFocusDown + */ + public static final int View_nextFocusDown = 28; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusForward}. + @attr name android:nextFocusForward + */ + public static final int View_nextFocusForward = 58; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}. + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusLeft}. + @attr name android:nextFocusLeft + */ + public static final int View_nextFocusLeft = 25; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusRight}. + @attr name android:nextFocusRight + */ + public static final int View_nextFocusRight = 26; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusUp}. + @attr name android:nextFocusUp + */ + public static final int View_nextFocusUp = 27; + /** +

+ @attr description + Name of the method in this View's context to invoke when the view is + clicked. This name must correspond to a public method that takes + exactly one parameter of type View. For instance, if you specify + android:onClick="sayHello", you must declare a + public void sayHello(View v) method of your context + (typically, your Activity). + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#onClick}. + @attr name android:onClick + */ + public static final int View_onClick = 40; + /** +

+ @attr description + Defines over-scrolling behavior. This property is used only if the + View is scrollable. Over-scrolling is the ability for the user to + receive feedback when attempting to scroll beyond meaningful content. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
always0 Always show over-scroll effects, even if the content fits entirely + within the available space.
ifContentScrolls1 Only show over-scroll effects if the content is large + enough to meaningfully scroll.
never2 Never show over-scroll effects.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollMode}. + @attr name android:overScrollMode + */ + public static final int View_overScrollMode = 45; + /** +

+ @attr description + Sets the padding, in pixels, of all four edges. Padding is defined as + space between the edges of the view and the view's content. A views size + will include it's padding. If a {@link android.R.attr#background} + is provided, the padding will initially be set to that (0 if the + drawable does not have padding). Explicitly setting a padding value + will override the corresponding padding found in the background. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#padding}. + @attr name android:padding + */ + public static final int View_padding = 13; + /** +

+ @attr description + Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingBottom}. + @attr name android:paddingBottom + */ + public static final int View_paddingBottom = 17; + /** +

+ @attr description + Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingEnd}. + @attr name android:paddingEnd + */ + public static final int View_paddingEnd = 66; + /** +

+ @attr description + Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingLeft}. + @attr name android:paddingLeft + */ + public static final int View_paddingLeft = 14; + /** +

+ @attr description + Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingRight}. + @attr name android:paddingRight + */ + public static final int View_paddingRight = 16; + /** +

+ @attr description + Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingStart}. + @attr name android:paddingStart + */ + public static final int View_paddingStart = 65; + /** +

+ @attr description + Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingTop}. + @attr name android:paddingTop + */ + public static final int View_paddingTop = 15; + /** +

+ @attr description + Defines which edges should be faded on scrolling. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiresFadingEdge}. + @attr name android:requiresFadingEdge + */ + public static final int View_requiresFadingEdge = 60; + /** +

+ @attr description + rotation of the view, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotation}. + @attr name android:rotation + */ + public static final int View_rotation = 54; + /** +

+ @attr description + rotation of the view around the x axis, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotationX}. + @attr name android:rotationX + */ + public static final int View_rotationX = 55; + /** +

+ @attr description + rotation of the view around the y axis, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotationY}. + @attr name android:rotationY + */ + public static final int View_rotationY = 56; + /** +

+ @attr description + If unset, no state will be saved for this view when it is being + frozen. The default is true, allowing the view to be saved + (however it also must have an ID assigned to it for its + state to be saved). Setting this to false only disables the + state for this view, not for its children which may still + be saved. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#saveEnabled}. + @attr name android:saveEnabled + */ + public static final int View_saveEnabled = 31; + /** +

+ @attr description + scale of the view in the x direction. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleX}. + @attr name android:scaleX + */ + public static final int View_scaleX = 52; + /** +

+ @attr description + scale of the view in the y direction. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleY}. + @attr name android:scaleY + */ + public static final int View_scaleY = 53; + /** +

+ @attr description + The initial horizontal scroll offset, in pixels. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollX}. + @attr name android:scrollX + */ + public static final int View_scrollX = 10; + /** +

+ @attr description + The initial vertical scroll offset, in pixels. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollY}. + @attr name android:scrollY + */ + public static final int View_scrollY = 11; + /** +

+ @attr description + Defines whether the horizontal scrollbar track should always be drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarAlwaysDrawHorizontalTrack}. + @attr name android:scrollbarAlwaysDrawHorizontalTrack + */ + public static final int View_scrollbarAlwaysDrawHorizontalTrack = 5; + /** +

+ @attr description + Defines whether the vertical scrollbar track should always be drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarAlwaysDrawVerticalTrack}. + @attr name android:scrollbarAlwaysDrawVerticalTrack + */ + public static final int View_scrollbarAlwaysDrawVerticalTrack = 6; + /** +

+ @attr description + Defines the delay in milliseconds that a scrollbar waits before fade out. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarDefaultDelayBeforeFade}. + @attr name android:scrollbarDefaultDelayBeforeFade + */ + public static final int View_scrollbarDefaultDelayBeforeFade = 43; + /** +

+ @attr description + Defines the delay in milliseconds that a scrollbar takes to fade out. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarFadeDuration}. + @attr name android:scrollbarFadeDuration + */ + public static final int View_scrollbarFadeDuration = 42; + /** +

+ @attr description + Sets the width of vertical scrollbars and height of horizontal scrollbars. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarSize}. + @attr name android:scrollbarSize + */ + public static final int View_scrollbarSize = 0; + /** +

+ @attr description + Controls the scrollbar style and position. The scrollbars can be overlaid or + inset. When inset, they add to the padding of the view. And the + scrollbars can be drawn inside the padding area or on the edge of + the view. For example, if a view has a background drawable and you + want to draw the scrollbars inside the padding specified by the + drawable, you can use insideOverlay or insideInset. If you want them + to appear at the edge of the view, ignoring the padding, then you can + use outsideOverlay or outsideInset. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
insideOverlay0x0 Inside the padding and overlaid
insideInset0x01000000 Inside the padding and inset
outsideOverlay0x02000000 Edge of the view and overlaid
outsideInset0x03000000 Edge of the view and inset
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarStyle}. + @attr name android:scrollbarStyle + */ + public static final int View_scrollbarStyle = 7; + /** +

+ @attr description + Defines the horizontal scrollbar thumb drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarThumbHorizontal}. + @attr name android:scrollbarThumbHorizontal + */ + public static final int View_scrollbarThumbHorizontal = 1; + /** +

+ @attr description + Defines the vertical scrollbar thumb drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarThumbVertical}. + @attr name android:scrollbarThumbVertical + */ + public static final int View_scrollbarThumbVertical = 2; + /** +

+ @attr description + Defines the horizontal scrollbar track drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarTrackHorizontal}. + @attr name android:scrollbarTrackHorizontal + */ + public static final int View_scrollbarTrackHorizontal = 3; + /** +

+ @attr description + Defines the vertical scrollbar track drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarTrackVertical}. + @attr name android:scrollbarTrackVertical + */ + public static final int View_scrollbarTrackVertical = 4; + /** +

+ @attr description + Defines which scrollbars should be displayed on scrolling or not. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No scrollbar is displayed.
horizontal0x00000100 Displays horizontal scrollbar only.
vertical0x00000200 Displays vertical scrollbar only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbars}. + @attr name android:scrollbars + */ + public static final int View_scrollbars = 22; + /** +

+ @attr description + Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#soundEffectsEnabled}. + @attr name android:soundEffectsEnabled + */ + public static final int View_soundEffectsEnabled = 36; + /** +

+ @attr description + Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tag}. + @attr name android:tag + */ + public static final int View_tag = 9; + /** +

+ @attr description + Defines the alignment of the text. A heuristic is used to determine the resolved + text alignment. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
inherit0 Default
gravity1 Default for the root view. The gravity determines the alignment, ALIGN_NORMAL, + ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s + text direction
textStart2 Align to the start of the paragraph, e.g. ALIGN_NORMAL.
textEnd3 Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.
center4 Center the paragraph, e.g. ALIGN_CENTER.
viewStart5 Align to the start of the view, which is ALIGN_LEFT if the view’s resolved + layoutDirection is LTR, and ALIGN_RIGHT otherwise.
viewEnd6 Align to the end of the view, which is ALIGN_RIGHT if the view’s resolved + layoutDirection is LTR, and ALIGN_LEFT otherwise
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAlignment}. + @attr name android:textAlignment + */ + public static final int View_textAlignment = 63; + /** +

+ @attr description + Defines the direction of the text. A heuristic is used to determine the resolved text + direction of paragraphs. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
inherit0 Default
firstStrong1 Default for the root view. The first strong directional character determines the + paragraph direction. If there is no strong directional character, the paragraph + direction is the view’s resolved layout direction.
anyRtl2 The paragraph direction is RTL if it contains any strong RTL character, otherwise + it is LTR if it contains any strong LTR characters. If there are neither, the + paragraph direction is the view’s resolved layout direction.
ltr3 The paragraph direction is left to right.
rtl4 The paragraph direction is right to left.
locale5 The paragraph direction is coming from the system Locale.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textDirection}. + @attr name android:textDirection + */ + public static final int View_textDirection = 62; + /** +

+ @attr description + x location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotX property of the View. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transformPivotX}. + @attr name android:transformPivotX + */ + public static final int View_transformPivotX = 48; + /** +

+ @attr description + y location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotY property of the View. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transformPivotY}. + @attr name android:transformPivotY + */ + public static final int View_transformPivotY = 49; + /** +

+ @attr description + translation in x of the view. This value is added post-layout to the left + property of the view, which is set by its layout. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#translationX}. + @attr name android:translationX + */ + public static final int View_translationX = 50; + /** +

+ @attr description + translation in y of the view. This value is added post-layout to the left + property of the view, which is set by its layout. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#translationY}. + @attr name android:translationY + */ + public static final int View_translationY = 51; + /** +

+ @attr description + Determines which side the vertical scroll bar should be placed on. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
defaultPosition0 Place the scroll bar wherever the system default determines.
left1 Place the scroll bar on the left.
right2 Place the scroll bar on the right.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalScrollbarPosition}. + @attr name android:verticalScrollbarPosition + */ + public static final int View_verticalScrollbarPosition = 57; + /** +

+ @attr description + Controls the initial visibility of the view. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
visible0 Visible on screen; the default value.
invisible1 Not displayed, but taken into account during layout (space is left for it).
gone2 Completely hidden, as if the view had not been added.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#visibility}. + @attr name android:visibility + */ + public static final int View_visibility = 20; + /** Attributes that can be used with a ViewAnimator. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ViewAnimator_animateFirstView android:animateFirstView} Defines whether to animate the current View when the ViewAnimation + is first displayed.
{@link #ViewAnimator_inAnimation android:inAnimation} Identifier for the animation to use when a view is shown.
{@link #ViewAnimator_outAnimation android:outAnimation} Identifier for the animation to use when a view is hidden.
+ @see #ViewAnimator_animateFirstView + @see #ViewAnimator_inAnimation + @see #ViewAnimator_outAnimation + */ + public static final int[] ViewAnimator = { + 0x01010177, 0x01010178, 0x010102d5 + }; + /** +

+ @attr description + Defines whether to animate the current View when the ViewAnimation + is first displayed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateFirstView}. + @attr name android:animateFirstView + */ + public static final int ViewAnimator_animateFirstView = 2; + /** +

+ @attr description + Identifier for the animation to use when a view is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inAnimation}. + @attr name android:inAnimation + */ + public static final int ViewAnimator_inAnimation = 0; + /** +

+ @attr description + Identifier for the animation to use when a view is hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#outAnimation}. + @attr name android:outAnimation + */ + public static final int ViewAnimator_outAnimation = 1; + /** Attributes that can be used with a ViewDrawableStates. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #ViewDrawableStates_state_accelerated android:state_accelerated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated.
{@link #ViewDrawableStates_state_activated android:state_activated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest.
{@link #ViewDrawableStates_state_drag_can_accept android:state_drag_can_accept} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation.
{@link #ViewDrawableStates_state_drag_hovered android:state_drag_hovered} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable.
{@link #ViewDrawableStates_state_enabled android:state_enabled} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled.
{@link #ViewDrawableStates_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
{@link #ViewDrawableStates_state_hovered android:state_hovered} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view.
{@link #ViewDrawableStates_state_pressed android:state_pressed} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view.
{@link #ViewDrawableStates_state_selected android:state_selected} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected.
{@link #ViewDrawableStates_state_window_focused android:state_window_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus.
+ @see #ViewDrawableStates_state_accelerated + @see #ViewDrawableStates_state_activated + @see #ViewDrawableStates_state_drag_can_accept + @see #ViewDrawableStates_state_drag_hovered + @see #ViewDrawableStates_state_enabled + @see #ViewDrawableStates_state_focused + @see #ViewDrawableStates_state_hovered + @see #ViewDrawableStates_state_pressed + @see #ViewDrawableStates_state_selected + @see #ViewDrawableStates_state_window_focused + */ + public static final int[] ViewDrawableStates = { + 0x0101009c, 0x0101009d, 0x0101009e, 0x010100a1, + 0x010100a7, 0x010102fe, 0x0101031b, 0x01010367, + 0x01010368, 0x01010369 + }; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_accelerated}. + @attr name android:state_accelerated + */ + public static final int ViewDrawableStates_state_accelerated = 6; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_activated}. + @attr name android:state_activated + */ + public static final int ViewDrawableStates_state_activated = 5; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_can_accept}. + @attr name android:state_drag_can_accept + */ + public static final int ViewDrawableStates_state_drag_can_accept = 8; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_hovered}. + @attr name android:state_drag_hovered + */ + public static final int ViewDrawableStates_state_drag_hovered = 9; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_enabled}. + @attr name android:state_enabled + */ + public static final int ViewDrawableStates_state_enabled = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int ViewDrawableStates_state_focused = 0; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_hovered}. + @attr name android:state_hovered + */ + public static final int ViewDrawableStates_state_hovered = 7; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_pressed}. + @attr name android:state_pressed + */ + public static final int ViewDrawableStates_state_pressed = 4; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_selected}. + @attr name android:state_selected + */ + public static final int ViewDrawableStates_state_selected = 3; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_window_focused}. + @attr name android:state_window_focused + */ + public static final int ViewDrawableStates_state_window_focused = 1; + /** Attributes that can be used with a ViewFlipper. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewFlipper_autoStart android:autoStart} When true, automatically start animating
{@link #ViewFlipper_flipInterval android:flipInterval}
+ @see #ViewFlipper_autoStart + @see #ViewFlipper_flipInterval + */ + public static final int[] ViewFlipper = { + 0x01010179, 0x010102b5 + }; + /** +

+ @attr description + When true, automatically start animating + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoStart}. + @attr name android:autoStart + */ + public static final int ViewFlipper_autoStart = 1; + /** +

This symbol is the offset where the {@link android.R.attr#flipInterval} + attribute's value can be found in the {@link #ViewFlipper} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:flipInterval + */ + public static final int ViewFlipper_flipInterval = 0; + /** Attributes that can be used with a {@link android.view.ViewGroup} or any + of its subclasses. Also see {@link #ViewGroup_Layout} for + attributes that this class processes in its children. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #ViewGroup_addStatesFromChildren android:addStatesFromChildren} Sets whether this ViewGroup's drawable states also include + its children's drawable states.
{@link #ViewGroup_alwaysDrawnWithCache android:alwaysDrawnWithCache} Defines whether the ViewGroup should always draw its children using their + drawing cache or not.
{@link #ViewGroup_animateLayoutChanges android:animateLayoutChanges} Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run.
{@link #ViewGroup_animationCache android:animationCache} Defines whether layout animations should create a drawing cache for their + children.
{@link #ViewGroup_clipChildren android:clipChildren} Defines whether a child is limited to draw inside of its bounds or not.
{@link #ViewGroup_clipToPadding android:clipToPadding} Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area.
{@link #ViewGroup_descendantFocusability android:descendantFocusability} Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus.
{@link #ViewGroup_layoutAnimation android:layoutAnimation} Defines the layout animation to use the first time the ViewGroup is laid out.
{@link #ViewGroup_layoutMode android:layoutMode} Defines the layout mode of this ViewGroup.
{@link #ViewGroup_persistentDrawingCache android:persistentDrawingCache} Defines the persistence of the drawing cache.
{@link #ViewGroup_splitMotionEvents android:splitMotionEvents} Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch.
+ @see #ViewGroup_addStatesFromChildren + @see #ViewGroup_alwaysDrawnWithCache + @see #ViewGroup_animateLayoutChanges + @see #ViewGroup_animationCache + @see #ViewGroup_clipChildren + @see #ViewGroup_clipToPadding + @see #ViewGroup_descendantFocusability + @see #ViewGroup_layoutAnimation + @see #ViewGroup_layoutMode + @see #ViewGroup_persistentDrawingCache + @see #ViewGroup_splitMotionEvents + */ + public static final int[] ViewGroup = { + 0x010100ea, 0x010100eb, 0x010100ec, 0x010100ed, + 0x010100ee, 0x010100ef, 0x010100f0, 0x010100f1, + 0x010102ef, 0x010102f2, 0x010103da + }; + /** +

+ @attr description + Sets whether this ViewGroup's drawable states also include + its children's drawable states. This is used, for example, to + make a group appear to be focused when its child EditText or button + is focused. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#addStatesFromChildren}. + @attr name android:addStatesFromChildren + */ + public static final int ViewGroup_addStatesFromChildren = 6; + /** +

+ @attr description + Defines whether the ViewGroup should always draw its children using their + drawing cache or not. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alwaysDrawnWithCache}. + @attr name android:alwaysDrawnWithCache + */ + public static final int ViewGroup_alwaysDrawnWithCache = 5; + /** +

+ @attr description + Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run. When this flag is set to true, a default + LayoutTransition object will be set on the ViewGroup container and default + animations will run when these layout changes occur. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateLayoutChanges}. + @attr name android:animateLayoutChanges + */ + public static final int ViewGroup_animateLayoutChanges = 9; + /** +

+ @attr description + Defines whether layout animations should create a drawing cache for their + children. Enabling the animation cache consumes more memory and requires + a longer initialization but provides better performance. The animation + cache is enabled by default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationCache}. + @attr name android:animationCache + */ + public static final int ViewGroup_animationCache = 3; + /** +

+ @attr description + Defines whether a child is limited to draw inside of its bounds or not. + This is useful with animations that scale the size of the children to more + than 100% for instance. In such a case, this property should be set to false + to allow the children to draw outside of their bounds. The default value of + this property is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipChildren}. + @attr name android:clipChildren + */ + public static final int ViewGroup_clipChildren = 0; + /** +

+ @attr description + Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area. This property is set to true by default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipToPadding}. + @attr name android:clipToPadding + */ + public static final int ViewGroup_clipToPadding = 1; + /** +

+ @attr description + Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
beforeDescendants0 The ViewGroup will get focus before any of its descendants.
afterDescendants1 The ViewGroup will get focus only if none of its descendants want it.
blocksDescendants2 The ViewGroup will block its descendants from receiving focus.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#descendantFocusability}. + @attr name android:descendantFocusability + */ + public static final int ViewGroup_descendantFocusability = 7; + /** +

+ @attr description + Defines the layout animation to use the first time the ViewGroup is laid out. + Layout animations can also be started manually after the first layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutAnimation}. + @attr name android:layoutAnimation + */ + public static final int ViewGroup_layoutAnimation = 2; + /** +

+ @attr description + Defines the layout mode of this ViewGroup. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
clipBounds0 Use the children's clip bounds when laying out this container.
opticalBounds1 Use the children's optical bounds when laying out this container.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutMode}. + @attr name android:layoutMode + */ + public static final int ViewGroup_layoutMode = 10; + /** +

+ @attr description + Defines the persistence of the drawing cache. The drawing cache might be + enabled by a ViewGroup for all its children in specific situations (for + instance during a scrolling.) This property lets you persist the cache + in memory after its initial usage. Persisting the cache consumes more + memory but may prevent frequent garbage collection is the cache is created + over and over again. By default the persistence is set to scrolling. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0x0 The drawing cache is not persisted after use.
animation0x1 The drawing cache is persisted after a layout animation.
scrolling0x2 The drawing cache is persisted after a scroll.
all0x3 The drawing cache is always persisted.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistentDrawingCache}. + @attr name android:persistentDrawingCache + */ + public static final int ViewGroup_persistentDrawingCache = 4; + /** +

+ @attr description + Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch. + If false (default), touch events will be dispatched to + the child view where the first pointer went down until + the last pointer goes up. + If true, touch events may be dispatched to multiple children. + MotionEvents for each pointer will be dispatched to the child + view where the initial ACTION_DOWN event happened. + See {@link android.view.ViewGroup#setMotionEventSplittingEnabled(boolean)} + for more information. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#splitMotionEvents}. + @attr name android:splitMotionEvents + */ + public static final int ViewGroup_splitMotionEvents = 8; + /** This is the basic set of layout attributes that are common to all + layout managers. These attributes are specified with the rest of + a view's normal attributes (such as {@link android.R.attr#background}, + but will be parsed by the view's parent and ignored by the child. +

The values defined here correspond to the base layout attribute + class {@link android.view.ViewGroup.LayoutParams}. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewGroup_Layout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #ViewGroup_Layout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #ViewGroup_Layout_layout_height + @see #ViewGroup_Layout_layout_width + */ + public static final int[] ViewGroup_Layout = { + 0x010100f4, 0x010100f5 + }; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int ViewGroup_Layout_layout_height = 1; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int ViewGroup_Layout_layout_width = 0; + /** This is the basic set of layout attributes for layout managers that + wish to place margins around their child views. + These attributes are specified with the rest of + a view's normal attributes (such as {@link android.R.attr#background}, + but will be parsed by the view's parent and ignored by the child. +

The values defined here correspond to the base layout attribute + class {@link android.view.ViewGroup.MarginLayoutParams}. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #ViewGroup_MarginLayout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #ViewGroup_MarginLayout_layout_margin android:layout_margin} Specifies extra space on the left, top, right and bottom + sides of this view.
{@link #ViewGroup_MarginLayout_layout_marginBottom android:layout_marginBottom} Specifies extra space on the bottom side of this view.
{@link #ViewGroup_MarginLayout_layout_marginEnd android:layout_marginEnd} Specifies extra space on the end side of this view.
{@link #ViewGroup_MarginLayout_layout_marginLeft android:layout_marginLeft} Specifies extra space on the left side of this view.
{@link #ViewGroup_MarginLayout_layout_marginRight android:layout_marginRight} Specifies extra space on the right side of this view.
{@link #ViewGroup_MarginLayout_layout_marginStart android:layout_marginStart} Specifies extra space on the start side of this view.
{@link #ViewGroup_MarginLayout_layout_marginTop android:layout_marginTop} Specifies extra space on the top side of this view.
{@link #ViewGroup_MarginLayout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #ViewGroup_MarginLayout_layout_height + @see #ViewGroup_MarginLayout_layout_margin + @see #ViewGroup_MarginLayout_layout_marginBottom + @see #ViewGroup_MarginLayout_layout_marginEnd + @see #ViewGroup_MarginLayout_layout_marginLeft + @see #ViewGroup_MarginLayout_layout_marginRight + @see #ViewGroup_MarginLayout_layout_marginStart + @see #ViewGroup_MarginLayout_layout_marginTop + @see #ViewGroup_MarginLayout_layout_width + */ + public static final int[] ViewGroup_MarginLayout = { + 0x010100f4, 0x010100f5, 0x010100f6, 0x010100f7, + 0x010100f8, 0x010100f9, 0x010100fa, 0x010103b5, + 0x010103b6 + }; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int ViewGroup_MarginLayout_layout_height = 1; + /** +

+ @attr description + Specifies extra space on the left, top, right and bottom + sides of this view. This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_margin}. + @attr name android:layout_margin + */ + public static final int ViewGroup_MarginLayout_layout_margin = 2; + /** +

+ @attr description + Specifies extra space on the bottom side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginBottom}. + @attr name android:layout_marginBottom + */ + public static final int ViewGroup_MarginLayout_layout_marginBottom = 6; + /** +

+ @attr description + Specifies extra space on the end side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginEnd}. + @attr name android:layout_marginEnd + */ + public static final int ViewGroup_MarginLayout_layout_marginEnd = 8; + /** +

+ @attr description + Specifies extra space on the left side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginLeft}. + @attr name android:layout_marginLeft + */ + public static final int ViewGroup_MarginLayout_layout_marginLeft = 3; + /** +

+ @attr description + Specifies extra space on the right side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginRight}. + @attr name android:layout_marginRight + */ + public static final int ViewGroup_MarginLayout_layout_marginRight = 5; + /** +

+ @attr description + Specifies extra space on the start side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginStart}. + @attr name android:layout_marginStart + */ + public static final int ViewGroup_MarginLayout_layout_marginStart = 7; + /** +

+ @attr description + Specifies extra space on the top side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginTop}. + @attr name android:layout_marginTop + */ + public static final int ViewGroup_MarginLayout_layout_marginTop = 4; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int ViewGroup_MarginLayout_layout_width = 0; + /** A {@link android.view.ViewStub} lets you lazily include other XML layouts + inside your application at runtime. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewStub_inflatedId android:inflatedId} Overrides the id of the inflated View with this value.
{@link #ViewStub_layout android:layout} Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so.
+ @see #ViewStub_inflatedId + @see #ViewStub_layout + */ + public static final int[] ViewStub = { + 0x010100f2, 0x010100f3 + }; + /** +

+ @attr description + Overrides the id of the inflated View with this value. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inflatedId}. + @attr name android:inflatedId + */ + public static final int ViewStub_inflatedId = 1; + /** +

+ @attr description + Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int ViewStub_layout = 0; + /** Attributes that can be used with a ViewSwitcher. + */ + public static final int[] ViewSwitcher = { + + }; + /** Base attributes available to VolumePreference. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #VolumePreference_streamType android:streamType} Different audio stream types.
+ @see #VolumePreference_streamType + */ + public static final int[] VolumePreference = { + 0x01010209 + }; + /** +

+ @attr description + Different audio stream types. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
voice0
system1
ring2
music3
alarm4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#streamType}. + @attr name android:streamType + */ + public static final int VolumePreference_streamType = 0; + /** Use wallpaper as the root tag of the XML resource that + describes an + {@link android.service.wallpaper.WallpaperService}, which is + referenced from its + {@link android.service.wallpaper.WallpaperService#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Wallpaper_author android:author} Name of the author of this component, e.
{@link #Wallpaper_description android:description} Short description of the component's purpose or behavior.
{@link #Wallpaper_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
{@link #Wallpaper_thumbnail android:thumbnail} Reference to a the wallpaper's thumbnail bitmap.
+ @see #Wallpaper_author + @see #Wallpaper_description + @see #Wallpaper_settingsActivity + @see #Wallpaper_thumbnail + */ + public static final int[] Wallpaper = { + 0x01010020, 0x01010225, 0x010102a5, 0x010102b4 + }; + /** +

+ @attr description + Name of the author of this component, e.g. Google. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#author}. + @attr name android:author + */ + public static final int Wallpaper_author = 3; + /** +

+ @attr description + Short description of the component's purpose or behavior. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int Wallpaper_description = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int Wallpaper_settingsActivity = 1; + /** +

+ @attr description + Reference to a the wallpaper's thumbnail bitmap. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbnail}. + @attr name android:thumbnail + */ + public static final int Wallpaper_thumbnail = 2; + /** Use wallpaper-preview as the root tag of the XML resource that + describes a wallpaper preview. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #WallpaperPreviewInfo_staticWallpaperPreview android:staticWallpaperPreview} A resource id of a static drawable.
+ @see #WallpaperPreviewInfo_staticWallpaperPreview + */ + public static final int[] WallpaperPreviewInfo = { + 0x01010331 + }; + /** +

+ @attr description + A resource id of a static drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#staticWallpaperPreview}. + @attr name android:staticWallpaperPreview + */ + public static final int WallpaperPreviewInfo_staticWallpaperPreview = 0; + /** @hide +

Includes the following attributes:

+ + + + +
AttributeDescription
+ */ + public static final int[] WeightedLinearLayout = { + 0x0101043e, 0x0101043f, 0x01010440, 0x01010441 + }; + /** The set of attributes that describe a Windows's theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Window_backgroundDimAmount android:backgroundDimAmount} Default background dim amount when a menu, dialog, or something similar pops up.
{@link #Window_backgroundDimEnabled android:backgroundDimEnabled} Control whether dimming behind the window is enabled.
{@link #Window_textColor android:textColor} Color of text (usually same as colorForeground).
{@link #Window_windowActionBar android:windowActionBar} Flag indicating whether this window should have an Action Bar + in place of the usual title bar.
{@link #Window_windowActionBarOverlay android:windowActionBarOverlay} Flag indicating whether this window's Action Bar should overlay + application content.
{@link #Window_windowActionModeOverlay android:windowActionModeOverlay} Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar).
{@link #Window_windowAnimationStyle android:windowAnimationStyle} Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}.
{@link #Window_windowBackground android:windowBackground} Drawable to use as the overall window background.
{@link #Window_windowCloseOnTouchOutside android:windowCloseOnTouchOutside} Control whether a container should automatically close itself if + the user touches outside of it.
{@link #Window_windowContentOverlay android:windowContentOverlay} This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title.
{@link #Window_windowDisablePreview android:windowDisablePreview} Flag allowing you to disable the preview animation for a window.
{@link #Window_windowEnableSplitTouch android:windowEnableSplitTouch} Flag indicating that this window should allow touches to be split + across other windows that also support split touch.
{@link #Window_windowFrame android:windowFrame} Drawable to use as a frame around the window.
{@link #Window_windowFullscreen android:windowFullscreen} Flag indicating whether this window should fill the entire screen.
{@link #Window_windowIsFloating android:windowIsFloating} Flag indicating whether this is a floating window.
{@link #Window_windowIsTranslucent android:windowIsTranslucent} Flag indicating whether this is a translucent window.
{@link #Window_windowMinWidthMajor android:windowMinWidthMajor} The minimum width the window is allowed to be, along the major + axis of the screen.
{@link #Window_windowMinWidthMinor android:windowMinWidthMinor} The minimum width the window is allowed to be, along the minor + axis of the screen.
{@link #Window_windowNoDisplay android:windowNoDisplay} Flag indicating that this window should not be displayed at all.
{@link #Window_windowNoTitle android:windowNoTitle} Flag indicating whether there should be no title on this window.
{@link #Window_windowOverscan android:windowOverscan} Flag indicating whether this window should extend into overscan region.
{@link #Window_windowShowWallpaper android:windowShowWallpaper} Flag indicating that this window's background should be the + user's current wallpaper.
{@link #Window_windowSoftInputMode android:windowSoftInputMode} Defines the default soft input state that this window would + like when it is displayed.
{@link #Window_windowTranslucentNavigation android:windowTranslucentNavigation} Flag indicating whether this window requests a translucent navigation bar.
{@link #Window_windowTranslucentStatus android:windowTranslucentStatus} Flag indicating whether this window requests a translucent status bar.
+ @see #Window_backgroundDimAmount + @see #Window_backgroundDimEnabled + @see #Window_textColor + @see #Window_windowActionBar + @see #Window_windowActionBarOverlay + @see #Window_windowActionModeOverlay + @see #Window_windowAnimationStyle + @see #Window_windowBackground + @see #Window_windowCloseOnTouchOutside + @see #Window_windowContentOverlay + @see #Window_windowDisablePreview + @see #Window_windowEnableSplitTouch + @see #Window_windowFrame + @see #Window_windowFullscreen + @see #Window_windowIsFloating + @see #Window_windowIsTranslucent + @see #Window_windowMinWidthMajor + @see #Window_windowMinWidthMinor + @see #Window_windowNoDisplay + @see #Window_windowNoTitle + @see #Window_windowOverscan + @see #Window_windowShowWallpaper + @see #Window_windowSoftInputMode + @see #Window_windowTranslucentNavigation + @see #Window_windowTranslucentStatus + */ + public static final int[] Window = { + 0x01010032, 0x01010054, 0x01010055, 0x01010056, + 0x01010057, 0x01010058, 0x01010059, 0x01010098, + 0x010100ae, 0x0101020d, 0x0101021e, 0x0101021f, + 0x01010222, 0x0101022b, 0x01010292, 0x010102cd, + 0x010102dd, 0x010102e4, 0x01010317, 0x01010356, + 0x01010357, 0x0101035b, 0x010103cf, 0x010103ef, + 0x010103f0, 0x010103fa, 0x01010424, 0x01010425, + 0x01010426, 0x01010427 + }; + /** +

+ @attr description + Default background dim amount when a menu, dialog, or something similar pops up. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimAmount}. + @attr name android:backgroundDimAmount + */ + public static final int Window_backgroundDimAmount = 0; + /** +

+ @attr description + Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimEnabled}. + @attr name android:backgroundDimEnabled + */ + public static final int Window_backgroundDimEnabled = 11; + /** +

+ @attr description + Color of text (usually same as colorForeground). + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int Window_textColor = 7; + /** +

+ @attr description + Flag indicating whether this window should have an Action Bar + in place of the usual title bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBar}. + @attr name android:windowActionBar + */ + public static final int Window_windowActionBar = 15; + /** +

+ @attr description + Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBarOverlay}. + @attr name android:windowActionBarOverlay + */ + public static final int Window_windowActionBarOverlay = 17; + /** +

+ @attr description + Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionModeOverlay}. + @attr name android:windowActionModeOverlay + */ + public static final int Window_windowActionModeOverlay = 16; + /** +

+ @attr description + Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int Window_windowAnimationStyle = 8; + /** +

+ @attr description + Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+ + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowBackground}. + @attr name android:windowBackground + */ + public static final int Window_windowBackground = 1; + /** +

+ @attr description + Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowCloseOnTouchOutside}. + @attr name android:windowCloseOnTouchOutside + */ + public static final int Window_windowCloseOnTouchOutside = 21; + /** +

+ @attr description + This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowContentOverlay}. + @attr name android:windowContentOverlay + */ + public static final int Window_windowContentOverlay = 6; + /** +

+ @attr description + Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowDisablePreview}. + @attr name android:windowDisablePreview + */ + public static final int Window_windowDisablePreview = 12; + /** +

+ @attr description + Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnableSplitTouch}. + @attr name android:windowEnableSplitTouch + */ + public static final int Window_windowEnableSplitTouch = 18; + /** +

+ @attr description + Drawable to use as a frame around the window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFrame}. + @attr name android:windowFrame + */ + public static final int Window_windowFrame = 2; + /** +

+ @attr description + Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFullscreen}. + @attr name android:windowFullscreen + */ + public static final int Window_windowFullscreen = 9; + /** +

+ @attr description + Flag indicating whether this is a floating window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsFloating}. + @attr name android:windowIsFloating + */ + public static final int Window_windowIsFloating = 4; + /** +

+ @attr description + Flag indicating whether this is a translucent window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsTranslucent}. + @attr name android:windowIsTranslucent + */ + public static final int Window_windowIsTranslucent = 5; + /** +

+ @attr description + The minimum width the window is allowed to be, along the major + axis of the screen. That is, when in landscape. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowMinWidthMajor}. + @attr name android:windowMinWidthMajor + */ + public static final int Window_windowMinWidthMajor = 19; + /** +

+ @attr description + The minimum width the window is allowed to be, along the minor + axis of the screen. That is, when in portrait. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowMinWidthMinor}. + @attr name android:windowMinWidthMinor + */ + public static final int Window_windowMinWidthMinor = 20; + /** +

+ @attr description + Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoDisplay}. + @attr name android:windowNoDisplay + */ + public static final int Window_windowNoDisplay = 10; + /** +

+ @attr description + Flag indicating whether there should be no title on this window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoTitle}. + @attr name android:windowNoTitle + */ + public static final int Window_windowNoTitle = 3; + /** +

+ @attr description + Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowOverscan}. + @attr name android:windowOverscan + */ + public static final int Window_windowOverscan = 22; + /** +

+ @attr description + Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowWallpaper}. + @attr name android:windowShowWallpaper + */ + public static final int Window_windowShowWallpaper = 14; + /** +

+ @attr description + Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int Window_windowSoftInputMode = 13; + /** +

+ @attr description + Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentNavigation}. + @attr name android:windowTranslucentNavigation + */ + public static final int Window_windowTranslucentNavigation = 24; + /** +

+ @attr description + Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentStatus}. + @attr name android:windowTranslucentStatus + */ + public static final int Window_windowTranslucentStatus = 23; + /** Window animation class attributes. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #WindowAnimation_activityCloseEnterAnimation android:activityCloseEnterAnimation} When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen).
{@link #WindowAnimation_activityCloseExitAnimation android:activityCloseExitAnimation} When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen).
{@link #WindowAnimation_activityOpenEnterAnimation android:activityOpenEnterAnimation} When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen).
{@link #WindowAnimation_activityOpenExitAnimation android:activityOpenExitAnimation} When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen).
{@link #WindowAnimation_taskCloseEnterAnimation android:taskCloseEnterAnimation} When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen).
{@link #WindowAnimation_taskCloseExitAnimation android:taskCloseExitAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen).
{@link #WindowAnimation_taskOpenEnterAnimation android:taskOpenEnterAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen).
{@link #WindowAnimation_taskOpenExitAnimation android:taskOpenExitAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen).
{@link #WindowAnimation_taskToBackEnterAnimation android:taskToBackEnterAnimation} When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen).
{@link #WindowAnimation_taskToBackExitAnimation android:taskToBackExitAnimation} When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen).
{@link #WindowAnimation_taskToFrontEnterAnimation android:taskToFrontEnterAnimation} When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen).
{@link #WindowAnimation_taskToFrontExitAnimation android:taskToFrontExitAnimation} When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperCloseEnterAnimation android:wallpaperCloseEnterAnimation} When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen).
{@link #WindowAnimation_wallpaperCloseExitAnimation android:wallpaperCloseExitAnimation} When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen).
{@link #WindowAnimation_wallpaperIntraCloseEnterAnimation android:wallpaperIntraCloseEnterAnimation} When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen).
{@link #WindowAnimation_wallpaperIntraCloseExitAnimation android:wallpaperIntraCloseExitAnimation} When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperIntraOpenEnterAnimation android:wallpaperIntraOpenEnterAnimation} When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen).
{@link #WindowAnimation_wallpaperIntraOpenExitAnimation android:wallpaperIntraOpenExitAnimation} When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperOpenEnterAnimation android:wallpaperOpenEnterAnimation} When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen).
{@link #WindowAnimation_wallpaperOpenExitAnimation android:wallpaperOpenExitAnimation} When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen).
{@link #WindowAnimation_windowEnterAnimation android:windowEnterAnimation} The animation used when a window is being added.
{@link #WindowAnimation_windowExitAnimation android:windowExitAnimation} The animation used when a window is being removed.
{@link #WindowAnimation_windowHideAnimation android:windowHideAnimation} The animation used when a window is going from VISIBLE to INVISIBLE.
{@link #WindowAnimation_windowShowAnimation android:windowShowAnimation} The animation used when a window is going from INVISIBLE to VISIBLE.
+ @see #WindowAnimation_activityCloseEnterAnimation + @see #WindowAnimation_activityCloseExitAnimation + @see #WindowAnimation_activityOpenEnterAnimation + @see #WindowAnimation_activityOpenExitAnimation + @see #WindowAnimation_taskCloseEnterAnimation + @see #WindowAnimation_taskCloseExitAnimation + @see #WindowAnimation_taskOpenEnterAnimation + @see #WindowAnimation_taskOpenExitAnimation + @see #WindowAnimation_taskToBackEnterAnimation + @see #WindowAnimation_taskToBackExitAnimation + @see #WindowAnimation_taskToFrontEnterAnimation + @see #WindowAnimation_taskToFrontExitAnimation + @see #WindowAnimation_wallpaperCloseEnterAnimation + @see #WindowAnimation_wallpaperCloseExitAnimation + @see #WindowAnimation_wallpaperIntraCloseEnterAnimation + @see #WindowAnimation_wallpaperIntraCloseExitAnimation + @see #WindowAnimation_wallpaperIntraOpenEnterAnimation + @see #WindowAnimation_wallpaperIntraOpenExitAnimation + @see #WindowAnimation_wallpaperOpenEnterAnimation + @see #WindowAnimation_wallpaperOpenExitAnimation + @see #WindowAnimation_windowEnterAnimation + @see #WindowAnimation_windowExitAnimation + @see #WindowAnimation_windowHideAnimation + @see #WindowAnimation_windowShowAnimation + */ + public static final int[] WindowAnimation = { + 0x010100b4, 0x010100b5, 0x010100b6, 0x010100b7, + 0x010100b8, 0x010100b9, 0x010100ba, 0x010100bb, + 0x010100bc, 0x010100bd, 0x010100be, 0x010100bf, + 0x010100c0, 0x010100c1, 0x010100c2, 0x010100c3, + 0x01010293, 0x01010294, 0x01010295, 0x01010296, + 0x01010297, 0x01010298, 0x01010299, 0x0101029a + }; + /** +

+ @attr description + When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityCloseEnterAnimation}. + @attr name android:activityCloseEnterAnimation + */ + public static final int WindowAnimation_activityCloseEnterAnimation = 6; + /** +

+ @attr description + When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityCloseExitAnimation}. + @attr name android:activityCloseExitAnimation + */ + public static final int WindowAnimation_activityCloseExitAnimation = 7; + /** +

+ @attr description + When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityOpenEnterAnimation}. + @attr name android:activityOpenEnterAnimation + */ + public static final int WindowAnimation_activityOpenEnterAnimation = 4; + /** +

+ @attr description + When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityOpenExitAnimation}. + @attr name android:activityOpenExitAnimation + */ + public static final int WindowAnimation_activityOpenExitAnimation = 5; + /** +

+ @attr description + When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskCloseEnterAnimation}. + @attr name android:taskCloseEnterAnimation + */ + public static final int WindowAnimation_taskCloseEnterAnimation = 10; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskCloseExitAnimation}. + @attr name android:taskCloseExitAnimation + */ + public static final int WindowAnimation_taskCloseExitAnimation = 11; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskOpenEnterAnimation}. + @attr name android:taskOpenEnterAnimation + */ + public static final int WindowAnimation_taskOpenEnterAnimation = 8; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskOpenExitAnimation}. + @attr name android:taskOpenExitAnimation + */ + public static final int WindowAnimation_taskOpenExitAnimation = 9; + /** +

+ @attr description + When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToBackEnterAnimation}. + @attr name android:taskToBackEnterAnimation + */ + public static final int WindowAnimation_taskToBackEnterAnimation = 14; + /** +

+ @attr description + When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToBackExitAnimation}. + @attr name android:taskToBackExitAnimation + */ + public static final int WindowAnimation_taskToBackExitAnimation = 15; + /** +

+ @attr description + When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToFrontEnterAnimation}. + @attr name android:taskToFrontEnterAnimation + */ + public static final int WindowAnimation_taskToFrontEnterAnimation = 12; + /** +

+ @attr description + When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToFrontExitAnimation}. + @attr name android:taskToFrontExitAnimation + */ + public static final int WindowAnimation_taskToFrontExitAnimation = 13; + /** +

+ @attr description + When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperCloseEnterAnimation}. + @attr name android:wallpaperCloseEnterAnimation + */ + public static final int WindowAnimation_wallpaperCloseEnterAnimation = 18; + /** +

+ @attr description + When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperCloseExitAnimation}. + @attr name android:wallpaperCloseExitAnimation + */ + public static final int WindowAnimation_wallpaperCloseExitAnimation = 19; + /** +

+ @attr description + When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraCloseEnterAnimation}. + @attr name android:wallpaperIntraCloseEnterAnimation + */ + public static final int WindowAnimation_wallpaperIntraCloseEnterAnimation = 22; + /** +

+ @attr description + When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraCloseExitAnimation}. + @attr name android:wallpaperIntraCloseExitAnimation + */ + public static final int WindowAnimation_wallpaperIntraCloseExitAnimation = 23; + /** +

+ @attr description + When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraOpenEnterAnimation}. + @attr name android:wallpaperIntraOpenEnterAnimation + */ + public static final int WindowAnimation_wallpaperIntraOpenEnterAnimation = 20; + /** +

+ @attr description + When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraOpenExitAnimation}. + @attr name android:wallpaperIntraOpenExitAnimation + */ + public static final int WindowAnimation_wallpaperIntraOpenExitAnimation = 21; + /** +

+ @attr description + When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperOpenEnterAnimation}. + @attr name android:wallpaperOpenEnterAnimation + */ + public static final int WindowAnimation_wallpaperOpenEnterAnimation = 16; + /** +

+ @attr description + When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperOpenExitAnimation}. + @attr name android:wallpaperOpenExitAnimation + */ + public static final int WindowAnimation_wallpaperOpenExitAnimation = 17; + /** +

+ @attr description + The animation used when a window is being added. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnterAnimation}. + @attr name android:windowEnterAnimation + */ + public static final int WindowAnimation_windowEnterAnimation = 0; + /** +

+ @attr description + The animation used when a window is being removed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowExitAnimation}. + @attr name android:windowExitAnimation + */ + public static final int WindowAnimation_windowExitAnimation = 1; + /** +

+ @attr description + The animation used when a window is going from VISIBLE to INVISIBLE. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowHideAnimation}. + @attr name android:windowHideAnimation + */ + public static final int WindowAnimation_windowHideAnimation = 3; + /** +

+ @attr description + The animation used when a window is going from INVISIBLE to VISIBLE. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowAnimation}. + @attr name android:windowShowAnimation + */ + public static final int WindowAnimation_windowShowAnimation = 2; + }; +} diff --git a/src/api-impl/android/annotation/PrivateApi.java b/src/api-impl/android/annotation/PrivateApi.java new file mode 100644 index 00000000..985eafec --- /dev/null +++ b/src/api-impl/android/annotation/PrivateApi.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Indicates an API is exposed for use by bundled applications. + *

+ * These APIs are not guaranteed to remain consistent release-to-release, + * and are not for use by apps linking against the SDK. + * @hide + */ +@Retention(RetentionPolicy.SOURCE) +public @interface PrivateApi { +} diff --git a/src/api-impl/android/annotation/SdkConstant.java b/src/api-impl/android/annotation/SdkConstant.java new file mode 100644 index 00000000..0a531860 --- /dev/null +++ b/src/api-impl/android/annotation/SdkConstant.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.annotation; + +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Indicates a constant field value should be exported to be used in the SDK tools. + * @hide + */ +@Target({ ElementType.FIELD }) +@Retention(RetentionPolicy.SOURCE) +public @interface SdkConstant { + public static enum SdkConstantType { + ACTIVITY_INTENT_ACTION, BROADCAST_INTENT_ACTION, SERVICE_ACTION, INTENT_CATEGORY, FEATURE; + } + + SdkConstantType value(); +} diff --git a/src/api-impl/android/annotation/SuppressLint.java b/src/api-impl/android/annotation/SuppressLint.java new file mode 100644 index 00000000..2d3456b0 --- /dev/null +++ b/src/api-impl/android/annotation/SuppressLint.java @@ -0,0 +1,38 @@ +/* + * 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 android.annotation; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.LOCAL_VARIABLE; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Indicates that Lint should ignore the specified warnings for the annotated element. */ +@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) +@Retention(RetentionPolicy.CLASS) +public @interface SuppressLint { + /** + * The set of warnings (identified by the lint issue id) that should be + * ignored by lint. It is not an error to specify an unrecognized name. + */ + String[] value(); +} diff --git a/src/api-impl/android/annotation/TargetApi.java b/src/api-impl/android/annotation/TargetApi.java new file mode 100644 index 00000000..ea178903 --- /dev/null +++ b/src/api-impl/android/annotation/TargetApi.java @@ -0,0 +1,35 @@ +/* + * 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 android.annotation; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Indicates that Lint should treat this type as targeting a given API level, no matter what the + project target is. */ +@Target({TYPE, METHOD, CONSTRUCTOR}) +@Retention(RetentionPolicy.CLASS) +public @interface TargetApi { + /** + * This sets the target api level for the type.. + */ + int value(); +} diff --git a/src/api-impl/android/annotation/Widget.java b/src/api-impl/android/annotation/Widget.java new file mode 100644 index 00000000..6756cd73 --- /dev/null +++ b/src/api-impl/android/annotation/Widget.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.annotation; + +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Indicates a class is a widget usable by application developers to create UI. + *

+ * This must be used in cases where: + *

    + *
  • The widget is not in the package android.widget
  • + *
  • The widget extends android.view.ViewGroup
  • + *
+ * @hide + */ +@Target({ ElementType.TYPE }) +@Retention(RetentionPolicy.SOURCE) +public @interface Widget { +} diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java new file mode 100644 index 00000000..b008a817 --- /dev/null +++ b/src/api-impl/android/app/Activity.java @@ -0,0 +1,172 @@ +package android.app; + +import android.content.Context; +import android.content.ComponentName; +import android.content.Intent; +import android.os.Bundle; + +import android.widget.TextView; +import android.view.View; +import android.view.LayoutInflater; +import android.view.Window; +import android.view.WindowManager; +import android.view.WindowManagerImpl; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserFactory; + +import java.io.FileReader; +import java.io.StringReader; + +public class Activity extends Context { + LayoutInflater layout_inflater; + Window window = new Window(); + + protected void set_window(long native_window) { + window.native_window = native_window; + } + + public Activity() { + layout_inflater = new LayoutInflater(); + } + + public View root_view; + + public final Application getApplication () { + return (Application)getApplicationContext(); + } + + public WindowManager getWindowManager() { + return new WindowManagerImpl(); + } + + public ComponentName getComponentName() { + return null; + } + + public Intent getIntent() { + return null; // this is the main activity, and it wasn't opened as a result of someone calling "open with" +// return new Intent(); + } + + public boolean isFinishing() { + return false; // FIXME + } + + public final boolean requestWindowFeature(int featureId) { + return false; // whatever feature it is, it's probably not supported + } + + public final void setVolumeControlStream(int streamType) {} + + protected void onCreate(Bundle savedInstanceState) { + System.out.println("- onCreate - yay!"); + + return; + } + + protected void onStart() { + System.out.println("- onStart - yay!"); + + return; + } + + protected void onRestart() { + System.out.println("- onRestart - yay!"); + + return; + } + + protected void onResume() { + System.out.println("- onResume - yay!"); + + return; + } + + protected void onPause() { + System.out.println("- onPause - yay!"); + + return; + } + + protected void onStop() { + System.out.println("- onStop - yay!"); + + return; + } + + protected void onDestroy() { + System.out.println("- onDestroy - yay!"); + + return; + } + + public void onWindowFocusChanged(boolean hasFocus) { + System.out.println("- onWindowFocusChanged - yay! (hasFocus: "+hasFocus+")"); + + return; + } + + /* --- */ + + public void setContentView(int layoutResID) throws Exception { + System.out.println("- setContentView - yay!"); + + String layout_xml_file = "data/" + getString(layoutResID); + + System.out.println("loading layout from: " + layout_xml_file); + + XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); + factory.setNamespaceAware(true); + XmlPullParser xpp = factory.newPullParser(); + + xpp.setInput( new FileReader(layout_xml_file) ); + + root_view = layout_inflater.inflate(xpp, null, false); + + System.out.println("~~~~~~~~~~~"); + System.out.println(root_view); + System.out.println(root_view.widget); + System.out.println("~~~~~~~~~~~"); + + setContentView(root_view); + +/* Window w = new Window(); + w.setTitle(this.toString()); + w.setDefaultSize(540, 960); + w.add(root_view.widget); + w.showAll(); + + + w.connect(new Window.DeleteEvent() { + public boolean onDeleteEvent(Widget source, Event event) { + Gtk.mainQuit(); + return false; + } + });*/ + } + + public void setContentView(View view) { + window.setContentView(view); + } + + public T findViewById(int id) { + System.out.println("- findViewById - asked for view with id: " + id); + View view = View.view_by_id.get(id); + System.out.println("- findViewById - found this: " + view); + + return (T) view; + } + + public void invalidateOptionsMenu() { + System.out.println("invalidateOptionsMenu() called, should we do something?"); + } + + public Window getWindow() { + return this.window; + } + + public final void runOnUiThread(Runnable action) { + action.run(); // FIXME: running synchronously for now + } +} diff --git a/src/api-impl/android/app/ActivityManager.java b/src/api-impl/android/app/ActivityManager.java new file mode 100644 index 00000000..bc5a6c0d --- /dev/null +++ b/src/api-impl/android/app/ActivityManager.java @@ -0,0 +1,5 @@ +package android.app; + +public class ActivityManager { + +} diff --git a/src/api-impl/android/app/AlertDialog.java b/src/api-impl/android/app/AlertDialog.java new file mode 100644 index 00000000..11876455 --- /dev/null +++ b/src/api-impl/android/app/AlertDialog.java @@ -0,0 +1,45 @@ +package android.app; + +import android.content.Context; +import android.content.DialogInterface; +import android.view.View; + +public class AlertDialog extends Dialog { + public static class Builder { + public Builder(Context context){ + System.out.println("making an AlertDialog$Builder as we speak, my word!"); + } + + public AlertDialog.Builder setPositiveButton (int textId, DialogInterface.OnClickListener listener) { + return this; + } + + public AlertDialog.Builder setPositiveButton (CharSequence text, DialogInterface.OnClickListener listener) { + return this; + } + + public AlertDialog.Builder setCancelable (boolean cancelable) { + return this; + } + + public AlertDialog.Builder setIcon (int iconId) { + return this; + } + + public AlertDialog.Builder setTitle (CharSequence title) { + return this; + } + + public AlertDialog.Builder setMessage (CharSequence message) { + return this; + } + + public AlertDialog.Builder setView (View view) { + return this; + } + + public AlertDialog create() { + return new AlertDialog(); + } + } +} diff --git a/src/api-impl/android/app/Application.java b/src/api-impl/android/app/Application.java new file mode 100644 index 00000000..60975aa6 --- /dev/null +++ b/src/api-impl/android/app/Application.java @@ -0,0 +1,7 @@ +package android.app; + +import android.content.Context; + +public class Application extends Context { + +} diff --git a/src/api-impl/android/app/Dialog.java b/src/api-impl/android/app/Dialog.java new file mode 100644 index 00000000..69abd5d1 --- /dev/null +++ b/src/api-impl/android/app/Dialog.java @@ -0,0 +1,19 @@ +package android.app; + +import android.content.Context; + +public class Dialog { + public void show() { + System.out.println("totally showing the Dialog "+this+" right now, most definitely doing that"); + } + + public void dismiss() { + System.out.println("totally dismissing the Dialog "+this+" right now, which was most definitely being shown just a moment ago"); + } + + public class Builder { + public Builder(Context context){ + System.out.println("making a Dialog$Builder as we speak, my word!"); + } + } +} diff --git a/src/api-impl/android/app/IntentService.java b/src/api-impl/android/app/IntentService.java new file mode 100644 index 00000000..7536410b --- /dev/null +++ b/src/api-impl/android/app/IntentService.java @@ -0,0 +1,5 @@ +package android.app; + +public abstract class IntentService { + +} diff --git a/src/api-impl/android/app/KeyguardManager.java b/src/api-impl/android/app/KeyguardManager.java new file mode 100644 index 00000000..3fc210ec --- /dev/null +++ b/src/api-impl/android/app/KeyguardManager.java @@ -0,0 +1,7 @@ +package android.app; + +public class KeyguardManager { + public boolean inKeyguardRestrictedInputMode() { + return false; + } +} diff --git a/src/api-impl/android/app/PendingIntent.java b/src/api-impl/android/app/PendingIntent.java new file mode 100644 index 00000000..5ef332b5 --- /dev/null +++ b/src/api-impl/android/app/PendingIntent.java @@ -0,0 +1,21 @@ +package android.app; + +import android.content.Context; +import android.content.Intent; +import android.content.IntentSender; + +public class PendingIntent { + public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) { + return new PendingIntent(); + } + + public IntentSender getIntentSender() { + return null; + } + + public void send (Context context, int code, Intent intent) {} + + public class CanceledException extends Exception { + + } +} diff --git a/src/api-impl/android/app/ProgressDialog.java b/src/api-impl/android/app/ProgressDialog.java new file mode 100644 index 00000000..c98cf404 --- /dev/null +++ b/src/api-impl/android/app/ProgressDialog.java @@ -0,0 +1,4 @@ +package android.app; + +public class ProgressDialog extends Dialog { +} diff --git a/src/api-impl/android/app/Service.java b/src/api-impl/android/app/Service.java new file mode 100644 index 00000000..324ec216 --- /dev/null +++ b/src/api-impl/android/app/Service.java @@ -0,0 +1,5 @@ +package android.app; + +public class Service { + +} diff --git a/src/api-impl/android/app/SharedPreferencesImpl.java b/src/api-impl/android/app/SharedPreferencesImpl.java new file mode 100644 index 00000000..f54231c5 --- /dev/null +++ b/src/api-impl/android/app/SharedPreferencesImpl.java @@ -0,0 +1,624 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app; + +import android.content.SharedPreferences; +//import android.os.FileUtils; +//import android.os.Looper; +import android.system.Os; +import android.system.StructStat; +import android.util.Log; + +//import com.google.android.collect.Maps; +import com.android.internal.util.XmlUtils; + +import dalvik.system.BlockGuard; + +import org.xmlpull.v1.XmlPullParserException; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; + +import android.system.ErrnoException; +import libcore.io.IoUtils; + +public final class SharedPreferencesImpl implements SharedPreferences { + private static final String TAG = "SharedPreferencesImpl"; + private static final boolean DEBUG = false; + + // Lock ordering rules: + // - acquire SharedPreferencesImpl.this before EditorImpl.this + // - acquire mWritingToDiskLock before EditorImpl.this + + private final File mFile; + private final File mBackupFile; + private final int mMode; + + private Map mMap; // guarded by 'this' + private int mDiskWritesInFlight = 0; // guarded by 'this' + private boolean mLoaded = false; // guarded by 'this' + private long mStatTimestamp; // guarded by 'this' + private long mStatSize; // guarded by 'this' + + private final Object mWritingToDiskLock = new Object(); + private static final Object mContent = new Object(); + private final WeakHashMap mListeners = + new WeakHashMap(); + + public SharedPreferencesImpl(File file, int mode) { + mFile = file; + mBackupFile = makeBackupFile(file); + mMode = mode; + mLoaded = false; + mMap = null; + startLoadFromDisk(); + } + + private void startLoadFromDisk() { + synchronized (this) { + mLoaded = false; + } + new Thread("SharedPreferencesImpl-load") { + public void run() { + synchronized (SharedPreferencesImpl.this) { + loadFromDiskLocked(); + } + } + }.start(); + } + + private void loadFromDiskLocked() { + if (mLoaded) { + return; + } + if (mBackupFile.exists()) { + mFile.delete(); + mBackupFile.renameTo(mFile); + } + // Debugging + if (mFile.exists() && !mFile.canRead()) { + Log.w(TAG, "Attempt to read preferences file " + mFile + " without permission"); + } + Map map = null; + StructStat stat = null; + try { + stat = Os.stat(mFile.getPath()); + if (mFile.canRead()) { + BufferedInputStream str = null; + try { + str = new BufferedInputStream( + new FileInputStream(mFile), 16*1024); + map = XmlUtils.readMapXml(str); + } catch (XmlPullParserException e) { + Log.w(TAG, "getSharedPreferences", e); + } catch (FileNotFoundException e) { + Log.w(TAG, "getSharedPreferences", e); + } catch (IOException e) { + Log.w(TAG, "getSharedPreferences", e); + } finally { + IoUtils.closeQuietly(str); + } + } + } catch (ErrnoException e) { + } + mLoaded = true; + if (map != null) { + mMap = map; + mStatTimestamp = stat.st_mtime; + mStatSize = stat.st_size; + } else { + mMap = new HashMap(); + } + notifyAll(); + } + + private static File makeBackupFile(File prefsFile) { + return new File(prefsFile.getPath() + ".bak"); + } + + void startReloadIfChangedUnexpectedly() { + synchronized (this) { + // TODO: wait for any pending writes to disk? + if (!hasFileChangedUnexpectedly()) { + return; + } + startLoadFromDisk(); + } + } + + // Has the file changed out from under us? i.e. writes that + // we didn't instigate. + private boolean hasFileChangedUnexpectedly() { + synchronized (this) { + if (mDiskWritesInFlight > 0) { + // If we know we caused it, it's not unexpected. + if (DEBUG) Log.d(TAG, "disk write in flight, not unexpected."); + return false; + } + } + final StructStat stat; + try { + /* + * Metadata operations don't usually count as a block guard + * violation, but we explicitly want this one. + */ + BlockGuard.getThreadPolicy().onReadFromDisk(); + stat = Os.stat(mFile.getPath()); + } catch (ErrnoException e) { + return true; + } + synchronized (this) { + return mStatTimestamp != stat.st_mtime || mStatSize != stat.st_size; + } + } + + public void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) { + synchronized(this) { + mListeners.put(listener, mContent); + } + } + + public void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) { + synchronized(this) { + mListeners.remove(listener); + } + } + + private void awaitLoadedLocked() { + if (!mLoaded) { + // Raise an explicit StrictMode onReadFromDisk for this + // thread, since the real read will be in a different + // thread and otherwise ignored by StrictMode. + BlockGuard.getThreadPolicy().onReadFromDisk(); + } + while (!mLoaded) { + try { + wait(); + } catch (InterruptedException unused) { + } + } + } + + public Map getAll() { + System.out.println("\n\n...> getAll()\n\n"); + synchronized (this) { + awaitLoadedLocked(); + //noinspection unchecked + return new HashMap(mMap); + } + } + + public String getString(String key, String defValue) { + synchronized (this) { + awaitLoadedLocked(); + String v = (String)mMap.get(key); + return v != null ? v : defValue; + } + } + + public Set getStringSet(String key, Set defValues) { + synchronized (this) { + awaitLoadedLocked(); + Set v = (Set) mMap.get(key); + return v != null ? v : defValues; + } + } + + public int getInt(String key, int defValue) { + synchronized (this) { + awaitLoadedLocked(); + Integer v = (Integer)mMap.get(key); + return v != null ? v : defValue; + } + } + public long getLong(String key, long defValue) { + synchronized (this) { + awaitLoadedLocked(); + Long v = (Long)mMap.get(key); + return v != null ? v : defValue; + } + } + public float getFloat(String key, float defValue) { + synchronized (this) { + awaitLoadedLocked(); + Float v = (Float)mMap.get(key); + return v != null ? v : defValue; + } + } + public boolean getBoolean(String key, boolean defValue) { + synchronized (this) { + awaitLoadedLocked(); + Boolean v = (Boolean)mMap.get(key); + return v != null ? v : defValue; + } + } + + public boolean contains(String key) { + synchronized (this) { + awaitLoadedLocked(); + return mMap.containsKey(key); + } + } + + public Editor edit() { + // TODO: remove the need to call awaitLoadedLocked() when + // requesting an editor. will require some work on the + // Editor, but then we should be able to do: + // + // context.getSharedPreferences(..).edit().putString(..).apply() + // + // ... all without blocking. + synchronized (this) { + awaitLoadedLocked(); + } + + return new EditorImpl(); + } + + // Return value from EditorImpl#commitToMemory() + private static class MemoryCommitResult { + public boolean changesMade; // any keys different? + public List keysModified; // may be null + public Set listeners; // may be null + public Map mapToWriteToDisk; + public final CountDownLatch writtenToDiskLatch = new CountDownLatch(1); + public volatile boolean writeToDiskResult = false; + + public void setDiskWriteResult(boolean result) { + writeToDiskResult = result; + writtenToDiskLatch.countDown(); + } + } + + public final class EditorImpl implements Editor { + private final Map mModified = new HashMap<>(); + private boolean mClear = false; + + public Editor putString(String key, String value) { + synchronized (this) { + mModified.put(key, value); + return this; + } + } + public Editor putStringSet(String key, Set values) { + synchronized (this) { + mModified.put(key, + (values == null) ? null : new HashSet(values)); + return this; + } + } + public Editor putInt(String key, int value) { + synchronized (this) { + mModified.put(key, value); + return this; + } + } + public Editor putLong(String key, long value) { + synchronized (this) { + mModified.put(key, value); + return this; + } + } + public Editor putFloat(String key, float value) { + synchronized (this) { + mModified.put(key, value); + return this; + } + } + public Editor putBoolean(String key, boolean value) { + synchronized (this) { + mModified.put(key, value); + return this; + } + } + + public Editor remove(String key) { + synchronized (this) { + mModified.put(key, this); + return this; + } + } + + public Editor clear() { + synchronized (this) { + mClear = true; + return this; + } + } + + public void apply() { + final MemoryCommitResult mcr = commitToMemory(); + final Runnable awaitCommit = new Runnable() { + public void run() { + try { + mcr.writtenToDiskLatch.await(); + } catch (InterruptedException ignored) { + } + } + }; + +// QueuedWork.add(awaitCommit); + awaitCommit.run(); + + Runnable postWriteRunnable = new Runnable() { + public void run() { + awaitCommit.run(); +// QueuedWork.remove(awaitCommit); + } + }; + + SharedPreferencesImpl.this.enqueueDiskWrite(mcr, postWriteRunnable); + + // Okay to notify the listeners before it's hit disk + // because the listeners should always get the same + // SharedPreferences instance back, which has the + // changes reflected in memory. + notifyListeners(mcr); + } + + // Returns true if any changes were made + private MemoryCommitResult commitToMemory() { + MemoryCommitResult mcr = new MemoryCommitResult(); + synchronized (SharedPreferencesImpl.this) { + // We optimistically don't make a deep copy until + // a memory commit comes in when we're already + // writing to disk. + if (mDiskWritesInFlight > 0) { + // We can't modify our mMap as a currently + // in-flight write owns it. Clone it before + // modifying it. + // noinspection unchecked + mMap = new HashMap(mMap); + } + mcr.mapToWriteToDisk = mMap; + mDiskWritesInFlight++; + + boolean hasListeners = mListeners.size() > 0; + if (hasListeners) { + mcr.keysModified = new ArrayList(); + mcr.listeners = + new HashSet(mListeners.keySet()); + } + + synchronized (this) { + if (mClear) { + if (!mMap.isEmpty()) { + mcr.changesMade = true; + mMap.clear(); + } + mClear = false; + } + + for (Map.Entry e : mModified.entrySet()) { + String k = e.getKey(); + Object v = e.getValue(); + if (v == this) { // magic value for a removal mutation + if (!mMap.containsKey(k)) { + continue; + } + mMap.remove(k); + } else { + boolean isSame = false; + if (mMap.containsKey(k)) { + Object existingValue = mMap.get(k); + if (existingValue != null && existingValue.equals(v)) { + continue; + } + } + mMap.put(k, v); + } + + mcr.changesMade = true; + if (hasListeners) { + mcr.keysModified.add(k); + } + } + + mModified.clear(); + } + } + return mcr; + } + + public boolean commit() { + MemoryCommitResult mcr = commitToMemory(); + SharedPreferencesImpl.this.enqueueDiskWrite( + mcr, null /* sync write on this thread okay */); + try { + mcr.writtenToDiskLatch.await(); + } catch (InterruptedException e) { + return false; + } + notifyListeners(mcr); + return mcr.writeToDiskResult; + } + + private void notifyListeners(final MemoryCommitResult mcr) {/* + if (mcr.listeners == null || mcr.keysModified == null || + mcr.keysModified.size() == 0) { + return; + } + if (Looper.myLooper() == Looper.getMainLooper()) { + for (int i = mcr.keysModified.size() - 1; i >= 0; i--) { + final String key = mcr.keysModified.get(i); + for (OnSharedPreferenceChangeListener listener : mcr.listeners) { + if (listener != null) { + listener.onSharedPreferenceChanged(SharedPreferencesImpl.this, key); + } + } + } + } else { + // Run this function on the main thread. + ActivityThread.sMainThreadHandler.post(new Runnable() { + public void run() { + notifyListeners(mcr); + } + }); + } + */} + } + + /** + * Enqueue an already-committed-to-memory result to be written + * to disk. + * + * They will be written to disk one-at-a-time in the order + * that they're enqueued. + * + * @param postWriteRunnable if non-null, we're being called + * from apply() and this is the runnable to run after + * the write proceeds. if null (from a regular commit()), + * then we're allowed to do this disk write on the main + * thread (which in addition to reducing allocations and + * creating a background thread, this has the advantage that + * we catch them in userdebug StrictMode reports to convert + * them where possible to apply() ...) + */ + private void enqueueDiskWrite(final MemoryCommitResult mcr, + final Runnable postWriteRunnable) { + final Runnable writeToDiskRunnable = new Runnable() { + public void run() { + synchronized (mWritingToDiskLock) { + writeToFile(mcr); + } + synchronized (SharedPreferencesImpl.this) { + mDiskWritesInFlight--; + } + if (postWriteRunnable != null) { + postWriteRunnable.run(); + } + } + }; + + final boolean isFromSyncCommit = (postWriteRunnable == null); + + // Typical #commit() path with fewer allocations, doing a write on + // the current thread. + if (isFromSyncCommit) { + boolean wasEmpty = false; + synchronized (SharedPreferencesImpl.this) { + wasEmpty = mDiskWritesInFlight == 1; + } + if (wasEmpty) { + writeToDiskRunnable.run(); + return; + } + } + + //QueuedWork.singleThreadExecutor().execute(writeToDiskRunnable); + writeToDiskRunnable.run(); + } + + private static FileOutputStream createFileOutputStream(File file) { + FileOutputStream str = null; + try { + str = new FileOutputStream(file); + } catch (FileNotFoundException e) { + File parent = file.getParentFile(); + if (!parent.mkdir()) { + Log.e(TAG, "Couldn't create directory for SharedPreferences file " + file); + return null; + } +/* FileUtils.setPermissions( + parent.getPath(), + FileUtils.S_IRWXU|FileUtils.S_IRWXG|FileUtils.S_IXOTH, + -1, -1);*/ + try { + str = new FileOutputStream(file); + } catch (FileNotFoundException e2) { + Log.e(TAG, "Couldn't create SharedPreferences file " + file, e2); + } + } + return str; + } + + // Note: must hold mWritingToDiskLock + private void writeToFile(MemoryCommitResult mcr) { + // Rename the current file so it may be used as a backup during the next read + if (mFile.exists()) { + if (!mcr.changesMade) { + // If the file already exists, but no changes were + // made to the underlying map, it's wasteful to + // re-write the file. Return as if we wrote it + // out. + mcr.setDiskWriteResult(true); + return; + } + if (!mBackupFile.exists()) { + if (!mFile.renameTo(mBackupFile)) { + Log.e(TAG, "Couldn't rename file " + mFile + + " to backup file " + mBackupFile); + mcr.setDiskWriteResult(false); + return; + } + } else { + mFile.delete(); + } + } + // Attempt to write the file, delete the backup and return true as atomically as + // possible. If any exception occurs, delete the new file; next time we will restore + // from the backup. + try { + FileOutputStream str = createFileOutputStream(mFile); + if (str == null) { + mcr.setDiskWriteResult(false); + return; + } + XmlUtils.writeMapXml(mcr.mapToWriteToDisk, str); +// FileUtils.sync(str); + str.close(); +// ContextImpl.setFilePermissionsFromMode(mFile.getPath(), mMode, 0); + try { + final StructStat stat = Os.stat(mFile.getPath()); + synchronized (this) { + mStatTimestamp = stat.st_mtime; + mStatSize = stat.st_size; + } + } catch (ErrnoException e) { + // Do nothing + } + // Writing was successful, delete the backup file if there is one. + mBackupFile.delete(); + mcr.setDiskWriteResult(true); + return; + } catch (XmlPullParserException e) { + Log.w(TAG, "writeToFile: Got exception:", e); + } catch (IOException e) { + Log.w(TAG, "writeToFile: Got exception:", e); + } + // Clean up an unsuccessfully written file + if (mFile.exists()) { + if (!mFile.delete()) { + Log.e(TAG, "Couldn't clean up partially-written file " + mFile); + } + } + mcr.setDiskWriteResult(false); + } +} diff --git a/src/api-impl/android/content/ActivityNotFoundException.java b/src/api-impl/android/content/ActivityNotFoundException.java new file mode 100644 index 00000000..4eab8d4e --- /dev/null +++ b/src/api-impl/android/content/ActivityNotFoundException.java @@ -0,0 +1,5 @@ +package android.content; + +public class ActivityNotFoundException extends Exception { + +} diff --git a/src/api-impl/android/content/BroadcastReceiver.java b/src/api-impl/android/content/BroadcastReceiver.java new file mode 100644 index 00000000..5b300578 --- /dev/null +++ b/src/api-impl/android/content/BroadcastReceiver.java @@ -0,0 +1,5 @@ +package android.content; + +public class BroadcastReceiver { + +} diff --git a/src/api-impl/android/content/ComponentName.java b/src/api-impl/android/content/ComponentName.java new file mode 100644 index 00000000..e59a4b96 --- /dev/null +++ b/src/api-impl/android/content/ComponentName.java @@ -0,0 +1,262 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content; + +import java.io.PrintWriter; +import java.lang.Comparable; + +/** + * Identifier for a specific application component + * ({@link android.app.Activity}, {@link android.app.Service}, + * {@link android.content.BroadcastReceiver}, or + * {@link android.content.ContentProvider}) that is available. Two + * pieces of information, encapsulated here, are required to identify + * a component: the package (a String) it exists in, and the class (a String) + * name inside of that package. + * + */ +public final class ComponentName implements Cloneable, Comparable { + private final String mPackage; + private final String mClass; + + /** + * Create a new component identifier. + * + * @param pkg The name of the package that the component exists in. Can + * not be null. + * @param cls The name of the class inside of pkg that + * implements the component. Can not be null. + */ + public ComponentName(String pkg, String cls) { + if (pkg == null) throw new NullPointerException("package name is null"); + if (cls == null) throw new NullPointerException("class name is null"); + mPackage = pkg; + mClass = cls; + } + + /** + * Create a new component identifier from a Context and class name. + * + * @param pkg A Context for the package implementing the component, + * from which the actual package name will be retrieved. + * @param cls The name of the class inside of pkg that + * implements the component. + */ + public ComponentName(Context pkg, String cls) { + if (cls == null) throw new NullPointerException("class name is null"); + mPackage = pkg.getPackageName(); + mClass = cls; + } + + /** + * Create a new component identifier from a Context and Class object. + * + * @param pkg A Context for the package implementing the component, from + * which the actual package name will be retrieved. + * @param cls The Class object of the desired component, from which the + * actual class name will be retrieved. + */ + public ComponentName(Context pkg, Class cls) { + mPackage = pkg.getPackageName(); + mClass = cls.getName(); + } + + public ComponentName clone() { + return new ComponentName(mPackage, mClass); + } + + /** + * Return the package name of this component. + */ + public String getPackageName() { + return mPackage; + } + + /** + * Return the class name of this component. + */ + public String getClassName() { + return mClass; + } + + /** + * Return the class name, either fully qualified or in a shortened form + * (with a leading '.') if it is a suffix of the package. + */ + public String getShortClassName() { + if (mClass.startsWith(mPackage)) { + int PN = mPackage.length(); + int CN = mClass.length(); + if (CN > PN && mClass.charAt(PN) == '.') { + return mClass.substring(PN, CN); + } + } + return mClass; + } + + private static void appendShortClassName(StringBuilder sb, String packageName, + String className) { + if (className.startsWith(packageName)) { + int PN = packageName.length(); + int CN = className.length(); + if (CN > PN && className.charAt(PN) == '.') { + sb.append(className, PN, CN); + return; + } + } + sb.append(className); + } + + private static void printShortClassName(PrintWriter pw, String packageName, + String className) { + if (className.startsWith(packageName)) { + int PN = packageName.length(); + int CN = className.length(); + if (CN > PN && className.charAt(PN) == '.') { + pw.write(className, PN, CN-PN); + return; + } + } + pw.print(className); + } + + /** + * Return a String that unambiguously describes both the package and + * class names contained in the ComponentName. You can later recover + * the ComponentName from this string through + * {@link #unflattenFromString(String)}. + * + * @return Returns a new String holding the package and class names. This + * is represented as the package name, concatenated with a '/' and then the + * class name. + * + * @see #unflattenFromString(String) + */ + public String flattenToString() { + return mPackage + "/" + mClass; + } + + /** + * The same as {@link #flattenToString()}, but abbreviates the class + * name if it is a suffix of the package. The result can still be used + * with {@link #unflattenFromString(String)}. + * + * @return Returns a new String holding the package and class names. This + * is represented as the package name, concatenated with a '/' and then the + * class name. + * + * @see #unflattenFromString(String) + */ + public String flattenToShortString() { + StringBuilder sb = new StringBuilder(mPackage.length() + mClass.length()); + appendShortString(sb, mPackage, mClass); + return sb.toString(); + } + + /** @hide */ + public void appendShortString(StringBuilder sb) { + appendShortString(sb, mPackage, mClass); + } + + /** @hide */ + public static void appendShortString(StringBuilder sb, String packageName, String className) { + sb.append(packageName).append('/'); + appendShortClassName(sb, packageName, className); + } + + /** @hide */ + public static void printShortString(PrintWriter pw, String packageName, String className) { + pw.print(packageName); + pw.print('/'); + printShortClassName(pw, packageName, className); + } + + /** + * Recover a ComponentName from a String that was previously created with + * {@link #flattenToString()}. It splits the string at the first '/', + * taking the part before as the package name and the part after as the + * class name. As a special convenience (to use, for example, when + * parsing component names on the command line), if the '/' is immediately + * followed by a '.' then the final class name will be the concatenation + * of the package name with the string following the '/'. Thus + * "com.foo/.Blah" becomes package="com.foo" class="com.foo.Blah". + * + * @param str The String that was returned by flattenToString(). + * @return Returns a new ComponentName containing the package and class + * names that were encoded in str + * + * @see #flattenToString() + */ + public static ComponentName unflattenFromString(String str) { + int sep = str.indexOf('/'); + if (sep < 0 || (sep+1) >= str.length()) { + return null; + } + String pkg = str.substring(0, sep); + String cls = str.substring(sep+1); + if (cls.length() > 0 && cls.charAt(0) == '.') { + cls = pkg + cls; + } + return new ComponentName(pkg, cls); + } + + /** + * Return string representation of this class without the class's name + * as a prefix. + */ + public String toShortString() { + return "{" + mPackage + "/" + mClass + "}"; + } + + @Override + public String toString() { + return "ComponentInfo{" + mPackage + "/" + mClass + "}"; + } + + @Override + public boolean equals(Object obj) { + try { + if (obj != null) { + ComponentName other = (ComponentName)obj; + // Note: no null checks, because mPackage and mClass can + // never be null. + return mPackage.equals(other.mPackage) + && mClass.equals(other.mClass); + } + } catch (ClassCastException e) { + } + return false; + } + + @Override + public int hashCode() { + return mPackage.hashCode() + mClass.hashCode(); + } + + public int compareTo(ComponentName that) { + int v; + v = this.mPackage.compareTo(that.mPackage); + if (v != 0) { + return v; + } + return this.mClass.compareTo(that.mClass); + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/ContentResolver.java b/src/api-impl/android/content/ContentResolver.java new file mode 100644 index 00000000..aee556bb --- /dev/null +++ b/src/api-impl/android/content/ContentResolver.java @@ -0,0 +1,5 @@ +package android.content; + +public class ContentResolver { + +} diff --git a/src/api-impl/android/content/ContentValues.java b/src/api-impl/android/content/ContentValues.java new file mode 100644 index 00000000..9556dc89 --- /dev/null +++ b/src/api-impl/android/content/ContentValues.java @@ -0,0 +1,491 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content; + +import android.util.Log; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * This class is used to store a set of values that the {@link ContentResolver} + * can process. + */ +public final class ContentValues { + public static final String TAG = "ContentValues"; + + /** Holds the actual values */ + private HashMap mValues; + + /** + * Creates an empty set of values using the default initial size + */ + public ContentValues() { + // Choosing a default size of 8 based on analysis of typical + // consumption by applications. + mValues = new HashMap(8); + } + + /** + * Creates an empty set of values using the given initial size + * + * @param size the initial size of the set of values + */ + public ContentValues(int size) { + mValues = new HashMap(size, 1.0f); + } + + /** + * Creates a set of values copied from the given set + * + * @param from the values to copy + */ + public ContentValues(ContentValues from) { + mValues = new HashMap(from.mValues); + } + + /** + * Creates a set of values copied from the given HashMap. This is used + * by the Parcel unmarshalling code. + * + * @param values the values to start with + * {@hide} + */ + private ContentValues(HashMap values) { + mValues = values; + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof ContentValues)) { + return false; + } + return mValues.equals(((ContentValues) object).mValues); + } + + @Override + public int hashCode() { + return mValues.hashCode(); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, String value) { + mValues.put(key, value); + } + + /** + * Adds all values from the passed in ContentValues. + * + * @param other the ContentValues from which to copy + */ + public void putAll(ContentValues other) { + mValues.putAll(other.mValues); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Byte value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Short value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Integer value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Long value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Float value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Double value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, Boolean value) { + mValues.put(key, value); + } + + /** + * Adds a value to the set. + * + * @param key the name of the value to put + * @param value the data for the value to put + */ + public void put(String key, byte[] value) { + mValues.put(key, value); + } + + /** + * Adds a null value to the set. + * + * @param key the name of the value to make null + */ + public void putNull(String key) { + mValues.put(key, null); + } + + /** + * Returns the number of values. + * + * @return the number of values + */ + public int size() { + return mValues.size(); + } + + /** + * Remove a single value. + * + * @param key the name of the value to remove + */ + public void remove(String key) { + mValues.remove(key); + } + + /** + * Removes all values. + */ + public void clear() { + mValues.clear(); + } + + /** + * Returns true if this object has the named value. + * + * @param key the value to check for + * @return {@code true} if the value is present, {@code false} otherwise + */ + public boolean containsKey(String key) { + return mValues.containsKey(key); + } + + /** + * Gets a value. Valid value types are {@link String}, {@link Boolean}, and + * {@link Number} implementations. + * + * @param key the value to get + * @return the data for the value + */ + public Object get(String key) { + return mValues.get(key); + } + + /** + * Gets a value and converts it to a String. + * + * @param key the value to get + * @return the String for the value + */ + public String getAsString(String key) { + Object value = mValues.get(key); + return value != null ? value.toString() : null; + } + + /** + * Gets a value and converts it to a Long. + * + * @param key the value to get + * @return the Long value, or null if the value is missing or cannot be converted + */ + public Long getAsLong(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).longValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Long.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Long value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Long: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to an Integer. + * + * @param key the value to get + * @return the Integer value, or null if the value is missing or cannot be converted + */ + public Integer getAsInteger(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).intValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Integer.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Integer value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Integer: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to a Short. + * + * @param key the value to get + * @return the Short value, or null if the value is missing or cannot be converted + */ + public Short getAsShort(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).shortValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Short.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Short value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Short: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to a Byte. + * + * @param key the value to get + * @return the Byte value, or null if the value is missing or cannot be converted + */ + public Byte getAsByte(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).byteValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Byte.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Byte value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Byte: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to a Double. + * + * @param key the value to get + * @return the Double value, or null if the value is missing or cannot be converted + */ + public Double getAsDouble(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).doubleValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Double.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Double value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Double: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to a Float. + * + * @param key the value to get + * @return the Float value, or null if the value is missing or cannot be converted + */ + public Float getAsFloat(String key) { + Object value = mValues.get(key); + try { + return value != null ? ((Number) value).floatValue() : null; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + try { + return Float.valueOf(value.toString()); + } catch (NumberFormatException e2) { + Log.e(TAG, "Cannot parse Float value for " + value + " at key " + key); + return null; + } + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Float: " + value, e); + return null; + } + } + } + + /** + * Gets a value and converts it to a Boolean. + * + * @param key the value to get + * @return the Boolean value, or null if the value is missing or cannot be converted + */ + public Boolean getAsBoolean(String key) { + Object value = mValues.get(key); + try { + return (Boolean) value; + } catch (ClassCastException e) { + if (value instanceof CharSequence) { + return Boolean.valueOf(value.toString()); + } else if (value instanceof Number) { + return ((Number) value).intValue() != 0; + } else { + Log.e(TAG, "Cannot cast value for " + key + " to a Boolean: " + value, e); + return null; + } + } + } + + /** + * Gets a value that is a byte array. Note that this method will not convert + * any other types to byte arrays. + * + * @param key the value to get + * @return the byte[] value, or null is the value is missing or not a byte[] + */ + public byte[] getAsByteArray(String key) { + Object value = mValues.get(key); + if (value instanceof byte[]) { + return (byte[]) value; + } else { + return null; + } + } + + /** + * Returns a set of all of the keys and values + * + * @return a set of all of the keys and values + */ + public Set> valueSet() { + return mValues.entrySet(); + } + + /** + * Returns a set of all of the keys + * + * @return a set of all of the keys + */ + public Set keySet() { + return mValues.keySet(); + } + + /** + * Unsupported, here until we get proper bulk insert APIs. + * {@hide} + */ + @Deprecated + public void putStringArrayList(String key, ArrayList value) { + mValues.put(key, value); + } + + /** + * Unsupported, here until we get proper bulk insert APIs. + * {@hide} + */ + @SuppressWarnings("unchecked") + @Deprecated + public ArrayList getStringArrayList(String key) { + return (ArrayList) mValues.get(key); + } + + /** + * Returns a string containing a concise, human-readable description of this object. + * @return a printable representation of this object. + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (String name : mValues.keySet()) { + String value = getAsString(name); + if (sb.length() > 0) sb.append(" "); + sb.append(name + "=" + value); + } + return sb.toString(); + } +} diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java new file mode 100644 index 00000000..1e00ac60 --- /dev/null +++ b/src/api-impl/android/content/Context.java @@ -0,0 +1,202 @@ +package android.content; + +import android.util.Log; + +import android.content.pm.PackageManager; +import android.content.res.AssetManager; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.content.SharedPreferences; +import android.app.SharedPreferencesImpl; +import android.os.Looper; +import android.app.Application; + +import android.view.WindowManager; +import android.view.WindowManagerImpl; +import android.text.ClipboardManager; +import android.hardware.SensorManager; +import android.net.ConnectivityManager; +import android.app.KeyguardManager; +import android.telephony.TelephonyManager; +import android.media.AudioManager; +import android.app.ActivityManager; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; + +public class Context extends Object { + private final static String TAG = "Context"; + + static AssetManager assets; + static DisplayMetrics dm; + static Configuration config; + static Resources r; + + public /*← FIXME?*/ static Application this_application; + + File data_dir = null; + File prefs_dir = null; + File files_dir = null; + File cache_dir = null; + + static { + assets = new AssetManager(); + dm = new DisplayMetrics(); + config = new Configuration(); + r = new Resources(assets, dm, config); + this_application = new Application(); // TODO: the application context is presumably not identical to the Activity context, what is the difference for us though? + } + + public Context() { + System.out.println("new Context! this one is: " + this); + } + + public Context getApplicationContext() { + return (Context)this_application; + } + + public ContentResolver getContentResolver() { + return new ContentResolver(); + } + + public Object getSystemService(String name) { + switch (name) { + case "window": + return new WindowManagerImpl(); + case "clipboard": + return new ClipboardManager(); + case "sensor": + return new SensorManager(); + case "connectivity": + return new ConnectivityManager(); + case "keyguard": + return new KeyguardManager(); + case "phone": + return new TelephonyManager(); + case "audio": + return new AudioManager(); + case "activity": + return new ActivityManager(); + default: + System.out.println("!!!!!!! getSystemService: case >"+name+"< is not implemented yet"); + return null; + } + } + + public Looper getMainLooper() { + System.out.println("returning the main Looper, most definitely doing just that!"); + return new Looper(); + } + + public String getPackageName() { + return "com.example.demo_app"; + } + + public final String getString(int resId) { + return r.getString(resId); + } + + public PackageManager getPackageManager() { + return new PackageManager(); + } + + public Resources getResources() { + return r; + } + + public AssetManager getAssets() { + return assets; + } + + private File makeFilename(File base, String name) { + if (name.indexOf(File.separatorChar) < 0) { + return new File(base, name); + } + throw new IllegalArgumentException( + "File " + name + " contains a path separator"); + } + + private File getDataDirFile() { + if(data_dir == null) { + data_dir = new File("data/"); + } + return data_dir; + } + + public File getFilesDir() { + if (files_dir == null) { + files_dir = new File(getDataDirFile(), "files"); + } + if (!files_dir.exists()) { + if(!files_dir.mkdirs()) { + if (files_dir.exists()) { + // spurious failure; probably racing with another process for this app + return files_dir; + } + Log.w(TAG, "Unable to create files directory " + files_dir.getPath()); + return null; + } + } + return files_dir; + } + + // FIXME: should be something like /tmp/cache, but may need to create that directory + public File getCacheDir() { + if (cache_dir == null) { + cache_dir = new File("/tmp/"); + } + return cache_dir; + } + + private File getPreferencesDir() { + if (prefs_dir == null) { + prefs_dir = new File(getDataDirFile(), "shared_prefs"); + } + return prefs_dir; + } + + public File getSharedPrefsFile(String name) { + return makeFilename(getPreferencesDir(), name + ".xml"); + } + + public SharedPreferences getSharedPreferences(String name, int mode) { + System.out.println("\n\n...> getSharedPreferences("+name+",)\n\n"); + File prefsFile = getSharedPrefsFile(name); + return new SharedPreferencesImpl(prefsFile, mode); + } + + public ClassLoader getClassLoader() { + // not perfect, but it's what we use for now as well, and it works + return ClassLoader.getSystemClassLoader(); + } + + public ComponentName startService(Intent service) { + return new ComponentName("",""); + } + + // FIXME - it should be *trivial* to do actually implement this + public FileInputStream openFileInput(String name) { + return null; + } + + public FileOutputStream openFileOutput(String name, int mode) throws java.io.FileNotFoundException { + System.out.println("openFileOutput called for: '"+name+"'"); + return new FileOutputStream("data/files/" + name); + } + + public int checkCallingOrSelfPermission(String permission) { + System.out.println("!!! app wants to know if it has a permission: >"+permission+"<"); + + return -1; // PackageManager.PERMISSION_DENIED + } + + // these may not look like typical stubs, but they definitely are stubs + public final TypedArray obtainStyledAttributes (AttributeSet set, int[] attrs) { return new TypedArray(r, new int[1000], new int[1000], 0); } + public final TypedArray obtainStyledAttributes (AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) { return new TypedArray(r, new int[1000], new int[1000], 0); } + public final TypedArray obtainStyledAttributes (int resid, int[] attrs) { return new TypedArray(r, new int[1000], new int[1000], 0); } + public final TypedArray obtainStyledAttributes (int[] attrs) { return new TypedArray(r, new int[1000], new int[1000], 0); } +} diff --git a/src/api-impl/android/content/DialogInterface.java b/src/api-impl/android/content/DialogInterface.java new file mode 100644 index 00000000..c650bbad --- /dev/null +++ b/src/api-impl/android/content/DialogInterface.java @@ -0,0 +1,8 @@ +package android.content; + +public interface DialogInterface { + public interface OnDismissListener { + } + public interface OnClickListener { + } +} diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java new file mode 100644 index 00000000..ffbdfe73 --- /dev/null +++ b/src/api-impl/android/content/Intent.java @@ -0,0 +1,121 @@ +package android.content; + +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcelable; + +import java.io.Serializable; + +public class Intent { + public Intent () {} + public Intent (Intent o) {} + public Intent (String action) {} + public Intent (String action, Uri uri) {} + public Intent (Context packageContext, Class cls) {} + public Intent (String action, Uri uri, Context packageContext, Class cls) {} + + public Intent setPackage(String packageName) { + return this; //?? + } + + public Intent putExtra (String name, Parcelable value) { + return this; //?? + } + + public Intent putExtra(String name, long[] value) { + return this; //?? + } + + public Intent putExtra(String name, byte value) { + return this; //?? + } + + public Intent putExtra(String name, double[] value) { + return this; //?? + } + + public Intent putExtra(String name, CharSequence value) { + return this; //?? + } + + public Intent putExtra(String name, boolean[] value) { + return this; //?? + } + + public Intent putExtra(String name, int value) { + return this; //?? + } + + public Intent putExtra(String name, char[] value) { + return this; //?? + } + + public Intent putExtra(String name, byte[] value) { + return this; //?? + } + + public Intent putExtra(String name, Parcelable[] value) { + return this; //?? + } + + public Intent putExtra(String name, Bundle value) { + return this; //?? + } + + public Intent putExtra(String name, CharSequence[] value) { + return this; //?? + } + + public Intent putExtra(String name, float[] value) { + return this; //?? + } + + public Intent putExtra(String name, double value) { + return this; //?? + } + + public Intent putExtra(String name, int[] value) { + return this; //?? + } + + public Intent putExtra(String name, String[] value) { + return this; //?? + } + + public Intent putExtra(String name, short[] value) { + return this; //?? + } + + public Intent putExtra(String name, boolean value) { + return this; //?? + } + + public Intent putExtra(String name, String value) { + return this; //?? + } + + public Intent putExtra(String name, long value) { + return this; //?? + } + + public Intent putExtra(String name, char value) { + return this; //?? + } + + public Intent putExtra(String name, Serializable value) { + return this; //?? + } + + public Intent putExtra(String name, float value) { + return this; //?? + } + + public Intent putExtra(String name, short value) { + return this; //?? + } + + public Intent setClass (Context packageContext, Class cls) { + return this; //?? + } + +} diff --git a/src/api-impl/android/content/IntentSender.java b/src/api-impl/android/content/IntentSender.java new file mode 100644 index 00000000..f70d9bb1 --- /dev/null +++ b/src/api-impl/android/content/IntentSender.java @@ -0,0 +1,6 @@ +package android.content; + +public class IntentSender { + public class SendIntentException { + } +} diff --git a/src/api-impl/android/content/OperationApplicationException.java b/src/api-impl/android/content/OperationApplicationException.java new file mode 100644 index 00000000..2fc19bb5 --- /dev/null +++ b/src/api-impl/android/content/OperationApplicationException.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content; + +/** + * Thrown when an application of a {@link ContentProviderOperation} fails due the specified + * constraints. + */ +public class OperationApplicationException extends Exception { + private final int mNumSuccessfulYieldPoints; + + public OperationApplicationException() { + super(); + mNumSuccessfulYieldPoints = 0; + } + public OperationApplicationException(String message) { + super(message); + mNumSuccessfulYieldPoints = 0; + } + public OperationApplicationException(String message, Throwable cause) { + super(message, cause); + mNumSuccessfulYieldPoints = 0; + } + public OperationApplicationException(Throwable cause) { + super(cause); + mNumSuccessfulYieldPoints = 0; + } + public OperationApplicationException(int numSuccessfulYieldPoints) { + super(); + mNumSuccessfulYieldPoints = numSuccessfulYieldPoints; + } + public OperationApplicationException(String message, int numSuccessfulYieldPoints) { + super(message); + mNumSuccessfulYieldPoints = numSuccessfulYieldPoints; + } + + public int getNumSuccessfulYieldPoints() { + return mNumSuccessfulYieldPoints; + } +} diff --git a/src/api-impl/android/content/ServiceConnection.java b/src/api-impl/android/content/ServiceConnection.java new file mode 100644 index 00000000..c98e35c5 --- /dev/null +++ b/src/api-impl/android/content/ServiceConnection.java @@ -0,0 +1,5 @@ +package android.content; + +public interface ServiceConnection { + +} diff --git a/src/api-impl/android/content/SharedPreferences.java b/src/api-impl/android/content/SharedPreferences.java new file mode 100644 index 00000000..d4f7f06b --- /dev/null +++ b/src/api-impl/android/content/SharedPreferences.java @@ -0,0 +1,371 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content; + +import java.util.Map; +import java.util.Set; + +/** + * Interface for accessing and modifying preference data returned by {@link + * Context#getSharedPreferences}. For any particular set of preferences, + * there is a single instance of this class that all clients share. + * Modifications to the preferences must go through an {@link Editor} object + * to ensure the preference values remain in a consistent state and control + * when they are committed to storage. Objects that are returned from the + * various get methods must be treated as immutable by the application. + * + *

Note: currently this class does not support use across multiple + * processes. This will be added later. + * + *

+ *

Developer Guides

+ *

For more information about using SharedPreferences, read the + * Data Storage + * developer guide.

+ * + * @see Context#getSharedPreferences + */ +public interface SharedPreferences { + /** + * Interface definition for a callback to be invoked when a shared + * preference is changed. + */ + public interface OnSharedPreferenceChangeListener { + /** + * Called when a shared preference is changed, added, or removed. This + * may be called even if a preference is set to its existing value. + * + *

This callback will be run on your main thread. + * + * @param sharedPreferences The {@link SharedPreferences} that received + * the change. + * @param key The key of the preference that was changed, added, or + * removed. + */ + void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key); + } + + /** + * Interface used for modifying values in a {@link SharedPreferences} + * object. All changes you make in an editor are batched, and not copied + * back to the original {@link SharedPreferences} until you call {@link #commit} + * or {@link #apply} + */ + public interface Editor { + /** + * Set a String value in the preferences editor, to be written back once + * {@link #commit} or {@link #apply} are called. + * + * @param key The name of the preference to modify. + * @param value The new value for the preference. Supplying {@code null} + * as the value is equivalent to calling {@link #remove(String)} with + * this key. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putString(String key, String value); + + /** + * Set a set of String values in the preferences editor, to be written + * back once {@link #commit} is called. + * + * @param key The name of the preference to modify. + * @param values The set of new values for the preference. Passing {@code null} + * for this argument is equivalent to calling {@link #remove(String)} with + * this key. + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putStringSet(String key, Set values); + + /** + * Set an int value in the preferences editor, to be written back once + * {@link #commit} or {@link #apply} are called. + * + * @param key The name of the preference to modify. + * @param value The new value for the preference. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putInt(String key, int value); + + /** + * Set a long value in the preferences editor, to be written back once + * {@link #commit} or {@link #apply} are called. + * + * @param key The name of the preference to modify. + * @param value The new value for the preference. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putLong(String key, long value); + + /** + * Set a float value in the preferences editor, to be written back once + * {@link #commit} or {@link #apply} are called. + * + * @param key The name of the preference to modify. + * @param value The new value for the preference. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putFloat(String key, float value); + + /** + * Set a boolean value in the preferences editor, to be written back + * once {@link #commit} or {@link #apply} are called. + * + * @param key The name of the preference to modify. + * @param value The new value for the preference. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor putBoolean(String key, boolean value); + + /** + * Mark in the editor that a preference value should be removed, which + * will be done in the actual preferences once {@link #commit} is + * called. + * + *

Note that when committing back to the preferences, all removals + * are done first, regardless of whether you called remove before + * or after put methods on this editor. + * + * @param key The name of the preference to remove. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor remove(String key); + + /** + * Mark in the editor to remove all values from the + * preferences. Once commit is called, the only remaining preferences + * will be any that you have defined in this editor. + * + *

Note that when committing back to the preferences, the clear + * is done first, regardless of whether you called clear before + * or after put methods on this editor. + * + * @return Returns a reference to the same Editor object, so you can + * chain put calls together. + */ + Editor clear(); + + /** + * Commit your preferences changes back from this Editor to the + * {@link SharedPreferences} object it is editing. This atomically + * performs the requested modifications, replacing whatever is currently + * in the SharedPreferences. + * + *

Note that when two editors are modifying preferences at the same + * time, the last one to call commit wins. + * + *

If you don't care about the return value and you're + * using this from your application's main thread, consider + * using {@link #apply} instead. + * + * @return Returns true if the new values were successfully written + * to persistent storage. + */ + boolean commit(); + + /** + * Commit your preferences changes back from this Editor to the + * {@link SharedPreferences} object it is editing. This atomically + * performs the requested modifications, replacing whatever is currently + * in the SharedPreferences. + * + *

Note that when two editors are modifying preferences at the same + * time, the last one to call apply wins. + * + *

Unlike {@link #commit}, which writes its preferences out + * to persistent storage synchronously, {@link #apply} + * commits its changes to the in-memory + * {@link SharedPreferences} immediately but starts an + * asynchronous commit to disk and you won't be notified of + * any failures. If another editor on this + * {@link SharedPreferences} does a regular {@link #commit} + * while a {@link #apply} is still outstanding, the + * {@link #commit} will block until all async commits are + * completed as well as the commit itself. + * + *

As {@link SharedPreferences} instances are singletons within + * a process, it's safe to replace any instance of {@link #commit} with + * {@link #apply} if you were already ignoring the return value. + * + *

You don't need to worry about Android component + * lifecycles and their interaction with apply() + * writing to disk. The framework makes sure in-flight disk + * writes from apply() complete before switching + * states. + * + *

The SharedPreferences.Editor interface + * isn't expected to be implemented directly. However, if you + * previously did implement it and are now getting errors + * about missing apply(), you can simply call + * {@link #commit} from apply(). + */ + void apply(); + } + + /** + * Retrieve all values from the preferences. + * + *

Note that you must not modify the collection returned + * by this method, or alter any of its contents. The consistency of your + * stored data is not guaranteed if you do. + * + * @return Returns a map containing a list of pairs key/value representing + * the preferences. + * + * @throws NullPointerException + */ + Map getAll(); + + /** + * Retrieve a String value from the preferences. + * + * @param key The name of the preference to retrieve. + * @param defValue Value to return if this preference does not exist. + * + * @return Returns the preference value if it exists, or defValue. Throws + * ClassCastException if there is a preference with this name that is not + * a String. + * + * @throws ClassCastException + */ + String getString(String key, String defValue); + + /** + * Retrieve a set of String values from the preferences. + * + *

Note that you must not modify the set instance returned + * by this call. The consistency of the stored data is not guaranteed + * if you do, nor is your ability to modify the instance at all. + * + * @param key The name of the preference to retrieve. + * @param defValues Values to return if this preference does not exist. + * + * @return Returns the preference values if they exist, or defValues. + * Throws ClassCastException if there is a preference with this name + * that is not a Set. + * + * @throws ClassCastException + */ + Set getStringSet(String key, Set defValues); + + /** + * Retrieve an int value from the preferences. + * + * @param key The name of the preference to retrieve. + * @param defValue Value to return if this preference does not exist. + * + * @return Returns the preference value if it exists, or defValue. Throws + * ClassCastException if there is a preference with this name that is not + * an int. + * + * @throws ClassCastException + */ + int getInt(String key, int defValue); + + /** + * Retrieve a long value from the preferences. + * + * @param key The name of the preference to retrieve. + * @param defValue Value to return if this preference does not exist. + * + * @return Returns the preference value if it exists, or defValue. Throws + * ClassCastException if there is a preference with this name that is not + * a long. + * + * @throws ClassCastException + */ + long getLong(String key, long defValue); + + /** + * Retrieve a float value from the preferences. + * + * @param key The name of the preference to retrieve. + * @param defValue Value to return if this preference does not exist. + * + * @return Returns the preference value if it exists, or defValue. Throws + * ClassCastException if there is a preference with this name that is not + * a float. + * + * @throws ClassCastException + */ + float getFloat(String key, float defValue); + + /** + * Retrieve a boolean value from the preferences. + * + * @param key The name of the preference to retrieve. + * @param defValue Value to return if this preference does not exist. + * + * @return Returns the preference value if it exists, or defValue. Throws + * ClassCastException if there is a preference with this name that is not + * a boolean. + * + * @throws ClassCastException + */ + boolean getBoolean(String key, boolean defValue); + + /** + * Checks whether the preferences contains a preference. + * + * @param key The name of the preference to check. + * @return Returns true if the preference exists in the preferences, + * otherwise false. + */ + boolean contains(String key); + + /** + * Create a new Editor for these preferences, through which you can make + * modifications to the data in the preferences and atomically commit those + * changes back to the SharedPreferences object. + * + *

Note that you must call {@link Editor#commit} to have any + * changes you perform in the Editor actually show up in the + * SharedPreferences. + * + * @return Returns a new instance of the {@link Editor} interface, allowing + * you to modify the values in this SharedPreferences object. + */ + Editor edit(); + + /** + * Registers a callback to be invoked when a change happens to a preference. + * + * @param listener The callback that will run. + * @see #unregisterOnSharedPreferenceChangeListener + */ + void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener); + + /** + * Unregisters a previous callback. + * + * @param listener The callback that should be unregistered. + * @see #registerOnSharedPreferenceChangeListener + */ + void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener); +} diff --git a/src/api-impl/android/content/pm/ActivityInfo.java b/src/api-impl/android/content/pm/ActivityInfo.java new file mode 100644 index 00000000..51600ff2 --- /dev/null +++ b/src/api-impl/android/content/pm/ActivityInfo.java @@ -0,0 +1,587 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +//import android.content.res.Configuration; +import android.util.Printer; + +/** + * Information you can retrieve about a particular application + * activity or receiver. This corresponds to information collected + * from the AndroidManifest.xml's <activity> and + * <receiver> tags. + */ +public class ActivityInfo extends ComponentInfo { + /** + * A style resource identifier (in the package's resources) of this + * activity's theme. From the "theme" attribute or, if not set, 0. + */ + public int theme; + + /** + * Constant corresponding to standard in + * the {@link android.R.attr#launchMode} attribute. + */ + public static final int LAUNCH_MULTIPLE = 0; + /** + * Constant corresponding to singleTop in + * the {@link android.R.attr#launchMode} attribute. + */ + public static final int LAUNCH_SINGLE_TOP = 1; + /** + * Constant corresponding to singleTask in + * the {@link android.R.attr#launchMode} attribute. + */ + public static final int LAUNCH_SINGLE_TASK = 2; + /** + * Constant corresponding to singleInstance in + * the {@link android.R.attr#launchMode} attribute. + */ + public static final int LAUNCH_SINGLE_INSTANCE = 3; + /** + * The launch mode style requested by the activity. From the + * {@link android.R.attr#launchMode} attribute, one of + * {@link #LAUNCH_MULTIPLE}, + * {@link #LAUNCH_SINGLE_TOP}, {@link #LAUNCH_SINGLE_TASK}, or + * {@link #LAUNCH_SINGLE_INSTANCE}. + */ + public int launchMode; + + /** + * Optional name of a permission required to be able to access this + * Activity. From the "permission" attribute. + */ + public String permission; + + /** + * The affinity this activity has for another task in the system. The + * string here is the name of the task, often the package name of the + * overall package. If null, the activity has no affinity. Set from the + * {@link android.R.attr#taskAffinity} attribute. + */ + public String taskAffinity; + + /** + * If this is an activity alias, this is the real activity class to run + * for it. Otherwise, this is null. + */ + public String targetActivity; + + /** + * Bit in {@link #flags} indicating whether this activity is able to + * run in multiple processes. If + * true, the system may instantiate it in the some process as the + * process starting it in order to conserve resources. If false, the + * default, it always runs in {@link #processName}. Set from the + * {@link android.R.attr#multiprocess} attribute. + */ + public static final int FLAG_MULTIPROCESS = 0x0001; + /** + * Bit in {@link #flags} indicating that, when the activity's task is + * relaunched from home, this activity should be finished. + * Set from the + * {@link android.R.attr#finishOnTaskLaunch} attribute. + */ + public static final int FLAG_FINISH_ON_TASK_LAUNCH = 0x0002; + /** + * Bit in {@link #flags} indicating that, when the activity is the root + * of a task, that task's stack should be cleared each time the user + * re-launches it from home. As a result, the user will always + * return to the original activity at the top of the task. + * This flag only applies to activities that + * are used to start the root of a new task. Set from the + * {@link android.R.attr#clearTaskOnLaunch} attribute. + */ + public static final int FLAG_CLEAR_TASK_ON_LAUNCH = 0x0004; + /** + * Bit in {@link #flags} indicating that, when the activity is the root + * of a task, that task's stack should never be cleared when it is + * relaunched from home. Set from the + * {@link android.R.attr#alwaysRetainTaskState} attribute. + */ + public static final int FLAG_ALWAYS_RETAIN_TASK_STATE = 0x0008; + /** + * Bit in {@link #flags} indicating that the activity's state + * is not required to be saved, so that if there is a failure the + * activity will not be removed from the activity stack. Set from the + * {@link android.R.attr#stateNotNeeded} attribute. + */ + public static final int FLAG_STATE_NOT_NEEDED = 0x0010; + /** + * Bit in {@link #flags} that indicates that the activity should not + * appear in the list of recently launched activities. Set from the + * {@link android.R.attr#excludeFromRecents} attribute. + */ + public static final int FLAG_EXCLUDE_FROM_RECENTS = 0x0020; + /** + * Bit in {@link #flags} that indicates that the activity can be moved + * between tasks based on its task affinity. Set from the + * {@link android.R.attr#allowTaskReparenting} attribute. + */ + public static final int FLAG_ALLOW_TASK_REPARENTING = 0x0040; + /** + * Bit in {@link #flags} indicating that, when the user navigates away + * from an activity, it should be finished. + * Set from the + * {@link android.R.attr#noHistory} attribute. + */ + public static final int FLAG_NO_HISTORY = 0x0080; + /** + * Bit in {@link #flags} indicating that, when a request to close system + * windows happens, this activity is finished. + * Set from the + * {@link android.R.attr#finishOnCloseSystemDialogs} attribute. + */ + public static final int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS = 0x0100; + /** + * Value for {@link #flags}: true when the application's rendering should + * be hardware accelerated. + */ + public static final int FLAG_HARDWARE_ACCELERATED = 0x0200; + /** + * Value for {@link #flags}: true when the application can be displayed over the lockscreen + * and consequently over all users' windows. + * @hide + */ + public static final int FLAG_SHOW_ON_LOCK_SCREEN = 0x0400; + /** + * Bit in {@link #flags} corresponding to an immersive activity + * that wishes not to be interrupted by notifications. + * Applications that hide the system notification bar with + * {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN} + * may still be interrupted by high-priority notifications; for example, an + * incoming phone call may use + * {@link android.app.Notification#fullScreenIntent fullScreenIntent} + * to present a full-screen in-call activity to the user, pausing the + * current activity as a side-effect. An activity with + * {@link #FLAG_IMMERSIVE} set, however, will not be interrupted; the + * notification may be shown in some other way (such as a small floating + * "toast" window). + * + * Note that this flag will always reflect the Activity's + * android:immersive manifest definition, even if the Activity's + * immersive state is changed at runtime via + * {@link android.app.Activity#setImmersive(boolean)}. + * + * @see android.app.Notification#FLAG_HIGH_PRIORITY + * @see android.app.Activity#setImmersive(boolean) + */ + public static final int FLAG_IMMERSIVE = 0x0800; + /** + * @hide Bit in {@link #flags}: If set, this component will only be seen + * by the primary user. Only works with broadcast receivers. Set from the + * {@link android.R.attr#primaryUserOnly} attribute. + */ + public static final int FLAG_PRIMARY_USER_ONLY = 0x20000000; + /** + * Bit in {@link #flags}: If set, a single instance of the receiver will + * run for all users on the device. Set from the + * {@link android.R.attr#singleUser} attribute. Note that this flag is + * only relevant for ActivityInfo structures that are describing receiver + * components; it is not applied to activities. + */ + public static final int FLAG_SINGLE_USER = 0x40000000; + /** + * Options that have been set in the activity declaration in the + * manifest. + * These include: + * {@link #FLAG_MULTIPROCESS}, + * {@link #FLAG_FINISH_ON_TASK_LAUNCH}, {@link #FLAG_CLEAR_TASK_ON_LAUNCH}, + * {@link #FLAG_ALWAYS_RETAIN_TASK_STATE}, + * {@link #FLAG_STATE_NOT_NEEDED}, {@link #FLAG_EXCLUDE_FROM_RECENTS}, + * {@link #FLAG_ALLOW_TASK_REPARENTING}, {@link #FLAG_NO_HISTORY}, + * {@link #FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS}, + * {@link #FLAG_HARDWARE_ACCELERATED}, {@link #FLAG_SINGLE_USER}. + */ + public int flags; + + /** + * Constant corresponding to unspecified in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_UNSPECIFIED = -1; + /** + * Constant corresponding to landscape in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_LANDSCAPE = 0; + /** + * Constant corresponding to portrait in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_PORTRAIT = 1; + /** + * Constant corresponding to user in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_USER = 2; + /** + * Constant corresponding to behind in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_BEHIND = 3; + /** + * Constant corresponding to sensor in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_SENSOR = 4; + + /** + * Constant corresponding to nosensor in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_NOSENSOR = 5; + + /** + * Constant corresponding to sensorLandscape in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6; + + /** + * Constant corresponding to sensorPortrait in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_SENSOR_PORTRAIT = 7; + + /** + * Constant corresponding to reverseLandscape in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; + + /** + * Constant corresponding to reversePortrait in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; + + /** + * Constant corresponding to fullSensor in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_FULL_SENSOR = 10; + + /** + * Constant corresponding to userLandscape in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; + + /** + * Constant corresponding to userPortrait in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; + + /** + * Constant corresponding to fullUser in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_FULL_USER = 13; + + /** + * Constant corresponding to locked in + * the {@link android.R.attr#screenOrientation} attribute. + */ + public static final int SCREEN_ORIENTATION_LOCKED = 14; + + /** + * The preferred screen orientation this activity would like to run in. + * From the {@link android.R.attr#screenOrientation} attribute, one of + * {@link #SCREEN_ORIENTATION_UNSPECIFIED}, + * {@link #SCREEN_ORIENTATION_LANDSCAPE}, + * {@link #SCREEN_ORIENTATION_PORTRAIT}, + * {@link #SCREEN_ORIENTATION_USER}, + * {@link #SCREEN_ORIENTATION_BEHIND}, + * {@link #SCREEN_ORIENTATION_SENSOR}, + * {@link #SCREEN_ORIENTATION_NOSENSOR}, + * {@link #SCREEN_ORIENTATION_SENSOR_LANDSCAPE}, + * {@link #SCREEN_ORIENTATION_SENSOR_PORTRAIT}, + * {@link #SCREEN_ORIENTATION_REVERSE_LANDSCAPE}, + * {@link #SCREEN_ORIENTATION_REVERSE_PORTRAIT}, + * {@link #SCREEN_ORIENTATION_FULL_SENSOR}, + * {@link #SCREEN_ORIENTATION_USER_LANDSCAPE}, + * {@link #SCREEN_ORIENTATION_USER_PORTRAIT}, + * {@link #SCREEN_ORIENTATION_FULL_USER}, + * {@link #SCREEN_ORIENTATION_LOCKED}, + */ + public int screenOrientation = SCREEN_ORIENTATION_UNSPECIFIED; + + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the IMSI MCC. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_MCC = 0x0001; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the IMSI MNC. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_MNC = 0x0002; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the locale. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_LOCALE = 0x0004; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the touchscreen type. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_TOUCHSCREEN = 0x0008; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the keyboard type. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_KEYBOARD = 0x0010; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the keyboard or navigation being hidden/exposed. + * Note that inspite of the name, this applies to the changes to any + * hidden states: keyboard or navigation. + * Set from the {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_KEYBOARD_HIDDEN = 0x0020; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the navigation type. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_NAVIGATION = 0x0040; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the screen orientation. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_ORIENTATION = 0x0080; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the screen layout. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_SCREEN_LAYOUT = 0x0100; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle the ui mode. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_UI_MODE = 0x0200; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle the screen size. Set from the + * {@link android.R.attr#configChanges} attribute. This will be + * set by default for applications that target an earlier version + * than {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}... + * however, you will not see the bit set here becomes some + * applications incorrectly compare {@link #configChanges} against + * an absolute value rather than correctly masking out the bits + * they are interested in. Please don't do that, thanks. + */ + public static final int CONFIG_SCREEN_SIZE = 0x0400; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle the smallest screen size. Set from the + * {@link android.R.attr#configChanges} attribute. This will be + * set by default for applications that target an earlier version + * than {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}... + * however, you will not see the bit set here becomes some + * applications incorrectly compare {@link #configChanges} against + * an absolute value rather than correctly masking out the bits + * they are interested in. Please don't do that, thanks. + */ + public static final int CONFIG_SMALLEST_SCREEN_SIZE = 0x0800; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle density changes. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_DENSITY = 0x1000; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle the change to layout direction. Set from the + * {@link android.R.attr#configChanges} attribute. + */ + public static final int CONFIG_LAYOUT_DIRECTION = 0x2000; + /** + * Bit in {@link #configChanges} that indicates that the activity + * can itself handle changes to the font scaling factor. Set from the + * {@link android.R.attr#configChanges} attribute. This is + * not a core resource configuration, but a higher-level value, so its + * constant starts at the high bits. + */ + public static final int CONFIG_FONT_SCALE = 0x40000000; + + /** @hide + * Unfortunately the constants for config changes in native code are + * different from ActivityInfo. :( Here are the values we should use for the + * native side given the bit we have assigned in ActivityInfo. + */ + public static int[] CONFIG_NATIVE_BITS = new int[14] /*{ + Configuration.NATIVE_CONFIG_MNC, // MNC + Configuration.NATIVE_CONFIG_MCC, // MCC + Configuration.NATIVE_CONFIG_LOCALE, // LOCALE + Configuration.NATIVE_CONFIG_TOUCHSCREEN, // TOUCH SCREEN + Configuration.NATIVE_CONFIG_KEYBOARD, // KEYBOARD + Configuration.NATIVE_CONFIG_KEYBOARD_HIDDEN, // KEYBOARD HIDDEN + Configuration.NATIVE_CONFIG_NAVIGATION, // NAVIGATION + Configuration.NATIVE_CONFIG_ORIENTATION, // ORIENTATION + Configuration.NATIVE_CONFIG_SCREEN_LAYOUT, // SCREEN LAYOUT + Configuration.NATIVE_CONFIG_UI_MODE, // UI MODE + Configuration.NATIVE_CONFIG_SCREEN_SIZE, // SCREEN SIZE + Configuration.NATIVE_CONFIG_SMALLEST_SCREEN_SIZE, // SMALLEST SCREEN SIZE + Configuration.NATIVE_CONFIG_DENSITY, // DENSITY + Configuration.NATIVE_CONFIG_LAYOUTDIR, // LAYOUT DIRECTION + }*/; + /** @hide + * Convert Java change bits to native. + */ + public static int activityInfoConfigToNative(int input) { + int output = 0; + for (int i=0; iThis value corresponds to "splitActionBarWhenNarrow" for the {@link #uiOptions} XML + * attribute. + */ + public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; + + /** + * If defined, the activity named here is the logical parent of this activity. + */ + public String parentActivityName; + + public ActivityInfo() { + } + + public ActivityInfo(ActivityInfo orig) { + super(orig); + theme = orig.theme; + launchMode = orig.launchMode; + permission = orig.permission; + taskAffinity = orig.taskAffinity; + targetActivity = orig.targetActivity; + flags = orig.flags; + screenOrientation = orig.screenOrientation; + configChanges = orig.configChanges; + softInputMode = orig.softInputMode; + uiOptions = orig.uiOptions; + parentActivityName = orig.parentActivityName; + } + + /** + * Return the theme resource identifier to use for this activity. If + * the activity defines a theme, that is used; else, the application + * theme is used. + * + * @return The theme associated with this activity. + */ + public final int getThemeResource() { + return theme != 0 ? theme : applicationInfo.theme; + } + + public void dump(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + if (permission != null) { + pw.println(prefix + "permission=" + permission); + } + pw.println(prefix + "taskAffinity=" + taskAffinity + + " targetActivity=" + targetActivity); + if (launchMode != 0 || flags != 0 || theme != 0) { + pw.println(prefix + "launchMode=" + launchMode + + " flags=0x" + Integer.toHexString(flags) + + " theme=0x" + Integer.toHexString(theme)); + } + if (screenOrientation != SCREEN_ORIENTATION_UNSPECIFIED + || configChanges != 0 || softInputMode != 0) { + pw.println(prefix + "screenOrientation=" + screenOrientation + + " configChanges=0x" + Integer.toHexString(configChanges) + + " softInputMode=0x" + Integer.toHexString(softInputMode)); + } + if (uiOptions != 0) { + pw.println(prefix + " uiOptions=0x" + Integer.toHexString(uiOptions)); + } + super.dumpBack(pw, prefix); + } + + public String toString() { + return "ActivityInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + "}"; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/pm/ApplicationInfo.java b/src/api-impl/android/content/pm/ApplicationInfo.java new file mode 100644 index 00000000..5f817f18 --- /dev/null +++ b/src/api-impl/android/content/pm/ApplicationInfo.java @@ -0,0 +1,656 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.content.pm.PackageManager.NameNotFoundException; +//import android.content.res.Resources; +//import android.graphics.drawable.Drawable; +import android.util.Printer; + +import java.text.Collator; +import java.util.Comparator; + +/** + * Information you can retrieve about a particular application. This + * corresponds to information collected from the AndroidManifest.xml's + * <application> tag. + */ +public class ApplicationInfo extends PackageItemInfo { + + /** + * Default task affinity of all activities in this application. See + * {@link ActivityInfo#taskAffinity} for more information. This comes + * from the "taskAffinity" attribute. + */ + public String taskAffinity; + + /** + * Optional name of a permission required to be able to access this + * application's components. From the "permission" attribute. + */ + public String permission; + + /** + * The name of the process this application should run in. From the + * "process" attribute or, if not set, the same as + * packageName. + */ + public String processName; + + /** + * Class implementing the Application object. From the "class" + * attribute. + */ + public String className; + + /** + * A style resource identifier (in the package's resources) of the + * description of an application. From the "description" attribute + * or, if not set, 0. + */ + public int descriptionRes; + + /** + * A style resource identifier (in the package's resources) of the + * default visual theme of the application. From the "theme" attribute + * or, if not set, 0. + */ + public int theme; + + /** + * Class implementing the Application's manage space + * functionality. From the "manageSpaceActivity" + * attribute. This is an optional attribute and will be null if + * applications don't specify it in their manifest + */ + public String manageSpaceActivityName; + + /** + * Class implementing the Application's backup functionality. From + * the "backupAgent" attribute. This is an optional attribute and + * will be null if the application does not specify it in its manifest. + * + *

If android:allowBackup is set to false, this attribute is ignored. + */ + public String backupAgentName; + + /** + * The default extra UI options for activities in this application. + * Set from the {@link android.R.attr#uiOptions} attribute in the + * activity's manifest. + */ + public int uiOptions = 0; + + /** + * Value for {@link #flags}: if set, this application is installed in the + * device's system image. + */ + public static final int FLAG_SYSTEM = 1<<0; + + /** + * Value for {@link #flags}: set to true if this application would like to + * allow debugging of its + * code, even when installed on a non-development system. Comes + * from {@link android.R.styleable#AndroidManifestApplication_debuggable + * android:debuggable} of the <application> tag. + */ + public static final int FLAG_DEBUGGABLE = 1<<1; + + /** + * Value for {@link #flags}: set to true if this application has code + * associated with it. Comes + * from {@link android.R.styleable#AndroidManifestApplication_hasCode + * android:hasCode} of the <application> tag. + */ + public static final int FLAG_HAS_CODE = 1<<2; + + /** + * Value for {@link #flags}: set to true if this application is persistent. + * Comes from {@link android.R.styleable#AndroidManifestApplication_persistent + * android:persistent} of the <application> tag. + */ + public static final int FLAG_PERSISTENT = 1<<3; + + /** + * Value for {@link #flags}: set to true if this application holds the + * {@link android.Manifest.permission#FACTORY_TEST} permission and the + * device is running in factory test mode. + */ + public static final int FLAG_FACTORY_TEST = 1<<4; + + /** + * Value for {@link #flags}: default value for the corresponding ActivityInfo flag. + * Comes from {@link android.R.styleable#AndroidManifestApplication_allowTaskReparenting + * android:allowTaskReparenting} of the <application> tag. + */ + public static final int FLAG_ALLOW_TASK_REPARENTING = 1<<5; + + /** + * Value for {@link #flags}: default value for the corresponding ActivityInfo flag. + * Comes from {@link android.R.styleable#AndroidManifestApplication_allowClearUserData + * android:allowClearUserData} of the <application> tag. + */ + public static final int FLAG_ALLOW_CLEAR_USER_DATA = 1<<6; + + /** + * Value for {@link #flags}: this is set if this application has been + * install as an update to a built-in system application. + */ + public static final int FLAG_UPDATED_SYSTEM_APP = 1<<7; + + /** + * Value for {@link #flags}: this is set of the application has specified + * {@link android.R.styleable#AndroidManifestApplication_testOnly + * android:testOnly} to be true. + */ + public static final int FLAG_TEST_ONLY = 1<<8; + + /** + * Value for {@link #flags}: true when the application's window can be + * reduced in size for smaller screens. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_smallScreens + * android:smallScreens}. + */ + public static final int FLAG_SUPPORTS_SMALL_SCREENS = 1<<9; + + /** + * Value for {@link #flags}: true when the application's window can be + * displayed on normal screens. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_normalScreens + * android:normalScreens}. + */ + public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1<<10; + + /** + * Value for {@link #flags}: true when the application's window can be + * increased in size for larger screens. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_largeScreens + * android:largeScreens}. + */ + public static final int FLAG_SUPPORTS_LARGE_SCREENS = 1<<11; + + /** + * Value for {@link #flags}: true when the application knows how to adjust + * its UI for different screen sizes. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_resizeable + * android:resizeable}. + */ + public static final int FLAG_RESIZEABLE_FOR_SCREENS = 1<<12; + + /** + * Value for {@link #flags}: true when the application knows how to + * accomodate different screen densities. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_anyDensity + * android:anyDensity}. + */ + public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 1<<13; + + /** + * Value for {@link #flags}: set to true if this application would like to + * request the VM to operate under the safe mode. Comes from + * {@link android.R.styleable#AndroidManifestApplication_vmSafeMode + * android:vmSafeMode} of the <application> tag. + */ + public static final int FLAG_VM_SAFE_MODE = 1<<14; + + /** + * Value for {@link #flags}: set to false if the application does not wish + * to permit any OS-driven backups of its data; true otherwise. + * + *

Comes from the + * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup} + * attribute of the <application> tag. + */ + public static final int FLAG_ALLOW_BACKUP = 1<<15; + + /** + * Value for {@link #flags}: set to false if the application must be kept + * in memory following a full-system restore operation; true otherwise. + * Ordinarily, during a full system restore operation each application is shut down + * following execution of its agent's onRestore() method. Setting this attribute to + * false prevents this. Most applications will not need to set this attribute. + * + *

If + * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup} + * is set to false or no + * {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent} + * is specified, this flag will be ignored. + * + *

Comes from the + * {@link android.R.styleable#AndroidManifestApplication_killAfterRestore android:killAfterRestore} + * attribute of the <application> tag. + */ + public static final int FLAG_KILL_AFTER_RESTORE = 1<<16; + + /** + * Value for {@link #flags}: Set to true if the application's backup + * agent claims to be able to handle restore data even "from the future," + * i.e. from versions of the application with a versionCode greater than + * the one currently installed on the device. Use with caution! By default + * this attribute is false and the Backup Manager will ensure that data + * from "future" versions of the application are never supplied during a restore operation. + * + *

If + * {@link android.R.styleable#AndroidManifestApplication_allowBackup android:allowBackup} + * is set to false or no + * {@link android.R.styleable#AndroidManifestApplication_backupAgent android:backupAgent} + * is specified, this flag will be ignored. + * + *

Comes from the + * {@link android.R.styleable#AndroidManifestApplication_restoreAnyVersion android:restoreAnyVersion} + * attribute of the <application> tag. + */ + public static final int FLAG_RESTORE_ANY_VERSION = 1<<17; + + /** + * Value for {@link #flags}: Set to true if the application is + * currently installed on external/removable/unprotected storage. Such + * applications may not be available if their storage is not currently + * mounted. When the storage it is on is not available, it will look like + * the application has been uninstalled (its .apk is no longer available) + * but its persistent data is not removed. + */ + public static final int FLAG_EXTERNAL_STORAGE = 1<<18; + + /** + * Value for {@link #flags}: true when the application's window can be + * increased in size for extra large screens. Corresponds to + * {@link android.R.styleable#AndroidManifestSupportsScreens_xlargeScreens + * android:xlargeScreens}. + */ + public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 1<<19; + + /** + * Value for {@link #flags}: true when the application has requested a + * large heap for its processes. Corresponds to + * {@link android.R.styleable#AndroidManifestApplication_largeHeap + * android:largeHeap}. + */ + public static final int FLAG_LARGE_HEAP = 1<<20; + + /** + * Value for {@link #flags}: true if this application's package is in + * the stopped state. + */ + public static final int FLAG_STOPPED = 1<<21; + + /** + * Value for {@link #flags}: true when the application is willing to support + * RTL (right to left). All activities will inherit this value. + * + * Set from the {@link android.R.attr#supportsRtl} attribute in the + * activity's manifest. + * + * Default value is false (no support for RTL). + */ + public static final int FLAG_SUPPORTS_RTL = 1<<22; + + /** + * Value for {@link #flags}: true if the application is currently + * installed for the calling user. + */ + public static final int FLAG_INSTALLED = 1<<23; + + /** + * Value for {@link #flags}: true if the application only has its + * data installed; the application package itself does not currently + * exist on the device. + */ + public static final int FLAG_IS_DATA_ONLY = 1<<24; + + /** + * Value for {@link #flags}: set to {@code true} if the application + * is permitted to hold privileged permissions. + * + * {@hide} + */ + public static final int FLAG_PRIVILEGED = 1<<30; + + /** + * Value for {@link #flags}: Set to true if the application has been + * installed using the forward lock option. + * + * NOTE: DO NOT CHANGE THIS VALUE! It is saved in packages.xml. + * + * {@hide} + */ + public static final int FLAG_FORWARD_LOCK = 1<<29; + + /** + * Value for {@link #flags}: set to true if the application + * has reported that it is heavy-weight, and thus can not participate in + * the normal application lifecycle. + * + *

Comes from the + * {@link android.R.styleable#AndroidManifestApplication_cantSaveState android:cantSaveState} + * attribute of the <application> tag. + * + * {@hide} + */ + public static final int FLAG_CANT_SAVE_STATE = 1<<28; + + /** + * Value for {@link #flags}: true if the application is blocked via restrictions and for + * most purposes is considered as not installed. + * {@hide} + */ + public static final int FLAG_BLOCKED = 1<<27; + + /** + * Flags associated with the application. Any combination of + * {@link #FLAG_SYSTEM}, {@link #FLAG_DEBUGGABLE}, {@link #FLAG_HAS_CODE}, + * {@link #FLAG_PERSISTENT}, {@link #FLAG_FACTORY_TEST}, and + * {@link #FLAG_ALLOW_TASK_REPARENTING} + * {@link #FLAG_ALLOW_CLEAR_USER_DATA}, {@link #FLAG_UPDATED_SYSTEM_APP}, + * {@link #FLAG_TEST_ONLY}, {@link #FLAG_SUPPORTS_SMALL_SCREENS}, + * {@link #FLAG_SUPPORTS_NORMAL_SCREENS}, + * {@link #FLAG_SUPPORTS_LARGE_SCREENS}, {@link #FLAG_SUPPORTS_XLARGE_SCREENS}, + * {@link #FLAG_RESIZEABLE_FOR_SCREENS}, + * {@link #FLAG_SUPPORTS_SCREEN_DENSITIES}, {@link #FLAG_VM_SAFE_MODE}, + * {@link #FLAG_INSTALLED}. + */ + public int flags = 0; + + /** + * The required smallest screen width the application can run on. If 0, + * nothing has been specified. Comes from + * {@link android.R.styleable#AndroidManifestSupportsScreens_requiresSmallestWidthDp + * android:requiresSmallestWidthDp} attribute of the <supports-screens> tag. + */ + public int requiresSmallestWidthDp = 0; + + /** + * The maximum smallest screen width the application is designed for. If 0, + * nothing has been specified. Comes from + * {@link android.R.styleable#AndroidManifestSupportsScreens_compatibleWidthLimitDp + * android:compatibleWidthLimitDp} attribute of the <supports-screens> tag. + */ + public int compatibleWidthLimitDp = 0; + + /** + * The maximum smallest screen width the application will work on. If 0, + * nothing has been specified. Comes from + * {@link android.R.styleable#AndroidManifestSupportsScreens_largestWidthLimitDp + * android:largestWidthLimitDp} attribute of the <supports-screens> tag. + */ + public int largestWidthLimitDp = 0; + + /** + * Full path to the location of this package. + */ + public String sourceDir = "/tmp/FIXME/FIXME.apk"; // FIXME + + /** + * Full path to the location of the publicly available parts of this + * package (i.e. the primary resource package and manifest). For + * non-forward-locked apps this will be the same as {@link #sourceDir). + */ + public String publicSourceDir; + + /** + * Full paths to the locations of extra resource packages this application + * uses. This field is only used if there are extra resource packages, + * otherwise it is null. + * + * {@hide} + */ + public String[] resourceDirs; + + /** + * String retrieved from the seinfo tag found in selinux policy. This value + * is useful in setting an SELinux security context on the process as well + * as its data directory. + * + * {@hide} + */ + public String seinfo; + + /** + * Paths to all shared libraries this application is linked against. This + * field is only set if the {@link PackageManager#GET_SHARED_LIBRARY_FILES + * PackageManager.GET_SHARED_LIBRARY_FILES} flag was used when retrieving + * the structure. + */ + public String[] sharedLibraryFiles; + + /** + * Full path to a directory assigned to the package for its persistent + * data. + */ + public String dataDir; + + /** + * Full path to the directory where native JNI libraries are stored. + */ + public String nativeLibraryDir; + + /** + * The kernel user-ID that has been assigned to this application; + * currently this is not a unique ID (multiple applications can have + * the same uid). + */ + public int uid; + + /** + * The minimum SDK version this application targets. It may run on earlier + * versions, but it knows how to work with any new behavior added at this + * version. Will be {@link android.os.Build.VERSION_CODES#CUR_DEVELOPMENT} + * if this is a development build and the app is targeting that. You should + * compare that this number is >= the SDK version number at which your + * behavior was introduced. + */ + public int targetSdkVersion; + + /** + * When false, indicates that all components within this application are + * considered disabled, regardless of their individually set enabled status. + */ + public boolean enabled = true; + + /** + * For convenient access to the current enabled setting of this app. + * @hide + */ + public int enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; + + /** + * For convenient access to package's install location. + * @hide + */ + public int installLocation = PackageInfo.INSTALL_LOCATION_UNSPECIFIED; + + public void dump(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + if (className != null) { + pw.println(prefix + "className=" + className); + } + if (permission != null) { + pw.println(prefix + "permission=" + permission); + } + pw.println(prefix + "processName=" + processName); + pw.println(prefix + "taskAffinity=" + taskAffinity); + pw.println(prefix + "uid=" + uid + " flags=0x" + Integer.toHexString(flags) + + " theme=0x" + Integer.toHexString(theme)); + pw.println(prefix + "requiresSmallestWidthDp=" + requiresSmallestWidthDp + + " compatibleWidthLimitDp=" + compatibleWidthLimitDp + + " largestWidthLimitDp=" + largestWidthLimitDp); + pw.println(prefix + "sourceDir=" + sourceDir); + if (sourceDir == null) { + if (publicSourceDir != null) { + pw.println(prefix + "publicSourceDir=" + publicSourceDir); + } + } else if (!sourceDir.equals(publicSourceDir)) { + pw.println(prefix + "publicSourceDir=" + publicSourceDir); + } + if (resourceDirs != null) { + pw.println(prefix + "resourceDirs=" + resourceDirs); + } + if (seinfo != null) { + pw.println(prefix + "seinfo=" + seinfo); + } + pw.println(prefix + "dataDir=" + dataDir); + if (sharedLibraryFiles != null) { + pw.println(prefix + "sharedLibraryFiles=" + sharedLibraryFiles); + } + pw.println(prefix + "enabled=" + enabled + " targetSdkVersion=" + targetSdkVersion); + if (manageSpaceActivityName != null) { + pw.println(prefix + "manageSpaceActivityName="+manageSpaceActivityName); + } + if (descriptionRes != 0) { + pw.println(prefix + "description=0x"+Integer.toHexString(descriptionRes)); + } + if (uiOptions != 0) { + pw.println(prefix + "uiOptions=0x" + Integer.toHexString(uiOptions)); + } + pw.println(prefix + "supportsRtl=" + (hasRtlSupport() ? "true" : "false")); + super.dumpBack(pw, prefix); + } + + /** + * @return true if "supportsRtl" has been set to true in the AndroidManifest + * @hide + */ + public boolean hasRtlSupport() { + return (flags & FLAG_SUPPORTS_RTL) == FLAG_SUPPORTS_RTL; + } + + public static class DisplayNameComparator + implements Comparator { + public DisplayNameComparator(PackageManager pm) { + mPM = pm; + } + + public final int compare(ApplicationInfo aa, ApplicationInfo ab) { + CharSequence sa = mPM.getApplicationLabel(aa); + if (sa == null) { + sa = aa.packageName; + } + CharSequence sb = mPM.getApplicationLabel(ab); + if (sb == null) { + sb = ab.packageName; + } + + return sCollator.compare(sa.toString(), sb.toString()); + } + + private final Collator sCollator = Collator.getInstance(); + private PackageManager mPM; + } + + public ApplicationInfo() { + } + + public ApplicationInfo(ApplicationInfo orig) { + super(orig); + taskAffinity = orig.taskAffinity; + permission = orig.permission; + processName = orig.processName; + className = orig.className; + theme = orig.theme; + flags = orig.flags; + requiresSmallestWidthDp = orig.requiresSmallestWidthDp; + compatibleWidthLimitDp = orig.compatibleWidthLimitDp; + largestWidthLimitDp = orig.largestWidthLimitDp; + sourceDir = orig.sourceDir; + publicSourceDir = orig.publicSourceDir; + nativeLibraryDir = orig.nativeLibraryDir; + resourceDirs = orig.resourceDirs; + seinfo = orig.seinfo; + sharedLibraryFiles = orig.sharedLibraryFiles; + dataDir = orig.dataDir; + uid = orig.uid; + targetSdkVersion = orig.targetSdkVersion; + enabled = orig.enabled; + enabledSetting = orig.enabledSetting; + installLocation = orig.installLocation; + manageSpaceActivityName = orig.manageSpaceActivityName; + descriptionRes = orig.descriptionRes; + uiOptions = orig.uiOptions; + backupAgentName = orig.backupAgentName; + } + + + public String toString() { + return "ApplicationInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + packageName + "}"; + } + + public int describeContents() { + return 0; + } + + /** + * Retrieve the textual description of the application. This + * will call back on the given PackageManager to load the description from + * the application. + * + * @param pm A PackageManager from which the label can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a CharSequence containing the application's description. + * If there is no description, null is returned. + */ + public CharSequence loadDescription(PackageManager pm) { + if (descriptionRes != 0) { + CharSequence label = pm.getText(packageName, descriptionRes, this); + if (label != null) { + return label; + } + } + return null; + } + + /** + * Disable compatibility mode + * + * @hide + */ + public void disableCompatibilityMode() { + flags |= (FLAG_SUPPORTS_LARGE_SCREENS | FLAG_SUPPORTS_NORMAL_SCREENS | + FLAG_SUPPORTS_SMALL_SCREENS | FLAG_RESIZEABLE_FOR_SCREENS | + FLAG_SUPPORTS_SCREEN_DENSITIES | FLAG_SUPPORTS_XLARGE_SCREENS); + } + + /** + * @hide + */ + @Override protected Drawable loadDefaultIcon(PackageManager pm) { +/* if ((flags & FLAG_EXTERNAL_STORAGE) != 0 + && isPackageUnavailable(pm)) { + return Resources.getSystem().getDrawable( + com.android.internal.R.drawable.sym_app_on_sd_unavailable_icon); + } + return pm.getDefaultActivityIcon();*/ + return null; + } + + private boolean isPackageUnavailable(PackageManager pm) { + try { + return pm.getPackageInfo(packageName, 0) == null; + } catch (NameNotFoundException ex) { + return true; + } + } + + /** + * @hide + */ + @Override protected ApplicationInfo getApplicationInfo() { + return this; + } +} diff --git a/src/api-impl/android/content/pm/ComponentInfo.java b/src/api-impl/android/content/pm/ComponentInfo.java new file mode 100644 index 00000000..d6e963a1 --- /dev/null +++ b/src/api-impl/android/content/pm/ComponentInfo.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +//import android.graphics.drawable.Drawable; +import android.util.Printer; + +/** + * Base class containing information common to all application components + * ({@link ActivityInfo}, {@link ServiceInfo}). This class is not intended + * to be used by itself; it is simply here to share common definitions + * between all application components. As such, it does not itself + * implement Parcelable, but does provide convenience methods to assist + * in the implementation of Parcelable in subclasses. + */ +public class ComponentInfo extends PackageItemInfo { + /** + * Global information about the application/package this component is a + * part of. + */ + public ApplicationInfo applicationInfo; + + /** + * The name of the process this component should run in. + * From the "android:process" attribute or, if not set, the same + * as applicationInfo.processName. + */ + public String processName; + + /** + * A string resource identifier (in the package's resources) containing + * a user-readable description of the component. From the "description" + * attribute or, if not set, 0. + */ + public int descriptionRes; + + /** + * Indicates whether or not this component may be instantiated. Note that this value can be + * overriden by the one in its parent {@link ApplicationInfo}. + */ + public boolean enabled = true; + + /** + * Set to true if this component is available for use by other applications. + * Comes from {@link android.R.attr#exported android:exported} of the + * <activity>, <receiver>, <service>, or + * <provider> tag. + */ + public boolean exported = false; + + public ComponentInfo() { + } + + public ComponentInfo(ComponentInfo orig) { + super(orig); + applicationInfo = orig.applicationInfo; + processName = orig.processName; + descriptionRes = orig.descriptionRes; + enabled = orig.enabled; + exported = orig.exported; + } + + @Override public CharSequence loadLabel(PackageManager pm) {/* + if (nonLocalizedLabel != null) { + return nonLocalizedLabel; + } + ApplicationInfo ai = applicationInfo; + CharSequence label; + if (labelRes != 0) { + label = pm.getText(packageName, labelRes, ai); + if (label != null) { + return label; + } + } + if (ai.nonLocalizedLabel != null) { + return ai.nonLocalizedLabel; + } + if (ai.labelRes != 0) { + label = pm.getText(packageName, ai.labelRes, ai); + if (label != null) { + return label; + } + } + return name; + */return null;} + + /** + * Return whether this component and its enclosing application are enabled. + */ + public boolean isEnabled() { + return enabled /*&& applicationInfo.enabled*/; + } + + /** + * Return the icon resource identifier to use for this component. If + * the component defines an icon, that is used; else, the application + * icon is used. + * + * @return The icon associated with this component. + */ + public final int getIconResource() { + return icon;// != 0 ? icon : applicationInfo.icon; + } + + /** + * Return the logo resource identifier to use for this component. If + * the component defines a logo, that is used; else, the application + * logo is used. + * + * @return The logo associated with this component. + */ + public final int getLogoResource() { + return logo;// != 0 ? logo : applicationInfo.logo; + } + + protected void dumpFront(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + pw.println(prefix + "enabled=" + enabled + " exported=" + exported + + " processName=" + processName); + if (descriptionRes != 0) { + pw.println(prefix + "description=" + descriptionRes); + } + } + + protected void dumpBack(Printer pw, String prefix) { + if (applicationInfo != null) { + pw.println(prefix + "ApplicationInfo:"); + //applicationInfo.dump(pw, prefix + " "); + } else { + pw.println(prefix + "ApplicationInfo: null"); + } + super.dumpBack(pw, prefix); + } + + /** + * @hide + */ + @Override protected Drawable loadDefaultIcon(PackageManager pm) { + return null;//applicationInfo.loadIcon(pm); + } + + /** + * @hide + */ + @Override + protected Drawable loadDefaultLogo(PackageManager pm) { + return null;//applicationInfo.loadLogo(pm); + } + + /** + * @hide + */ + @Override protected ApplicationInfo getApplicationInfo() { + return applicationInfo; + } +} diff --git a/src/api-impl/android/content/pm/ConfigurationInfo.java b/src/api-impl/android/content/pm/ConfigurationInfo.java new file mode 100644 index 00000000..43fd1da0 --- /dev/null +++ b/src/api-impl/android/content/pm/ConfigurationInfo.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * Information you can retrieve about hardware configuration preferences + * declared by an application. This corresponds to information collected from the + * AndroidManifest.xml's <uses-configuration> and <uses-feature> tags. + */ +public class ConfigurationInfo { + /** + * The kind of touch screen attached to the device. + * One of: {@link android.content.res.Configuration#TOUCHSCREEN_NOTOUCH}, + * {@link android.content.res.Configuration#TOUCHSCREEN_STYLUS}, + * {@link android.content.res.Configuration#TOUCHSCREEN_FINGER}. + */ + public int reqTouchScreen; + + /** + * Application's input method preference. + * One of: {@link android.content.res.Configuration#KEYBOARD_UNDEFINED}, + * {@link android.content.res.Configuration#KEYBOARD_NOKEYS}, + * {@link android.content.res.Configuration#KEYBOARD_QWERTY}, + * {@link android.content.res.Configuration#KEYBOARD_12KEY} + */ + public int reqKeyboardType; + + /** + * A flag indicating whether any keyboard is available. + * one of: {@link android.content.res.Configuration#NAVIGATION_UNDEFINED}, + * {@link android.content.res.Configuration#NAVIGATION_DPAD}, + * {@link android.content.res.Configuration#NAVIGATION_TRACKBALL}, + * {@link android.content.res.Configuration#NAVIGATION_WHEEL} + */ + public int reqNavigation; + + /** + * Value for {@link #reqInputFeatures}: if set, indicates that the application + * requires a hard keyboard + */ + public static final int INPUT_FEATURE_HARD_KEYBOARD = 0x00000001; + + /** + * Value for {@link #reqInputFeatures}: if set, indicates that the application + * requires a five way navigation device + */ + public static final int INPUT_FEATURE_FIVE_WAY_NAV = 0x00000002; + + /** + * Flags associated with the input features. Any combination of + * {@link #INPUT_FEATURE_HARD_KEYBOARD}, + * {@link #INPUT_FEATURE_FIVE_WAY_NAV} + */ + public int reqInputFeatures = 0; + + /** + * Default value for {@link #reqGlEsVersion}; + */ + public static final int GL_ES_VERSION_UNDEFINED = 0; + /** + * The GLES version used by an application. The upper order 16 bits represent the + * major version and the lower order 16 bits the minor version. + */ + public int reqGlEsVersion; + + public ConfigurationInfo() { + } + + public ConfigurationInfo(ConfigurationInfo orig) { + reqTouchScreen = orig.reqTouchScreen; + reqKeyboardType = orig.reqKeyboardType; + reqNavigation = orig.reqNavigation; + reqInputFeatures = orig.reqInputFeatures; + reqGlEsVersion = orig.reqGlEsVersion; + } + + public String toString() { + return "ConfigurationInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " touchscreen = " + reqTouchScreen + + " inputMethod = " + reqKeyboardType + + " navigation = " + reqNavigation + + " reqInputFeatures = " + reqInputFeatures + + " reqGlEsVersion = " + reqGlEsVersion + "}"; + } + + public int describeContents() { + return 0; + } + + /** + * This method extracts the major and minor version of reqGLEsVersion attribute + * and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned + * as 1.2 + * @return String representation of the reqGlEsVersion attribute + */ + public String getGlEsVersion() { + int major = ((reqGlEsVersion & 0xffff0000) >> 16); + int minor = reqGlEsVersion & 0x0000ffff; + return String.valueOf(major)+"."+String.valueOf(minor); + } +} diff --git a/src/api-impl/android/content/pm/FeatureInfo.java b/src/api-impl/android/content/pm/FeatureInfo.java new file mode 100644 index 00000000..521bead4 --- /dev/null +++ b/src/api-impl/android/content/pm/FeatureInfo.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * A single feature that can be requested by an application. This corresponds + * to information collected from the + * AndroidManifest.xml's <uses-feature> tag. + */ +public class FeatureInfo { + /** + * The name of this feature, for example "android.hardware.camera". If + * this is null, then this is an OpenGL ES version feature as described + * in {@link #reqGlEsVersion}. + */ + public String name; + + /** + * Default value for {@link #reqGlEsVersion}; + */ + public static final int GL_ES_VERSION_UNDEFINED = 0; + + /** + * The GLES version used by an application. The upper order 16 bits represent the + * major version and the lower order 16 bits the minor version. Only valid + * if {@link #name} is null. + */ + public int reqGlEsVersion; + + /** + * Set on {@link #flags} if this feature has been required by the application. + */ + public static final int FLAG_REQUIRED = 0x0001; + + /** + * Additional flags. May be zero or more of {@link #FLAG_REQUIRED}. + */ + public int flags; + + public FeatureInfo() { + } + + public FeatureInfo(FeatureInfo orig) { + name = orig.name; + reqGlEsVersion = orig.reqGlEsVersion; + flags = orig.flags; + } + + public String toString() { + if (name != null) { + return "FeatureInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + " fl=0x" + Integer.toHexString(flags) + "}"; + } else { + return "FeatureInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " glEsVers=" + getGlEsVersion() + + " fl=0x" + Integer.toHexString(flags) + "}"; + } + } + + public int describeContents() { + return 0; + } + + /** + * This method extracts the major and minor version of reqGLEsVersion attribute + * and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned + * as 1.2 + * @return String representation of the reqGlEsVersion attribute + */ + public String getGlEsVersion() { + int major = ((reqGlEsVersion & 0xffff0000) >> 16); + int minor = reqGlEsVersion & 0x0000ffff; + return String.valueOf(major)+"."+String.valueOf(minor); + } +} diff --git a/src/api-impl/android/content/pm/InstrumentationInfo.java b/src/api-impl/android/content/pm/InstrumentationInfo.java new file mode 100644 index 00000000..95aa37c1 --- /dev/null +++ b/src/api-impl/android/content/pm/InstrumentationInfo.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * Information you can retrieve about a particular piece of test + * instrumentation. This corresponds to information collected + * from the AndroidManifest.xml's <instrumentation> tag. + */ +public class InstrumentationInfo extends PackageItemInfo { + /** + * The name of the application package being instrumented. From the + * "package" attribute. + */ + public String targetPackage; + + /** + * Full path to the location of this package. + */ + public String sourceDir; + + /** + * Full path to the location of the publicly available parts of this package (i.e. the resources + * and manifest). For non-forward-locked apps this will be the same as {@link #sourceDir). + */ + public String publicSourceDir; + /** + * Full path to a directory assigned to the package for its persistent + * data. + */ + public String dataDir; + + /** + * Full path to the directory where the native JNI libraries are stored. + * + * {@hide} + */ + public String nativeLibraryDir; + + /** + * Specifies whether or not this instrumentation will handle profiling. + */ + public boolean handleProfiling; + + /** Specifies whether or not to run this instrumentation as a functional test */ + public boolean functionalTest; + + public InstrumentationInfo() { + } + + public InstrumentationInfo(InstrumentationInfo orig) { + super(orig); + targetPackage = orig.targetPackage; + sourceDir = orig.sourceDir; + publicSourceDir = orig.publicSourceDir; + dataDir = orig.dataDir; + nativeLibraryDir = orig.nativeLibraryDir; + handleProfiling = orig.handleProfiling; + functionalTest = orig.functionalTest; + } + + public String toString() { + return "InstrumentationInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + packageName + "}"; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/pm/ManifestDigest.java b/src/api-impl/android/content/pm/ManifestDigest.java new file mode 100644 index 00000000..b22818be --- /dev/null +++ b/src/api-impl/android/content/pm/ManifestDigest.java @@ -0,0 +1,119 @@ +/* + * 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 android.content.pm; + +import android.util.Slog; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.DigestInputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + +import libcore.io.IoUtils; + +/** + * Represents the manifest digest for a package. This is suitable for comparison + * of two packages to know whether the manifests are identical. + * + * @hide + */ +public class ManifestDigest { + private static final String TAG = "ManifestDigest"; + + /** The digest of the manifest in our preferred order. */ + private final byte[] mDigest; + + /** What we print out first when toString() is called. */ + private static final String TO_STRING_PREFIX = "ManifestDigest {mDigest="; + + /** Digest algorithm to use. */ + private static final String DIGEST_ALGORITHM = "SHA-256"; + + ManifestDigest(byte[] digest) { + mDigest = digest; + } + + static ManifestDigest fromInputStream(InputStream fileIs) { + if (fileIs == null) { + return null; + } + + final MessageDigest md; + try { + md = MessageDigest.getInstance(DIGEST_ALGORITHM); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(DIGEST_ALGORITHM + " must be available", e); + } + + final DigestInputStream dis = new DigestInputStream(new BufferedInputStream(fileIs), md); + try { + byte[] readBuffer = new byte[8192]; + while (dis.read(readBuffer, 0, readBuffer.length) != -1) { + // not using + } + } catch (IOException e) { + Slog.w(TAG, "Could not read manifest"); + return null; + } finally { + IoUtils.closeQuietly(dis); + } + + final byte[] digest = md.digest(); + return new ManifestDigest(digest); + } + + public int describeContents() { + return 0; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof ManifestDigest)) { + return false; + } + + final ManifestDigest other = (ManifestDigest) o; + + return this == other || Arrays.equals(mDigest, other.mDigest); + } + + @Override + public int hashCode() { + return Arrays.hashCode(mDigest); + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder(TO_STRING_PREFIX.length() + + (mDigest.length * 3) + 1); + + sb.append(TO_STRING_PREFIX); + + final int N = mDigest.length; + for (int i = 0; i < N; i++) { + final byte b = mDigest[i]; + IntegralToString.appendByteAsHex(sb, b, false); + sb.append(','); + } + sb.append('}'); + + return sb.toString(); + } +} diff --git a/src/api-impl/android/content/pm/PackageInfo.java b/src/api-impl/android/content/pm/PackageInfo.java new file mode 100644 index 00000000..05b2c937 --- /dev/null +++ b/src/api-impl/android/content/pm/PackageInfo.java @@ -0,0 +1,240 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * Overall information about the contents of a package. This corresponds + * to all of the information collected from AndroidManifest.xml. + */ +public class PackageInfo { + /** + * The name of this package. From the <manifest> tag's "name" + * attribute. + */ + public String packageName = "com.example.app"; // FIXME + + /** + * The version number of this package, as specified by the <manifest> + * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode} + * attribute. + */ + public int versionCode = 1; //FIXME + + /** + * The version name of this package, as specified by the <manifest> + * tag's {@link android.R.styleable#AndroidManifest_versionName versionName} + * attribute. + */ + public String versionName = "v0.FIXME"; + + /** + * The shared user ID name of this package, as specified by the <manifest> + * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId} + * attribute. + */ + public String sharedUserId; + + /** + * The shared user ID label of this package, as specified by the <manifest> + * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel} + * attribute. + */ + public int sharedUserLabel; + + /** + * Information collected from the <application> tag, or null if + * there was none. + */ + public ApplicationInfo applicationInfo; + + /** + * The time at which the app was first installed. Units are as + * per {@link System#currentTimeMillis()}. + */ + public long firstInstallTime; + + /** + * The time at which the app was last updated. Units are as + * per {@link System#currentTimeMillis()}. + */ + public long lastUpdateTime; + + /** + * All kernel group-IDs that have been assigned to this package. + * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set. + */ + public int[] gids; + + /** + * Array of all {@link android.R.styleable#AndroidManifestActivity + * <activity>} tags included under <application>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_ACTIVITIES} was set. + */ + public ActivityInfo[] activities; + + /** + * Array of all {@link android.R.styleable#AndroidManifestReceiver + * <receiver>} tags included under <application>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_RECEIVERS} was set. + */ + public ActivityInfo[] receivers; + + /** + * Array of all {@link android.R.styleable#AndroidManifestService + * <service>} tags included under <application>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_SERVICES} was set. + */ + public ServiceInfo[] services; + + /** + * Array of all {@link android.R.styleable#AndroidManifestProvider + * <provider>} tags included under <application>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_PROVIDERS} was set. + */ + public ProviderInfo[] providers; + + /** + * Array of all {@link android.R.styleable#AndroidManifestInstrumentation + * <instrumentation>} tags included under <manifest>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_INSTRUMENTATION} was set. + */ + public InstrumentationInfo[] instrumentation; + + /** + * Array of all {@link android.R.styleable#AndroidManifestPermission + * <permission>} tags included under <manifest>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_PERMISSIONS} was set. + */ + public PermissionInfo[] permissions; + + /** + * Array of all {@link android.R.styleable#AndroidManifestUsesPermission + * <uses-permission>} tags included under <manifest>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_PERMISSIONS} was set. This list includes + * all permissions requested, even those that were not granted or known + * by the system at install time. + */ + public String[] requestedPermissions; + + /** + * Array of flags of all {@link android.R.styleable#AndroidManifestUsesPermission + * <uses-permission>} tags included under <manifest>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_PERMISSIONS} was set. Each value matches + * the corresponding entry in {@link #requestedPermissions}, and will have + * the flags {@link #REQUESTED_PERMISSION_REQUIRED} and + * {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate. + */ + public int[] requestedPermissionsFlags; + + /** + * Flag for {@link #requestedPermissionsFlags}: the requested permission + * is required for the application to run; the user can not optionally + * disable it. Currently all permissions are required. + */ + public static final int REQUESTED_PERMISSION_REQUIRED = 1<<0; + + /** + * Flag for {@link #requestedPermissionsFlags}: the requested permission + * is currently granted to the application. + */ + public static final int REQUESTED_PERMISSION_GRANTED = 1<<1; + + /** + * Array of all signatures read from the package file. This is only filled + * in if the flag {@link PackageManager#GET_SIGNATURES} was set. + */ + public Signature[] signatures; + + /** + * Application specified preferred configuration + * {@link android.R.styleable#AndroidManifestUsesConfiguration + * <uses-configuration>} tags included under <manifest>, + * or null if there were none. This is only filled in if the flag + * {@link PackageManager#GET_CONFIGURATIONS} was set. + */ + public ConfigurationInfo[] configPreferences; + + /** + * The features that this application has said it requires. + */ + public FeatureInfo[] reqFeatures; + + /** + * Constant corresponding to auto in + * the {@link android.R.attr#installLocation} attribute. + * @hide + */ + public static final int INSTALL_LOCATION_UNSPECIFIED = -1; + /** + * Constant corresponding to auto in + * the {@link android.R.attr#installLocation} attribute. + * @hide + */ + public static final int INSTALL_LOCATION_AUTO = 0; + /** + * Constant corresponding to internalOnly in + * the {@link android.R.attr#installLocation} attribute. + * @hide + */ + public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; + /** + * Constant corresponding to preferExternal in + * the {@link android.R.attr#installLocation} attribute. + * @hide + */ + public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; + /** + * The install location requested by the activity. From the + * {@link android.R.attr#installLocation} attribute, one of + * {@link #INSTALL_LOCATION_AUTO}, + * {@link #INSTALL_LOCATION_INTERNAL_ONLY}, + * {@link #INSTALL_LOCATION_PREFER_EXTERNAL} + * @hide + */ + public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; + + /** @hide */ + public boolean requiredForAllUsers; + + /** @hide */ + public String restrictedAccountType; + + /** @hide */ + public String requiredAccountType; + + public PackageInfo() { + } + + public String toString() { + return "PackageInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + packageName + "}"; + } + + public int describeContents() { + return 0; + } + +} diff --git a/src/api-impl/android/content/pm/PackageItemInfo.java b/src/api-impl/android/content/pm/PackageItemInfo.java new file mode 100644 index 00000000..67962f0c --- /dev/null +++ b/src/api-impl/android/content/pm/PackageItemInfo.java @@ -0,0 +1,266 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.content.res.XmlResourceParser; + +//import android.graphics.drawable.Drawable; +import android.os.Bundle; +//import android.text.TextUtils; +import android.util.Printer; + +import java.text.Collator; +import java.util.Comparator; + +/** + * Base class containing information common to all package items held by + * the package manager. This provides a very common basic set of attributes: + * a label, icon, and meta-data. This class is not intended + * to be used by itself; it is simply here to share common definitions + * between all items returned by the package manager. As such, it does not + * itself implement Parcelable, but does provide convenience methods to assist + * in the implementation of Parcelable in subclasses. + */ +public class PackageItemInfo { + /** + * Public name of this item. From the "android:name" attribute. + */ + public String name; + + /** + * Name of the package that this item is in. + */ + public String packageName; + + /** + * A string resource identifier (in the package's resources) of this + * component's label. From the "label" attribute or, if not set, 0. + */ + public int labelRes; + + /** + * The string provided in the AndroidManifest file, if any. You + * probably don't want to use this. You probably want + * {@link PackageManager#getApplicationLabel} + */ + public CharSequence nonLocalizedLabel; + + /** + * A drawable resource identifier (in the package's resources) of this + * component's icon. From the "icon" attribute or, if not set, 0. + */ + public int icon; + + /** + * A drawable resource identifier (in the package's resources) of this + * component's logo. Logos may be larger/wider than icons and are + * displayed by certain UI elements in place of a name or name/icon + * combination. From the "logo" attribute or, if not set, 0. + */ + public int logo; + + /** + * Additional meta-data associated with this component. This field + * will only be filled in if you set the + * {@link PackageManager#GET_META_DATA} flag when requesting the info. + */ + public Bundle metaData; + + public PackageItemInfo() { + } + + public PackageItemInfo(PackageItemInfo orig) { + name = orig.name; + if (name != null) name = name.trim(); + packageName = orig.packageName; + labelRes = orig.labelRes; + nonLocalizedLabel = orig.nonLocalizedLabel; + if (nonLocalizedLabel != null) nonLocalizedLabel = nonLocalizedLabel.toString().trim(); + icon = orig.icon; + logo = orig.logo; + metaData = orig.metaData; + } + + /** + * Retrieve the current textual label associated with this item. This + * will call back on the given PackageManager to load the label from + * the application. + * + * @param pm A PackageManager from which the label can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a CharSequence containing the item's label. If the + * item does not have a label, its name is returned. + */ + public CharSequence loadLabel(PackageManager pm) { + if (nonLocalizedLabel != null) { + return nonLocalizedLabel; + } + if (labelRes != 0) { + CharSequence label = pm.getText(packageName, labelRes, getApplicationInfo()); + if (label != null) { + return label.toString().trim(); + } + } + if (name != null) { + return name; + } + return packageName; + } + + /** + * Retrieve the current graphical icon associated with this item. This + * will call back on the given PackageManager to load the icon from + * the application. + * + * @param pm A PackageManager from which the icon can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a Drawable containing the item's icon. If the + * item does not have an icon, the item's default icon is returned + * such as the default activity icon. + */ + public Drawable loadIcon(PackageManager pm) { + if (icon != 0) { + Drawable dr = pm.getDrawable(packageName, icon, getApplicationInfo()); + if (dr != null) { + return dr; + } + } + return loadDefaultIcon(pm); + } + + /** + * Retrieve the default graphical icon associated with this item. + * + * @param pm A PackageManager from which the icon can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a Drawable containing the item's default icon + * such as the default activity icon. + * + * @hide + */ + protected Drawable loadDefaultIcon(PackageManager pm) { + return pm.getDefaultActivityIcon(); + } + + /** + * Retrieve the current graphical logo associated with this item. This + * will call back on the given PackageManager to load the logo from + * the application. + * + * @param pm A PackageManager from which the logo can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a Drawable containing the item's logo. If the item + * does not have a logo, this method will return null. + */ + public Drawable loadLogo(PackageManager pm) { + if (logo != 0) { + Drawable d = pm.getDrawable(packageName, logo, getApplicationInfo()); + if (d != null) { + return d; + } + } + return loadDefaultLogo(pm); + } + + /** + * Retrieve the default graphical logo associated with this item. + * + * @param pm A PackageManager from which the logo can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a Drawable containing the item's default logo + * or null if no default logo is available. + * + * @hide + */ + protected Drawable loadDefaultLogo(PackageManager pm) { + return null; + } + + /** + * Load an XML resource attached to the meta-data of this item. This will + * retrieved the name meta-data entry, and if defined call back on the + * given PackageManager to load its XML file from the application. + * + * @param pm A PackageManager from which the XML can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * @param name Name of the meta-date you would like to load. + * + * @return Returns an XmlPullParser you can use to parse the XML file + * assigned as the given meta-data. If the meta-data name is not defined + * or the XML resource could not be found, null is returned. + */ + public XmlResourceParser loadXmlMetaData(PackageManager pm, String name) { + if (metaData != null) { + int resid = metaData.getInt(name); + if (resid != 0) { + return pm.getXml(packageName, resid, getApplicationInfo()); + } + } + return null; + } + + protected void dumpFront(Printer pw, String prefix) { + if (name != null) { + pw.println(prefix + "name=" + name); + } + pw.println(prefix + "packageName=" + packageName); + if (labelRes != 0 || nonLocalizedLabel != null || icon != 0) { + pw.println(prefix + "labelRes=0x" + Integer.toHexString(labelRes) + + " nonLocalizedLabel=" + nonLocalizedLabel + + " icon=0x" + Integer.toHexString(icon)); + } + } + + protected void dumpBack(Printer pw, String prefix) { + // no back here + } + + /** + * Get the ApplicationInfo for the application to which this item belongs, + * if available, otherwise returns null. + * + * @return Returns the ApplicationInfo of this item, or null if not known. + * + * @hide + */ + protected ApplicationInfo getApplicationInfo() { + return null; + } + + public static class DisplayNameComparator + implements Comparator { + public DisplayNameComparator(PackageManager pm) { + mPM = pm; + } + + public final int compare(PackageItemInfo aa, PackageItemInfo ab) { + CharSequence sa = aa.loadLabel(mPM); + if (sa == null) sa = aa.name; + CharSequence sb = ab.loadLabel(mPM); + if (sb == null) sb = ab.name; + return sCollator.compare(sa.toString(), sb.toString()); + } + + private final Collator sCollator = Collator.getInstance(); + private PackageManager mPM; + } +} diff --git a/src/api-impl/android/content/pm/PackageManager.java b/src/api-impl/android/content/pm/PackageManager.java new file mode 100644 index 00000000..7a4f34b1 --- /dev/null +++ b/src/api-impl/android/content/pm/PackageManager.java @@ -0,0 +1,3407 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; +import android.content.ComponentName; +import android.content.Context; +//import android.content.Intent; +//import android.content.IntentFilter; +//import android.content.IntentSender; +//import android.content.res.Resources; +import android.content.res.XmlResourceParser; +//import android.graphics.drawable.Drawable; +//import android.net.Uri; +import android.os.Environment; +import android.os.UserHandle; +import android.util.AndroidException; +import android.util.DisplayMetrics; + +import java.io.File; +import java.util.List; +import java.util.ArrayList; + +class Uri {} +class Resources {} +class IPackageInstallObserver {} +class VerificationParams {} +class ContainerEncryptionParams {} +class IPackageDeleteObserver {} +class IPackageDataObserver {} +class IntentSender {} +class IPackageStatsObserver {} +class IntentFilter {} +class Intent { public Intent(String action) {} } +class VerifierDeviceIdentity {} +class IPackageMoveObserver {} +class ResolveInfo {} +class Drawable {} + +/** + * Class for retrieving various kinds of information related to the application + * packages that are currently installed on the device. + * + * You can find this class through {@link Context#getPackageManager}. + */ +public class PackageManager { + + /** + * This exception is thrown when a given package, application, or component + * name cannot be found. + */ + public static class NameNotFoundException extends AndroidException { + public NameNotFoundException() { + } + + public NameNotFoundException(String name) { + super(name); + } + } + + /** + * {@link PackageInfo} flag: return information about + * activities in the package in {@link PackageInfo#activities}. + */ + public static final int GET_ACTIVITIES = 0x00000001; + + /** + * {@link PackageInfo} flag: return information about + * intent receivers in the package in + * {@link PackageInfo#receivers}. + */ + public static final int GET_RECEIVERS = 0x00000002; + + /** + * {@link PackageInfo} flag: return information about + * services in the package in {@link PackageInfo#services}. + */ + public static final int GET_SERVICES = 0x00000004; + + /** + * {@link PackageInfo} flag: return information about + * content providers in the package in + * {@link PackageInfo#providers}. + */ + public static final int GET_PROVIDERS = 0x00000008; + + /** + * {@link PackageInfo} flag: return information about + * instrumentation in the package in + * {@link PackageInfo#instrumentation}. + */ + public static final int GET_INSTRUMENTATION = 0x00000010; + + /** + * {@link PackageInfo} flag: return information about the + * intent filters supported by the activity. + */ + public static final int GET_INTENT_FILTERS = 0x00000020; + + /** + * {@link PackageInfo} flag: return information about the + * signatures included in the package. + */ + public static final int GET_SIGNATURES = 0x00000040; + + /** + * {@link ResolveInfo} flag: return the IntentFilter that + * was matched for a particular ResolveInfo in + * {@link ResolveInfo#filter}. + */ + public static final int GET_RESOLVED_FILTER = 0x00000040; + + /** + * {@link ComponentInfo} flag: return the {@link ComponentInfo#metaData} + * data {@link android.os.Bundle}s that are associated with a component. + * This applies for any API returning a ComponentInfo subclass. + */ + public static final int GET_META_DATA = 0x00000080; + + /** + * {@link PackageInfo} flag: return the + * {@link PackageInfo#gids group ids} that are associated with an + * application. + * This applies for any API returning a PackageInfo class, either + * directly or nested inside of another. + */ + public static final int GET_GIDS = 0x00000100; + + /** + * {@link PackageInfo} flag: include disabled components in the returned info. + */ + public static final int GET_DISABLED_COMPONENTS = 0x00000200; + + /** + * {@link ApplicationInfo} flag: return the + * {@link ApplicationInfo#sharedLibraryFiles paths to the shared libraries} + * that are associated with an application. + * This applies for any API returning an ApplicationInfo class, either + * directly or nested inside of another. + */ + public static final int GET_SHARED_LIBRARY_FILES = 0x00000400; + + /** + * {@link ProviderInfo} flag: return the + * {@link ProviderInfo#uriPermissionPatterns URI permission patterns} + * that are associated with a content provider. + * This applies for any API returning a ProviderInfo class, either + * directly or nested inside of another. + */ + public static final int GET_URI_PERMISSION_PATTERNS = 0x00000800; + /** + * {@link PackageInfo} flag: return information about + * permissions in the package in + * {@link PackageInfo#permissions}. + */ + public static final int GET_PERMISSIONS = 0x00001000; + + /** + * Flag parameter to retrieve some information about all applications (even + * uninstalled ones) which have data directories. This state could have + * resulted if applications have been deleted with flag + * {@code DONT_DELETE_DATA} with a possibility of being replaced or + * reinstalled in future. + *

+ * Note: this flag may cause less information about currently installed + * applications to be returned. + */ + public static final int GET_UNINSTALLED_PACKAGES = 0x00002000; + + /** + * {@link PackageInfo} flag: return information about + * hardware preferences in + * {@link PackageInfo#configPreferences PackageInfo.configPreferences} and + * requested features in {@link PackageInfo#reqFeatures + * PackageInfo.reqFeatures}. + */ + public static final int GET_CONFIGURATIONS = 0x00004000; + + /** + * {@link PackageInfo} flag: include disabled components which are in + * that state only because of {@link #COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED} + * in the returned info. Note that if you set this flag, applications + * that are in this disabled state will be reported as enabled. + */ + public static final int GET_DISABLED_UNTIL_USED_COMPONENTS = 0x00008000; + + /** + * Resolution and querying flag: if set, only filters that support the + * {@link android.content.Intent#CATEGORY_DEFAULT} will be considered for + * matching. This is a synonym for including the CATEGORY_DEFAULT in your + * supplied Intent. + */ + public static final int MATCH_DEFAULT_ONLY = 0x00010000; + + /** + * Permission check result: this is returned by {@link #checkPermission} + * if the permission has been granted to the given package. + */ + public static final int PERMISSION_GRANTED = 0; + + /** + * Permission check result: this is returned by {@link #checkPermission} + * if the permission has not been granted to the given package. + */ + public static final int PERMISSION_DENIED = -1; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if all signatures on the two packages match. + */ + public static final int SIGNATURE_MATCH = 0; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if neither of the two packages is signed. + */ + public static final int SIGNATURE_NEITHER_SIGNED = 1; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if the first package is not signed but the second is. + */ + public static final int SIGNATURE_FIRST_NOT_SIGNED = -1; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if the second package is not signed but the first is. + */ + public static final int SIGNATURE_SECOND_NOT_SIGNED = -2; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if not all signatures on both packages match. + */ + public static final int SIGNATURE_NO_MATCH = -3; + + /** + * Signature check result: this is returned by {@link #checkSignatures} + * if either of the packages are not valid. + */ + public static final int SIGNATURE_UNKNOWN_PACKAGE = -4; + + /** + * Flag for {@link #setApplicationEnabledSetting(String, int, int)} + * and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This + * component or application is in its default enabled state (as specified + * in its manifest). + */ + public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; + + /** + * Flag for {@link #setApplicationEnabledSetting(String, int, int)} + * and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This + * component or application has been explictily enabled, regardless of + * what it has specified in its manifest. + */ + public static final int COMPONENT_ENABLED_STATE_ENABLED = 1; + + /** + * Flag for {@link #setApplicationEnabledSetting(String, int, int)} + * and {@link #setComponentEnabledSetting(ComponentName, int, int)}: This + * component or application has been explicitly disabled, regardless of + * what it has specified in its manifest. + */ + public static final int COMPONENT_ENABLED_STATE_DISABLED = 2; + + /** + * Flag for {@link #setApplicationEnabledSetting(String, int, int)} only: The + * user has explicitly disabled the application, regardless of what it has + * specified in its manifest. Because this is due to the user's request, + * they may re-enable it if desired through the appropriate system UI. This + * option currently cannot be used with + * {@link #setComponentEnabledSetting(ComponentName, int, int)}. + */ + public static final int COMPONENT_ENABLED_STATE_DISABLED_USER = 3; + + /** + * Flag for {@link #setApplicationEnabledSetting(String, int, int)} only: This + * application should be considered, until the point where the user actually + * wants to use it. This means that it will not normally show up to the user + * (such as in the launcher), but various parts of the user interface can + * use {@link #GET_DISABLED_UNTIL_USED_COMPONENTS} to still see it and allow + * the user to select it (as for example an IME, device admin, etc). Such code, + * once the user has selected the app, should at that point also make it enabled. + * This option currently can not be used with + * {@link #setComponentEnabledSetting(ComponentName, int, int)}. + */ + public static final int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED = 4; + + /** + * Flag parameter for {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} to + * indicate that this package should be installed as forward locked, i.e. only the app itself + * should have access to its code and non-resource assets. + * @hide + */ + public static final int INSTALL_FORWARD_LOCK = 0x00000001; + + /** + * Flag parameter for {@link #installPackage} to indicate that you want to replace an already + * installed package, if one exists. + * @hide + */ + public static final int INSTALL_REPLACE_EXISTING = 0x00000002; + + /** + * Flag parameter for {@link #installPackage} to indicate that you want to + * allow test packages (those that have set android:testOnly in their + * manifest) to be installed. + * @hide + */ + public static final int INSTALL_ALLOW_TEST = 0x00000004; + + /** + * Flag parameter for {@link #installPackage} to indicate that this + * package has to be installed on the sdcard. + * @hide + */ + public static final int INSTALL_EXTERNAL = 0x00000008; + + /** + * Flag parameter for {@link #installPackage} to indicate that this package + * has to be installed on the sdcard. + * @hide + */ + public static final int INSTALL_INTERNAL = 0x00000010; + + /** + * Flag parameter for {@link #installPackage} to indicate that this install + * was initiated via ADB. + * + * @hide + */ + public static final int INSTALL_FROM_ADB = 0x00000020; + + /** + * Flag parameter for {@link #installPackage} to indicate that this install + * should immediately be visible to all users. + * + * @hide + */ + public static final int INSTALL_ALL_USERS = 0x00000040; + + /** + * Flag parameter for {@link #installPackage} to indicate that it is okay + * to install an update to an app where the newly installed app has a lower + * version code than the currently installed app. + * + * @hide + */ + public static final int INSTALL_ALLOW_DOWNGRADE = 0x00000080; + + /** + * Flag parameter for + * {@link #setComponentEnabledSetting(android.content.ComponentName, int, int)} to indicate + * that you don't want to kill the app containing the component. Be careful when you set this + * since changing component states can make the containing application's behavior unpredictable. + */ + public static final int DONT_KILL_APP = 0x00000001; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} on success. + * @hide + */ + public static final int INSTALL_SUCCEEDED = 1; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package is + * already installed. + * @hide + */ + public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package archive + * file is invalid. + * @hide + */ + public static final int INSTALL_FAILED_INVALID_APK = -2; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the URI passed in + * is invalid. + * @hide + */ + public static final int INSTALL_FAILED_INVALID_URI = -3; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package manager + * service found that the device didn't have enough storage space to install the app. + * @hide + */ + public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if a + * package is already installed with the same name. + * @hide + */ + public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the requested shared user does not exist. + * @hide + */ + public static final int INSTALL_FAILED_NO_SHARED_USER = -6; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * a previously installed package of the same name has a different signature + * than the new package (and the old package's data was not removed). + * @hide + */ + public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package is requested a shared user which is already installed on the + * device and does not have matching signature. + * @hide + */ + public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package uses a shared library that is not available. + * @hide + */ + public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package uses a shared library that is not available. + * @hide + */ + public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package failed while optimizing and validating its dex files, + * either because there was not enough storage or the validation failed. + * @hide + */ + public static final int INSTALL_FAILED_DEXOPT = -11; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package failed because the current SDK version is older than + * that required by the package. + * @hide + */ + public static final int INSTALL_FAILED_OLDER_SDK = -12; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package failed because it contains a content provider with the + * same authority as a provider already installed in the system. + * @hide + */ + public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package failed because the current SDK version is newer than + * that required by the package. + * @hide + */ + public static final int INSTALL_FAILED_NEWER_SDK = -14; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package failed because it has specified that it is a test-only + * package and the caller has not supplied the {@link #INSTALL_ALLOW_TEST} + * flag. + * @hide + */ + public static final int INSTALL_FAILED_TEST_ONLY = -15; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the package being installed contains native code, but none that is + * compatible with the the device's CPU_ABI. + * @hide + */ + public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package uses a feature that is not available. + * @hide + */ + public static final int INSTALL_FAILED_MISSING_FEATURE = -17; + + // ------ Errors related to sdcard + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * a secure container mount point couldn't be accessed on external media. + * @hide + */ + public static final int INSTALL_FAILED_CONTAINER_ERROR = -18; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package couldn't be installed in the specified install + * location. + * @hide + */ + public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package couldn't be installed in the specified install + * location because the media is not available. + * @hide + */ + public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package couldn't be installed because the verification timed out. + * @hide + */ + public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package couldn't be installed because the verification did not succeed. + * @hide + */ + public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the package changed from what the calling program expected. + * @hide + */ + public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package is assigned a different UID than it previously held. + * @hide + */ + public static final int INSTALL_FAILED_UID_CHANGED = -24; + + /** + * Installation return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if + * the new package has an older version code than the currently installed package. + * @hide + */ + public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser was given a path that is not a file, or does not end with the expected + * '.apk' extension. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_NOT_APK = -100; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser was unable to retrieve the AndroidManifest.xml file. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser encountered an unexpected exception. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser did not find any certificates in the .apk. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser found inconsistent certificates on the files in the .apk. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser encountered a CertificateEncodingException in one of the + * files in the .apk. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser encountered a bad or missing package name in the manifest. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser encountered a bad shared user id name in the manifest. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser encountered some structural problem in the manifest. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108; + + /** + * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the parser did not find any actionable tags (instrumentation or application) + * in the manifest. + * @hide + */ + public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109; + + /** + * Installation failed return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the system failed to install the package because of system issues. + * @hide + */ + public static final int INSTALL_FAILED_INTERNAL_ERROR = -110; + + /** + * Installation failed return code: this is passed to the {@link IPackageInstallObserver} by + * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} + * if the system failed to install the package because the user is restricted from installing + * apps. + * @hide + */ + public static final int INSTALL_FAILED_USER_RESTRICTED = -111; + + /** + * Flag parameter for {@link #deletePackage} to indicate that you don't want to delete the + * package's data directory. + * + * @hide + */ + public static final int DELETE_KEEP_DATA = 0x00000001; + + /** + * Flag parameter for {@link #deletePackage} to indicate that you want the + * package deleted for all users. + * + * @hide + */ + public static final int DELETE_ALL_USERS = 0x00000002; + + /** + * Flag parameter for {@link #deletePackage} to indicate that, if you are calling + * uninstall on a system that has been updated, then don't do the normal process + * of uninstalling the update and rolling back to the older system version (which + * needs to happen for all users); instead, just mark the app as uninstalled for + * the current user. + * + * @hide + */ + public static final int DELETE_SYSTEM_APP = 0x00000004; + + /** + * Return code for when package deletion succeeds. This is passed to the + * {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system + * succeeded in deleting the package. + * + * @hide + */ + public static final int DELETE_SUCCEEDED = 1; + + /** + * Deletion failed return code: this is passed to the + * {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system + * failed to delete the package for an unspecified reason. + * + * @hide + */ + public static final int DELETE_FAILED_INTERNAL_ERROR = -1; + + /** + * Deletion failed return code: this is passed to the + * {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system + * failed to delete the package because it is the active DevicePolicy + * manager. + * + * @hide + */ + public static final int DELETE_FAILED_DEVICE_POLICY_MANAGER = -2; + + /** + * Deletion failed return code: this is passed to the + * {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system + * failed to delete the package since the user is restricted. + * + * @hide + */ + public static final int DELETE_FAILED_USER_RESTRICTED = -3; + + /** + * Return code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} when the + * package has been successfully moved by the system. + * + * @hide + */ + public static final int MOVE_SUCCEEDED = 1; + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * when the package hasn't been successfully moved by the system + * because of insufficient memory on specified media. + * @hide + */ + public static final int MOVE_FAILED_INSUFFICIENT_STORAGE = -1; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * if the specified package doesn't exist. + * @hide + */ + public static final int MOVE_FAILED_DOESNT_EXIST = -2; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * if the specified package cannot be moved since its a system package. + * @hide + */ + public static final int MOVE_FAILED_SYSTEM_PACKAGE = -3; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * if the specified package cannot be moved since its forward locked. + * @hide + */ + public static final int MOVE_FAILED_FORWARD_LOCKED = -4; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * if the specified package cannot be moved to the specified location. + * @hide + */ + public static final int MOVE_FAILED_INVALID_LOCATION = -5; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} + * if the specified package cannot be moved to the specified location. + * @hide + */ + public static final int MOVE_FAILED_INTERNAL_ERROR = -6; + + /** + * Error code that is passed to the {@link IPackageMoveObserver} by + * {@link #movePackage(android.net.Uri, IPackageMoveObserver)} if the + * specified package already has an operation pending in the + * {@link PackageHandler} queue. + * + * @hide + */ + public static final int MOVE_FAILED_OPERATION_PENDING = -7; + + /** + * Flag parameter for {@link #movePackage} to indicate that + * the package should be moved to internal storage if its + * been installed on external media. + * @hide + */ + public static final int MOVE_INTERNAL = 0x00000001; + + /** + * Flag parameter for {@link #movePackage} to indicate that + * the package should be moved to external media. + * @hide + */ + public static final int MOVE_EXTERNAL_MEDIA = 0x00000002; + + /** + * Usable by the required verifier as the {@code verificationCode} argument + * for {@link PackageManager#verifyPendingInstall} to indicate that it will + * allow the installation to proceed without any of the optional verifiers + * needing to vote. + * + * @hide + */ + public static final int VERIFICATION_ALLOW_WITHOUT_SUFFICIENT = 2; + + /** + * Used as the {@code verificationCode} argument for + * {@link PackageManager#verifyPendingInstall} to indicate that the calling + * package verifier allows the installation to proceed. + */ + public static final int VERIFICATION_ALLOW = 1; + + /** + * Used as the {@code verificationCode} argument for + * {@link PackageManager#verifyPendingInstall} to indicate the calling + * package verifier does not vote to allow the installation to proceed. + */ + public static final int VERIFICATION_REJECT = -1; + + /** + * Can be used as the {@code millisecondsToDelay} argument for + * {@link PackageManager#extendVerificationTimeout}. This is the + * maximum time {@code PackageManager} waits for the verification + * agent to return (in milliseconds). + */ + public static final long MAXIMUM_VERIFICATION_TIMEOUT = 60*60*1000; + + /** + * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device's + * audio pipeline is low-latency, more suitable for audio applications sensitive to delays or + * lag in sound input or output. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device is capable of communicating with + * other devices via Bluetooth. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device is capable of communicating with + * other devices via Bluetooth Low Energy radio. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a camera facing away + * from the screen. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CAMERA = "android.hardware.camera"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's camera supports auto-focus. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has at least one camera pointing in + * some direction. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CAMERA_ANY = "android.hardware.camera.any"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's camera supports flash. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a front facing camera. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device is capable of communicating with + * consumer IR devices. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports one or more methods of + * reporting current location. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_LOCATION = "android.hardware.location"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a Global Positioning System + * receiver and can report precise location. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_LOCATION_GPS = "android.hardware.location.gps"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device can report location with coarse + * accuracy using a network-based geolocation system. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device can record audio via a + * microphone. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_MICROPHONE = "android.hardware.microphone"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device can communicate using Near-Field + * Communications (NFC). + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_NFC = "android.hardware.nfc"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports host- + * based NFC card emulation. + * + * TODO remove when depending apps have moved to new constant. + * @hide + * @deprecated + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_NFC_HCE = "android.hardware.nfc.hce"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports host- + * based NFC card emulation. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes an accelerometer. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_ACCELEROMETER = "android.hardware.sensor.accelerometer"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a barometer (air + * pressure sensor.) + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_BAROMETER = "android.hardware.sensor.barometer"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a magnetometer (compass). + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_COMPASS = "android.hardware.sensor.compass"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a gyroscope. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_GYROSCOPE = "android.hardware.sensor.gyroscope"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a light sensor. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_LIGHT = "android.hardware.sensor.light"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a proximity sensor. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_PROXIMITY = "android.hardware.sensor.proximity"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a hardware step counter. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_STEP_COUNTER = "android.hardware.sensor.stepcounter"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes a hardware step detector. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SENSOR_STEP_DETECTOR = "android.hardware.sensor.stepdetector"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a telephony radio with data + * communication support. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TELEPHONY = "android.hardware.telephony"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a CDMA telephony stack. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device has a GSM telephony stack. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports connecting to USB devices + * as the USB host. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_USB_HOST = "android.hardware.usb.host"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports connecting to USB accessories. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_USB_ACCESSORY = "android.hardware.usb.accessory"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The SIP API is enabled on the device. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SIP = "android.software.sip"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports SIP-based VOIP. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SIP_VOIP = "android.software.sip.voip"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's display has a touch screen. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen"; + + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's touch screen supports + * multitouch sufficient for basic two-finger gesture detection. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's touch screen is capable of + * tracking two or more fingers fully independently. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT = "android.hardware.touchscreen.multitouch.distinct"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's touch screen is capable of + * tracking a full hand of fingers fully independently -- that is, 5 or + * more simultaneous independent pointers. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND = "android.hardware.touchscreen.multitouch.jazzhand"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device does not have a touch screen, but + * does support touch emulation for basic events. For instance, the + * device might use a mouse or remote control to drive a cursor, and + * emulate basic touch pointer events like down, up, drag, etc. All + * devices that support android.hardware.touchscreen or a sub-feature are + * presumed to also support faketouch. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_FAKETOUCH = "android.hardware.faketouch"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device does not have a touch screen, but + * does support touch emulation for basic events that supports distinct + * tracking of two or more fingers. This is an extension of + * {@link #FEATURE_FAKETOUCH} for input devices with this capability. Note + * that unlike a distinct multitouch screen as defined by + * {@link #FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT}, these kinds of input + * devices will not actually provide full two-finger gestures since the + * input is being transformed to cursor movement on the screen. That is, + * single finger gestures will move a cursor; two-finger swipes will + * result in single-finger touch events; other two-finger gestures will + * result in the corresponding two-finger touch event. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device does not have a touch screen, but + * does support touch emulation for basic events that supports tracking + * a hand of fingers (5 or more fingers) fully independently. + * This is an extension of + * {@link #FEATURE_FAKETOUCH} for input devices with this capability. Note + * that unlike a multitouch screen as defined by + * {@link #FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND}, not all two finger + * gestures can be detected due to the limitations described for + * {@link #FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT}. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND = "android.hardware.faketouch.multitouch.jazzhand"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports portrait orientation + * screens. For backwards compatibility, you can assume that if neither + * this nor {@link #FEATURE_SCREEN_LANDSCAPE} is set then the device supports + * both portrait and landscape. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports landscape orientation + * screens. For backwards compatibility, you can assume that if neither + * this nor {@link #FEATURE_SCREEN_PORTRAIT} is set then the device supports + * both portrait and landscape. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports live wallpapers. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_LIVE_WALLPAPER = "android.software.live_wallpaper"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports app widgets. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_APP_WIDGETS = "android.software.app_widgets"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports a home screen that is replaceable + * by third party applications. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_HOME_SCREEN = "android.software.home_screen"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports adding new input methods implemented + * with the {@link android.inputmethodservice.InputMethodService} API. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_INPUT_METHODS = "android.software.input_methods"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports device policy enforcement via device admins. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_DEVICE_ADMIN = "android.software.device_admin"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports WiFi (802.11) networking. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_WIFI = "android.hardware.wifi"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports Wi-Fi Direct networking. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: This is a device dedicated to showing UI + * on a television. Television here is defined to be a typical living + * room television experience: displayed on a big screen, where the user + * is sitting far away from it, and the dominant form of input will be + * something like a DPAD, not through touch or mouse. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TELEVISION = "android.hardware.type.television"; + + /** + * Action to external storage service to clean out removed apps. + * @hide + */ + public static final String ACTION_CLEAN_EXTERNAL_STORAGE + = "android.content.pm.CLEAN_EXTERNAL_STORAGE"; + + /** + * Extra field name for the URI to a verification file. Passed to a package + * verifier. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_URI = "android.content.pm.extra.VERIFICATION_URI"; + + /** + * Extra field name for the ID of a package pending verification. Passed to + * a package verifier and is used to call back to + * {@link PackageManager#verifyPendingInstall(int, int)} + */ + public static final String EXTRA_VERIFICATION_ID = "android.content.pm.extra.VERIFICATION_ID"; + + /** + * Extra field name for the package identifier which is trying to install + * the package. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_INSTALLER_PACKAGE + = "android.content.pm.extra.VERIFICATION_INSTALLER_PACKAGE"; + + /** + * Extra field name for the requested install flags for a package pending + * verification. Passed to a package verifier. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_INSTALL_FLAGS + = "android.content.pm.extra.VERIFICATION_INSTALL_FLAGS"; + + /** + * Extra field name for the uid of who is requesting to install + * the package. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_INSTALLER_UID + = "android.content.pm.extra.VERIFICATION_INSTALLER_UID"; + + /** + * Extra field name for the package name of a package pending verification. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_PACKAGE_NAME + = "android.content.pm.extra.VERIFICATION_PACKAGE_NAME"; + /** + * Extra field name for the result of a verification, either + * {@link #VERIFICATION_ALLOW}, or {@link #VERIFICATION_REJECT}. + * Passed to package verifiers after a package is verified. + */ + public static final String EXTRA_VERIFICATION_RESULT + = "android.content.pm.extra.VERIFICATION_RESULT"; + + /** + * Extra field name for the version code of a package pending verification. + * + * @hide + */ + public static final String EXTRA_VERIFICATION_VERSION_CODE + = "android.content.pm.extra.VERIFICATION_VERSION_CODE"; + + /** + * The action used to request that the user approve a permission request + * from the application. + * + * @hide + */ + public static final String ACTION_REQUEST_PERMISSION + = "android.content.pm.action.REQUEST_PERMISSION"; + + /** + * Extra field name for the list of permissions, which the user must approve. + * + * @hide + */ + public static final String EXTRA_REQUEST_PERMISSION_PERMISSION_LIST + = "android.content.pm.extra.PERMISSION_LIST"; + + /** + * Retrieve overall information about an application package that is + * installed on the system. + *

+ * Throws {@link NameNotFoundException} if a package with the given name can + * not be found on the system. + * + * @param packageName The full name (i.e. com.google.apps.contacts) of the + * desired package. + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, {@link #GET_UNINSTALLED_PACKAGES} to + * modify the data returned. + * @return Returns a PackageInfo object containing information about the + * package. If flag GET_UNINSTALLED_PACKAGES is set and if the + * package is not found in the list of installed applications, the + * package information is retrieved from the list of uninstalled + * applications (which includes installed applications as well as + * applications with data directory i.e. applications which had been + * deleted with {@code DONT_DELETE_DATA} flag set). + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + * @see #GET_UNINSTALLED_PACKAGES + */ + public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException { + return new PackageInfo(); + } + + /** + * Map from the current package names in use on the device to whatever + * the current canonical name of that package is. + * @param names Array of current names to be mapped. + * @return Returns an array of the same size as the original, containing + * the canonical name for each package. + */ + public String[] currentToCanonicalPackageNames(String[] names) { + return null; + } + + /** + * Map from a packages canonical name to the current name in use on the device. + * @param names Array of new names to be mapped. + * @return Returns an array of the same size as the original, containing + * the current name for each package. + */ + public String[] canonicalToCurrentPackageNames(String[] names) { + return null; + } + + /** + * Return a "good" intent to launch a front-door activity in a package, + * for use for example to implement an "open" button when browsing through + * packages. The current implementation will look first for a main + * activity in the category {@link Intent#CATEGORY_INFO}, next for a + * main activity in the category {@link Intent#CATEGORY_LAUNCHER}, or return + * null if neither are found. + * + *

Throws {@link NameNotFoundException} if a package with the given + * name cannot be found on the system. + * + * @param packageName The name of the package to inspect. + * + * @return Returns either a fully-qualified Intent that can be used to + * launch the main activity in the package, or null if the package does + * not contain such an activity. + */ + public Intent getLaunchIntentForPackage(String packageName) { + return null; + } + + /** + * Return an array of all of the secondary group-ids that have been + * assigned to a package. + * + *

Throws {@link NameNotFoundException} if a package with the given + * name cannot be found on the system. + * + * @param packageName The full name (i.e. com.google.apps.contacts) of the + * desired package. + * + * @return Returns an int array of the assigned gids, or null if there + * are none. + */ + public int[] getPackageGids(String packageName) + throws NameNotFoundException { + return null; + } + + /** + * @hide Return the uid associated with the given package name for the + * given user. + * + *

Throws {@link NameNotFoundException} if a package with the given + * name can not be found on the system. + * + * @param packageName The full name (i.e. com.google.apps.contacts) of the + * desired package. + * @param userHandle The user handle identifier to look up the package under. + * + * @return Returns an integer uid who owns the given package name. + */ + public int getPackageUid(String packageName, int userHandle) + throws NameNotFoundException { + return -1; + } + + /** + * Retrieve all of the information we know about a particular permission. + * + *

Throws {@link NameNotFoundException} if a permission with the given + * name cannot be found on the system. + * + * @param name The fully qualified name (i.e. com.google.permission.LOGIN) + * of the permission you are interested in. + * @param flags Additional option flags. Use {@link #GET_META_DATA} to + * retrieve any meta-data associated with the permission. + * + * @return Returns a {@link PermissionInfo} containing information about the + * permission. + */ + public PermissionInfo getPermissionInfo(String name, int flags) + throws NameNotFoundException { + return null; + } + + /** + * Query for all of the permissions associated with a particular group. + * + *

Throws {@link NameNotFoundException} if the given group does not + * exist. + * + * @param group The fully qualified name (i.e. com.google.permission.LOGIN) + * of the permission group you are interested in. Use null to + * find all of the permissions not associated with a group. + * @param flags Additional option flags. Use {@link #GET_META_DATA} to + * retrieve any meta-data associated with the permissions. + * + * @return Returns a list of {@link PermissionInfo} containing information + * about all of the permissions in the given group. + */ + public List queryPermissionsByGroup(String group, + int flags) throws NameNotFoundException { + return null; + } + + /** + * Retrieve all of the information we know about a particular group of + * permissions. + * + *

Throws {@link NameNotFoundException} if a permission group with the given + * name cannot be found on the system. + * + * @param name The fully qualified name (i.e. com.google.permission_group.APPS) + * of the permission you are interested in. + * @param flags Additional option flags. Use {@link #GET_META_DATA} to + * retrieve any meta-data associated with the permission group. + * + * @return Returns a {@link PermissionGroupInfo} containing information + * about the permission. + */ + public PermissionGroupInfo getPermissionGroupInfo(String name, + int flags) throws NameNotFoundException { + return null; + } + + /** + * Retrieve all of the known permission groups in the system. + * + * @param flags Additional option flags. Use {@link #GET_META_DATA} to + * retrieve any meta-data associated with the permission group. + * + * @return Returns a list of {@link PermissionGroupInfo} containing + * information about all of the known permission groups. + */ + public List getAllPermissionGroups(int flags) { + return null; + } + + /** + * Retrieve all of the information we know about a particular + * package/application. + * + *

Throws {@link NameNotFoundException} if an application with the given + * package name cannot be found on the system. + * + * @param packageName The full name (i.e. com.google.apps.contacts) of an + * application. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned. + * + * @return {@link ApplicationInfo} Returns ApplicationInfo object containing + * information about the package. + * If flag GET_UNINSTALLED_PACKAGES is set and if the package is not + * found in the list of installed applications, + * the application information is retrieved from the + * list of uninstalled applications(which includes + * installed applications as well as applications + * with data directory ie applications which had been + * deleted with {@code DONT_DELETE_DATA} flag set). + * + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + * @see #GET_UNINSTALLED_PACKAGES + */ + public ApplicationInfo getApplicationInfo(String packageName, + int flags) throws NameNotFoundException { + return new ApplicationInfo(); + } + + /** + * Retrieve all of the information we know about a particular activity + * class. + * + *

Throws {@link NameNotFoundException} if an activity with the given + * class name cannot be found on the system. + * + * @param component The full component name (i.e. + * com.google.apps.contacts/com.google.apps.contacts.ContactsList) of an Activity + * class. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * to modify the data (in ApplicationInfo) returned. + * + * @return {@link ActivityInfo} containing information about the activity. + * + * @see #GET_INTENT_FILTERS + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + */ + public ActivityInfo getActivityInfo(ComponentName component, + int flags) throws NameNotFoundException { + return new ActivityInfo(); + } + + /** + * Retrieve all of the information we know about a particular receiver + * class. + * + *

Throws {@link NameNotFoundException} if a receiver with the given + * class name cannot be found on the system. + * + * @param component The full component name (i.e. + * com.google.apps.calendar/com.google.apps.calendar.CalendarAlarm) of a Receiver + * class. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * to modify the data returned. + * + * @return {@link ActivityInfo} containing information about the receiver. + * + * @see #GET_INTENT_FILTERS + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + */ + public ActivityInfo getReceiverInfo(ComponentName component, + int flags) throws NameNotFoundException { + return null; + } + + /** + * Retrieve all of the information we know about a particular service + * class. + * + *

Throws {@link NameNotFoundException} if a service with the given + * class name cannot be found on the system. + * + * @param component The full component name (i.e. + * com.google.apps.media/com.google.apps.media.BackgroundPlayback) of a Service + * class. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * to modify the data returned. + * + * @return ServiceInfo containing information about the service. + * + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + */ + public ServiceInfo getServiceInfo(ComponentName component, + int flags) throws NameNotFoundException { + return null; + } + + /** + * Retrieve all of the information we know about a particular content + * provider class. + * + *

Throws {@link NameNotFoundException} if a provider with the given + * class name cannot be found on the system. + * + * @param component The full component name (i.e. + * com.google.providers.media/com.google.providers.media.MediaProvider) of a + * ContentProvider class. + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * to modify the data returned. + * + * @return ProviderInfo containing information about the service. + * + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + */ + public ProviderInfo getProviderInfo(ComponentName component, + int flags) throws NameNotFoundException { + return null; + } + + /** + * Return a List of all packages that are installed + * on the device. + * + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, + * {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, + * {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, + * {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, + * {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, + * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned. + * + * @return A List of PackageInfo objects, one for each package that is + * installed on the device. In the unlikely case of there being no + * installed packages, an empty list is returned. + * If flag GET_UNINSTALLED_PACKAGES is set, a list of all + * applications including those deleted with {@code DONT_DELETE_DATA} + * (partially installed apps with data directory) will be returned. + * + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + * @see #GET_UNINSTALLED_PACKAGES + */ + public List getInstalledPackages(int flags) { + List ret = new ArrayList(); + ret.add(new PackageInfo()); + return ret; + } + + /** + * Return a List of all installed packages that are currently + * holding any of the given permissions. + * + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, + * {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, + * {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, + * {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, + * {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, + * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned. + * + * @return Returns a List of PackageInfo objects, one for each installed + * application that is holding any of the permissions that were provided. + * + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + * @see #GET_UNINSTALLED_PACKAGES + */ + public List getPackagesHoldingPermissions( + String[] permissions, int flags) { + return null; + } + + /** + * Return a List of all packages that are installed on the device, for a specific user. + * Requesting a list of installed packages for another user + * will require the permission INTERACT_ACROSS_USERS_FULL. + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, + * {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, + * {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, + * {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, + * {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, + * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned. + * @param userId The user for whom the installed packages are to be listed + * + * @return A List of PackageInfo objects, one for each package that is + * installed on the device. In the unlikely case of there being no + * installed packages, an empty list is returned. + * If flag GET_UNINSTALLED_PACKAGES is set, a list of all + * applications including those deleted with {@code DONT_DELETE_DATA} + * (partially installed apps with data directory) will be returned. + * + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + * @see #GET_UNINSTALLED_PACKAGES + * + * @hide + */ + public List getInstalledPackages(int flags, int userId) { + return null; + } + + /** + * Check whether a particular package has been granted a particular + * permission. + * + * @param permName The name of the permission you are checking for, + * @param pkgName The name of the package you are checking against. + * + * @return If the package has the permission, PERMISSION_GRANTED is + * returned. If it does not have the permission, PERMISSION_DENIED + * is returned. + * + * @see #PERMISSION_GRANTED + * @see #PERMISSION_DENIED + */ + public int checkPermission(String permName, String pkgName) { + return -1; + } + + /** + * Add a new dynamic permission to the system. For this to work, your + * package must have defined a permission tree through the + * {@link android.R.styleable#AndroidManifestPermissionTree + * <permission-tree>} tag in its manifest. A package can only add + * permissions to trees that were defined by either its own package or + * another with the same user id; a permission is in a tree if it + * matches the name of the permission tree + ".": for example, + * "com.foo.bar" is a member of the permission tree "com.foo". + * + *

It is good to make your permission tree name descriptive, because you + * are taking possession of that entire set of permission names. Thus, it + * must be under a domain you control, with a suffix that will not match + * any normal permissions that may be declared in any applications that + * are part of that domain. + * + *

New permissions must be added before + * any .apks are installed that use those permissions. Permissions you + * add through this method are remembered across reboots of the device. + * If the given permission already exists, the info you supply here + * will be used to update it. + * + * @param info Description of the permission to be added. + * + * @return Returns true if a new permission was created, false if an + * existing one was updated. + * + * @throws SecurityException if you are not allowed to add the + * given permission name. + * + * @see #removePermission(String) + */ + public boolean addPermission(PermissionInfo info) { + return false; + } + + /** + * Like {@link #addPermission(PermissionInfo)} but asynchronously + * persists the package manager state after returning from the call, + * allowing it to return quicker and batch a series of adds at the + * expense of no guarantee the added permission will be retained if + * the device is rebooted before it is written. + */ + public boolean addPermissionAsync(PermissionInfo info) { + return false; + } + + /** + * Removes a permission that was previously added with + * {@link #addPermission(PermissionInfo)}. The same ownership rules apply + * -- you are only allowed to remove permissions that you are allowed + * to add. + * + * @param name The name of the permission to remove. + * + * @throws SecurityException if you are not allowed to remove the + * given permission name. + * + * @see #addPermission(PermissionInfo) + */ + public void removePermission(String name) { + return; + } + + /** + * Returns an {@link Intent} suitable for passing to {@code startActivityForResult} + * which prompts the user to grant {@code permissions} to this application. + * @hide + * + * @throws NullPointerException if {@code permissions} is {@code null}. + * @throws IllegalArgumentException if {@code permissions} contains {@code null}. + */ + public Intent buildPermissionRequestIntent(String... permissions) { + if (permissions == null) { + throw new NullPointerException("permissions cannot be null"); + } + for (String permission : permissions) { + if (permission == null) { + throw new IllegalArgumentException("permissions cannot contain null"); + } + } + + Intent i = new Intent(ACTION_REQUEST_PERMISSION); +// FIXME +// i.putExtra(EXTRA_REQUEST_PERMISSION_PERMISSION_LIST, permissions); +// i.setPackage("com.android.packageinstaller"); + return i; + } + + /** + * Grant a permission to an application which the application does not + * already have. The permission must have been requested by the application, + * but as an optional permission. If the application is not allowed to + * hold the permission, a SecurityException is thrown. + * @hide + * + * @param packageName The name of the package that the permission will be + * granted to. + * @param permissionName The name of the permission. + */ + public void grantPermission(String packageName, String permissionName) { + return; + } + + /** + * Revoke a permission that was previously granted by {@link #grantPermission}. + * @hide + * + * @param packageName The name of the package that the permission will be + * granted to. + * @param permissionName The name of the permission. + */ + public void revokePermission(String packageName, String permissionName) { + return; + } + + /** + * Compare the signatures of two packages to determine if the same + * signature appears in both of them. If they do contain the same + * signature, then they are allowed special privileges when working + * with each other: they can share the same user-id, run instrumentation + * against each other, etc. + * + * @param pkg1 First package name whose signature will be compared. + * @param pkg2 Second package name whose signature will be compared. + * + * @return Returns an integer indicating whether all signatures on the + * two packages match. The value is >= 0 ({@link #SIGNATURE_MATCH}) if + * all signatures match or < 0 if there is not a match ({@link + * #SIGNATURE_NO_MATCH} or {@link #SIGNATURE_UNKNOWN_PACKAGE}). + * + * @see #checkSignatures(int, int) + * @see #SIGNATURE_MATCH + * @see #SIGNATURE_NO_MATCH + * @see #SIGNATURE_UNKNOWN_PACKAGE + */ + public int checkSignatures(String pkg1, String pkg2) { + return -1; + } + + /** + * Like {@link #checkSignatures(String, String)}, but takes UIDs of + * the two packages to be checked. This can be useful, for example, + * when doing the check in an IPC, where the UID is the only identity + * available. It is functionally identical to determining the package + * associated with the UIDs and checking their signatures. + * + * @param uid1 First UID whose signature will be compared. + * @param uid2 Second UID whose signature will be compared. + * + * @return Returns an integer indicating whether all signatures on the + * two packages match. The value is >= 0 ({@link #SIGNATURE_MATCH}) if + * all signatures match or < 0 if there is not a match ({@link + * #SIGNATURE_NO_MATCH} or {@link #SIGNATURE_UNKNOWN_PACKAGE}). + * + * @see #checkSignatures(String, String) + * @see #SIGNATURE_MATCH + * @see #SIGNATURE_NO_MATCH + * @see #SIGNATURE_UNKNOWN_PACKAGE + */ + public int checkSignatures(int uid1, int uid2) { + return -1; + } + + /** + * Retrieve the names of all packages that are associated with a particular + * user id. In most cases, this will be a single package name, the package + * that has been assigned that user id. Where there are multiple packages + * sharing the same user id through the "sharedUserId" mechanism, all + * packages with that id will be returned. + * + * @param uid The user id for which you would like to retrieve the + * associated packages. + * + * @return Returns an array of one or more packages assigned to the user + * id, or null if there are no known packages with the given id. + */ + public String[] getPackagesForUid(int uid) { + return null; + } + + /** + * Retrieve the official name associated with a user id. This name is + * guaranteed to never change, though it is possibly for the underlying + * user id to be changed. That is, if you are storing information about + * user ids in persistent storage, you should use the string returned + * by this function instead of the raw user-id. + * + * @param uid The user id for which you would like to retrieve a name. + * @return Returns a unique name for the given user id, or null if the + * user id is not currently assigned. + */ + public String getNameForUid(int uid) { + return "example user"; + } + + /** + * Return the user id associated with a shared user name. Multiple + * applications can specify a shared user name in their manifest and thus + * end up using a common uid. This might be used for new applications + * that use an existing shared user name and need to know the uid of the + * shared user. + * + * @param sharedUserName The shared user name whose uid is to be retrieved. + * @return Returns the uid associated with the shared user, or NameNotFoundException + * if the shared user name is not being used by any installed packages + * @hide + */ + public int getUidForSharedUser(String sharedUserName) + throws NameNotFoundException { + return 1000; + } + + /** + * Return a List of all application packages that are installed on the + * device. If flag GET_UNINSTALLED_PACKAGES has been set, a list of all + * applications including those deleted with {@code DONT_DELETE_DATA} (partially + * installed apps with data directory) will be returned. + * + * @param flags Additional option flags. Use any combination of + * {@link #GET_META_DATA}, {@link #GET_SHARED_LIBRARY_FILES}, + * {@link #GET_UNINSTALLED_PACKAGES} to modify the data returned. + * + * @return Returns a List of ApplicationInfo objects, one for each application that + * is installed on the device. In the unlikely case of there being + * no installed applications, an empty list is returned. + * If flag GET_UNINSTALLED_PACKAGES is set, a list of all + * applications including those deleted with {@code DONT_DELETE_DATA} + * (partially installed apps with data directory) will be returned. + * + * @see #GET_META_DATA + * @see #GET_SHARED_LIBRARY_FILES + * @see #GET_UNINSTALLED_PACKAGES + */ + public List getInstalledApplications(int flags) { + return null; + } + + /** + * Get a list of shared libraries that are available on the + * system. + * + * @return An array of shared library names that are + * available on the system, or null if none are installed. + * + */ + public String[] getSystemSharedLibraryNames() { + return null; + } + + /** + * Get a list of features that are available on the + * system. + * + * @return An array of FeatureInfo classes describing the features + * that are available on the system, or null if there are none(!!). + */ + public FeatureInfo[] getSystemAvailableFeatures() { + return null; + } + + /** + * Check whether the given feature name is one of the available + * features as returned by {@link #getSystemAvailableFeatures()}. + * + * @return Returns true if the devices supports the feature, else + * false. + */ + public boolean hasSystemFeature(String name) { + return false; // FIXME + } + + /** + * Determine the best action to perform for a given Intent. This is how + * {@link Intent#resolveActivity} finds an activity if a class has not + * been explicitly specified. + * + *

Note: if using an implicit Intent (without an explicit ComponentName + * specified), be sure to consider whether to set the {@link #MATCH_DEFAULT_ONLY} + * only flag. You need to do so to resolve the activity in the same way + * that {@link android.content.Context#startActivity(Intent)} and + * {@link android.content.Intent#resolveActivity(PackageManager) + * Intent.resolveActivity(PackageManager)} do.

+ * + * @param intent An intent containing all of the desired specification + * (action, data, type, category, and/or component). + * @param flags Additional option flags. The most important is + * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only + * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. + * + * @return Returns a ResolveInfo containing the final activity intent that + * was determined to be the best action. Returns null if no + * matching activity was found. If multiple matching activities are + * found and there is no default set, returns a ResolveInfo + * containing something else, such as the activity resolver. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public ResolveInfo resolveActivity(Intent intent, int flags) { + return null; + } + + /** + * Determine the best action to perform for a given Intent for a given user. This + * is how {@link Intent#resolveActivity} finds an activity if a class has not + * been explicitly specified. + * + *

Note: if using an implicit Intent (without an explicit ComponentName + * specified), be sure to consider whether to set the {@link #MATCH_DEFAULT_ONLY} + * only flag. You need to do so to resolve the activity in the same way + * that {@link android.content.Context#startActivity(Intent)} and + * {@link android.content.Intent#resolveActivity(PackageManager) + * Intent.resolveActivity(PackageManager)} do.

+ * + * @param intent An intent containing all of the desired specification + * (action, data, type, category, and/or component). + * @param flags Additional option flags. The most important is + * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only + * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. + * @param userId The user id. + * + * @return Returns a ResolveInfo containing the final activity intent that + * was determined to be the best action. Returns null if no + * matching activity was found. If multiple matching activities are + * found and there is no default set, returns a ResolveInfo + * containing something else, such as the activity resolver. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + * + * @hide + */ + public ResolveInfo resolveActivityAsUser(Intent intent, int flags, int userId) { + return null; + } + + /** + * Retrieve all activities that can be performed for the given intent. + * + * @param intent The desired intent as per resolveActivity(). + * @param flags Additional option flags. The most important is + * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only + * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. + * + * @return A List<ResolveInfo> containing one entry for each matching + * Activity. These are ordered from best to worst match -- that + * is, the first item in the list is what is returned by + * {@link #resolveActivity}. If there are no matching activities, an empty + * list is returned. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public List queryIntentActivities(Intent intent, + int flags) { + return null; + } + + /** + * Retrieve all activities that can be performed for the given intent, for a specific user. + * + * @param intent The desired intent as per resolveActivity(). + * @param flags Additional option flags. The most important is + * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only + * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. + * + * @return A List<ResolveInfo> containing one entry for each matching + * Activity. These are ordered from best to worst match -- that + * is, the first item in the list is what is returned by + * {@link #resolveActivity}. If there are no matching activities, an empty + * list is returned. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + * @hide + */ + public List queryIntentActivitiesAsUser(Intent intent, + int flags, int userId) { + return null; + } + + + /** + * Retrieve a set of activities that should be presented to the user as + * similar options. This is like {@link #queryIntentActivities}, except it + * also allows you to supply a list of more explicit Intents that you would + * like to resolve to particular options, and takes care of returning the + * final ResolveInfo list in a reasonable order, with no duplicates, based + * on those inputs. + * + * @param caller The class name of the activity that is making the + * request. This activity will never appear in the output + * list. Can be null. + * @param specifics An array of Intents that should be resolved to the + * first specific results. Can be null. + * @param intent The desired intent as per resolveActivity(). + * @param flags Additional option flags. The most important is + * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only + * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. + * + * @return A List<ResolveInfo> containing one entry for each matching + * Activity. These are ordered first by all of the intents resolved + * in specifics and then any additional activities that + * can handle intent but did not get included by one of + * the specifics intents. If there are no matching + * activities, an empty list is returned. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public List queryIntentActivityOptions( + ComponentName caller, Intent[] specifics, Intent intent, int flags) { + return null; + } + + /** + * Retrieve all receivers that can handle a broadcast of the given intent. + * + * @param intent The desired intent as per resolveActivity(). + * @param flags Additional option flags. + * + * @return A List<ResolveInfo> containing one entry for each matching + * Receiver. These are ordered from first to last in priority. If + * there are no matching receivers, an empty list is returned. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public List queryBroadcastReceivers(Intent intent, + int flags) { + return null; + } + + /** + * Retrieve all receivers that can handle a broadcast of the given intent, for a specific + * user. + * + * @param intent The desired intent as per resolveActivity(). + * @param flags Additional option flags. + * @param userId The userId of the user being queried. + * + * @return A List<ResolveInfo> containing one entry for each matching + * Receiver. These are ordered from first to last in priority. If + * there are no matching receivers, an empty list is returned. + * + * @see #MATCH_DEFAULT_ONLY + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + * @hide + */ + public List queryBroadcastReceivers(Intent intent, + int flags, int userId) { + return null; + } + + /** + * Determine the best service to handle for a given Intent. + * + * @param intent An intent containing all of the desired specification + * (action, data, type, category, and/or component). + * @param flags Additional option flags. + * + * @return Returns a ResolveInfo containing the final service intent that + * was determined to be the best action. Returns null if no + * matching service was found. + * + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public ResolveInfo resolveService(Intent intent, int flags) { + return null; + } + + /** + * Retrieve all services that can match the given intent. + * + * @param intent The desired intent as per resolveService(). + * @param flags Additional option flags. + * + * @return A List<ResolveInfo> containing one entry for each matching + * ServiceInfo. These are ordered from best to worst match -- that + * is, the first item in the list is what is returned by + * resolveService(). If there are no matching services, an empty + * list is returned. + * + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public List queryIntentServices(Intent intent, + int flags) { + return null; + } + + /** + * Retrieve all services that can match the given intent for a given user. + * + * @param intent The desired intent as per resolveService(). + * @param flags Additional option flags. + * @param userId The user id. + * + * @return A List<ResolveInfo> containing one entry for each matching + * ServiceInfo. These are ordered from best to worst match -- that + * is, the first item in the list is what is returned by + * resolveService(). If there are no matching services, an empty + * list is returned. + * + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + * + * @hide + */ + public List queryIntentServicesAsUser(Intent intent, + int flags, int userId) { + return null; + } + + /** {@hide} */ + public List queryIntentContentProvidersAsUser( + Intent intent, int flags, int userId) { + return null; + } + + /** + * Retrieve all providers that can match the given intent. + * + * @param intent An intent containing all of the desired specification + * (action, data, type, category, and/or component). + * @param flags Additional option flags. + * @return A List<ResolveInfo> containing one entry for each matching + * ProviderInfo. These are ordered from best to worst match. If + * there are no matching providers, an empty list is returned. + * @see #GET_INTENT_FILTERS + * @see #GET_RESOLVED_FILTER + */ + public List queryIntentContentProviders(Intent intent, int flags) { + return null; + } + + /** + * Find a single content provider by its base path name. + * + * @param name The name of the provider to find. + * @param flags Additional option flags. Currently should always be 0. + * + * @return ContentProviderInfo Information about the provider, if found, + * else null. + */ + public ProviderInfo resolveContentProvider(String name, + int flags) { + return null; + } + + /** + * Retrieve content provider information. + * + *

Note: unlike most other methods, an empty result set is indicated + * by a null return instead of an empty list. + * + * @param processName If non-null, limits the returned providers to only + * those that are hosted by the given process. If null, + * all content providers are returned. + * @param uid If processName is non-null, this is the required + * uid owning the requested content providers. + * @param flags Additional option flags. Currently should always be 0. + * + * @return A List<ContentProviderInfo> containing one entry for each + * content provider either patching processName or, if + * processName is null, all known content providers. + * If there are no matching providers, null is returned. + */ + public List queryContentProviders( + String processName, int uid, int flags) { + return null; + } + + /** + * Retrieve all of the information we know about a particular + * instrumentation class. + * + *

Throws {@link NameNotFoundException} if instrumentation with the + * given class name cannot be found on the system. + * + * @param className The full name (i.e. + * com.google.apps.contacts.InstrumentList) of an + * Instrumentation class. + * @param flags Additional option flags. Currently should always be 0. + * + * @return InstrumentationInfo containing information about the + * instrumentation. + */ + public InstrumentationInfo getInstrumentationInfo( + ComponentName className, int flags) throws NameNotFoundException { + return null; + } + + /** + * Retrieve information about available instrumentation code. May be used + * to retrieve either all instrumentation code, or only the code targeting + * a particular package. + * + * @param targetPackage If null, all instrumentation is returned; only the + * instrumentation targeting this package name is + * returned. + * @param flags Additional option flags. Currently should always be 0. + * + * @return A List<InstrumentationInfo> containing one entry for each + * matching available Instrumentation. Returns an empty list if + * there is no instrumentation available for the given package. + */ + public List queryInstrumentation( + String targetPackage, int flags) { + return null; + } + + /** + * Retrieve an image from a package. This is a low-level API used by + * the various package manager info structures (such as + * {@link ComponentInfo} to implement retrieval of their associated + * icon. + * + * @param packageName The name of the package that this icon is coming from. + * Cannot be null. + * @param resid The resource identifier of the desired image. Cannot be 0. + * @param appInfo Overall information about packageName. This + * may be null, in which case the application information will be retrieved + * for you if needed; if you already have this information around, it can + * be much more efficient to supply it here. + * + * @return Returns a Drawable holding the requested image. Returns null if + * an image could not be found for any reason. + */ + public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) { + return null; + } + + /** + * Retrieve the icon associated with an activity. Given the full name of + * an activity, retrieves the information about it and calls + * {@link ComponentInfo#loadIcon ComponentInfo.loadIcon()} to return its icon. + * If the activity cannot be found, NameNotFoundException is thrown. + * + * @param activityName Name of the activity whose icon is to be retrieved. + * + * @return Returns the image of the icon, or the default activity icon if + * it could not be found. Does not return null. + * @throws NameNotFoundException Thrown if the resources for the given + * activity could not be loaded. + * + * @see #getActivityIcon(Intent) + */ + public Drawable getActivityIcon(ComponentName activityName) throws NameNotFoundException { + return null; + } + + /** + * Retrieve the icon associated with an Intent. If intent.getClassName() is + * set, this simply returns the result of + * getActivityIcon(intent.getClassName()). Otherwise it resolves the intent's + * component and returns the icon associated with the resolved component. + * If intent.getClassName() cannot be found or the Intent cannot be resolved + * to a component, NameNotFoundException is thrown. + * + * @param intent The intent for which you would like to retrieve an icon. + * + * @return Returns the image of the icon, or the default activity icon if + * it could not be found. Does not return null. + * @throws NameNotFoundException Thrown if the resources for application + * matching the given intent could not be loaded. + * + * @see #getActivityIcon(ComponentName) + */ + public Drawable getActivityIcon(Intent intent) throws NameNotFoundException { + return null; + } + + /** + * Return the generic icon for an activity that is used when no specific + * icon is defined. + * + * @return Drawable Image of the icon. + */ + public Drawable getDefaultActivityIcon() { + return null; + } + + /** + * Retrieve the icon associated with an application. If it has not defined + * an icon, the default app icon is returned. Does not return null. + * + * @param info Information about application being queried. + * + * @return Returns the image of the icon, or the default application icon + * if it could not be found. + * + * @see #getApplicationIcon(String) + */ + public Drawable getApplicationIcon(ApplicationInfo info) { + return null; + } + + /** + * Retrieve the icon associated with an application. Given the name of the + * application's package, retrieves the information about it and calls + * getApplicationIcon() to return its icon. If the application cannot be + * found, NameNotFoundException is thrown. + * + * @param packageName Name of the package whose application icon is to be + * retrieved. + * + * @return Returns the image of the icon, or the default application icon + * if it could not be found. Does not return null. + * @throws NameNotFoundException Thrown if the resources for the given + * application could not be loaded. + * + * @see #getApplicationIcon(ApplicationInfo) + */ + public Drawable getApplicationIcon(String packageName) throws NameNotFoundException { + return null; + } + + /** + * Retrieve the logo associated with an activity. Given the full name of + * an activity, retrieves the information about it and calls + * {@link ComponentInfo#loadLogo ComponentInfo.loadLogo()} to return its logo. + * If the activity cannot be found, NameNotFoundException is thrown. + * + * @param activityName Name of the activity whose logo is to be retrieved. + * + * @return Returns the image of the logo or null if the activity has no + * logo specified. + * + * @throws NameNotFoundException Thrown if the resources for the given + * activity could not be loaded. + * + * @see #getActivityLogo(Intent) + */ + public Drawable getActivityLogo(ComponentName activityName) throws NameNotFoundException { + return null; + } + + /** + * Retrieve the logo associated with an Intent. If intent.getClassName() is + * set, this simply returns the result of + * getActivityLogo(intent.getClassName()). Otherwise it resolves the intent's + * component and returns the logo associated with the resolved component. + * If intent.getClassName() cannot be found or the Intent cannot be resolved + * to a component, NameNotFoundException is thrown. + * + * @param intent The intent for which you would like to retrieve a logo. + * + * @return Returns the image of the logo, or null if the activity has no + * logo specified. + * + * @throws NameNotFoundException Thrown if the resources for application + * matching the given intent could not be loaded. + * + * @see #getActivityLogo(ComponentName) + */ + public Drawable getActivityLogo(Intent intent) throws NameNotFoundException { + return null; + } + + /** + * Retrieve the logo associated with an application. If it has not specified + * a logo, this method returns null. + * + * @param info Information about application being queried. + * + * @return Returns the image of the logo, or null if no logo is specified + * by the application. + * + * @see #getApplicationLogo(String) + */ + public Drawable getApplicationLogo(ApplicationInfo info) { + return null; + } + + /** + * Retrieve the logo associated with an application. Given the name of the + * application's package, retrieves the information about it and calls + * getApplicationLogo() to return its logo. If the application cannot be + * found, NameNotFoundException is thrown. + * + * @param packageName Name of the package whose application logo is to be + * retrieved. + * + * @return Returns the image of the logo, or null if no application logo + * has been specified. + * + * @throws NameNotFoundException Thrown if the resources for the given + * application could not be loaded. + * + * @see #getApplicationLogo(ApplicationInfo) + */ + public Drawable getApplicationLogo(String packageName) throws NameNotFoundException { + return null; + } + + /** + * Retrieve text from a package. This is a low-level API used by + * the various package manager info structures (such as + * {@link ComponentInfo} to implement retrieval of their associated + * labels and other text. + * + * @param packageName The name of the package that this text is coming from. + * Cannot be null. + * @param resid The resource identifier of the desired text. Cannot be 0. + * @param appInfo Overall information about packageName. This + * may be null, in which case the application information will be retrieved + * for you if needed; if you already have this information around, it can + * be much more efficient to supply it here. + * + * @return Returns a CharSequence holding the requested text. Returns null + * if the text could not be found for any reason. + */ + public CharSequence getText(String packageName, int resid, ApplicationInfo appInfo) { + return null; + } + + /** + * Retrieve an XML file from a package. This is a low-level API used to + * retrieve XML meta data. + * + * @param packageName The name of the package that this xml is coming from. + * Cannot be null. + * @param resid The resource identifier of the desired xml. Cannot be 0. + * @param appInfo Overall information about packageName. This + * may be null, in which case the application information will be retrieved + * for you if needed; if you already have this information around, it can + * be much more efficient to supply it here. + * + * @return Returns an XmlPullParser allowing you to parse out the XML + * data. Returns null if the xml resource could not be found for any + * reason. + */ + public XmlResourceParser getXml(String packageName, int resid, ApplicationInfo appInfo) { + return null; + } + + /** + * Return the label to use for this application. + * + * @return Returns the label associated with this application, or null if + * it could not be found for any reason. + * @param info The application to get the label of. + */ + public CharSequence getApplicationLabel(ApplicationInfo info) { + return null; + } + + /** + * Retrieve the resources associated with an activity. Given the full + * name of an activity, retrieves the information about it and calls + * getResources() to return its application's resources. If the activity + * cannot be found, NameNotFoundException is thrown. + * + * @param activityName Name of the activity whose resources are to be + * retrieved. + * + * @return Returns the application's Resources. + * @throws NameNotFoundException Thrown if the resources for the given + * application could not be loaded. + * + * @see #getResourcesForApplication(ApplicationInfo) + */ + public Resources getResourcesForActivity(ComponentName activityName) throws NameNotFoundException { + return null; +} + + /** + * Retrieve the resources for an application. Throws NameNotFoundException + * if the package is no longer installed. + * + * @param app Information about the desired application. + * + * @return Returns the application's Resources. + * @throws NameNotFoundException Thrown if the resources for the given + * application could not be loaded (most likely because it was uninstalled). + */ + public Resources getResourcesForApplication(ApplicationInfo app) throws NameNotFoundException { + return null; + } + + /** + * Retrieve the resources associated with an application. Given the full + * package name of an application, retrieves the information about it and + * calls getResources() to return its application's resources. If the + * appPackageName cannot be found, NameNotFoundException is thrown. + * + * @param appPackageName Package name of the application whose resources + * are to be retrieved. + * + * @return Returns the application's Resources. + * @throws NameNotFoundException Thrown if the resources for the given + * application could not be loaded. + * + * @see #getResourcesForApplication(ApplicationInfo) + */ + public Resources getResourcesForApplication(String appPackageName) throws NameNotFoundException { + return null; + } + + /** @hide */ + public Resources getResourcesForApplicationAsUser(String appPackageName, int userId) throws NameNotFoundException { + return null; + } + + /** + * Retrieve overall information about an application package defined + * in a package archive file + * + * @param archiveFilePath The path to the archive file + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, + * {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, + * {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, + * {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, + * {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, to modify the data returned. + * + * @return Returns the information about the package. Returns + * null if the package could not be successfully parsed. + * + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + * + */ + public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags) { + PackageParser packageParser = new PackageParser(archiveFilePath); + DisplayMetrics metrics = new DisplayMetrics(); + metrics.setToDefaults(); + final File sourceFile = new File(archiveFilePath); + PackageParser.Package pkg = packageParser.parsePackage( + sourceFile, archiveFilePath, metrics, 0); + if (pkg == null) { + return null; + } + if ((flags & GET_SIGNATURES) != 0) { + packageParser.collectCertificates(pkg, 0); + } + PackageUserState state = new PackageUserState(); + return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0, null, state); + } + + /** + * @hide + * + * Install a package. Since this may take a little while, the result will + * be posted back to the given observer. An installation will fail if the calling context + * lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the + * package named in the package file's manifest is already installed, or if there's no space + * available on the device. + * + * @param packageURI The location of the package file to install. This can be a 'file:' or a + * 'content:' URI. + * @param observer An observer callback to get notified when the package installation is + * complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be + * called when that happens. observer may be null to indicate that no callback is desired. + * @param flags - possible values: {@link #INSTALL_FORWARD_LOCK}, + * {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}. + * @param installerPackageName Optional package name of the application that is performing the + * installation. This identifies which market the package came from. + */ + public void installPackage( + Uri packageURI, IPackageInstallObserver observer, int flags, + String installerPackageName) { + return; + } + + /** + * Similar to + * {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but + * with an extra verification file provided. + * + * @param packageURI The location of the package file to install. This can + * be a 'file:' or a 'content:' URI. + * @param observer An observer callback to get notified when the package + * installation is complete. + * {@link IPackageInstallObserver#packageInstalled(String, int)} + * will be called when that happens. observer may be null to + * indicate that no callback is desired. + * @param flags - possible values: {@link #INSTALL_FORWARD_LOCK}, + * {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST} + * . + * @param installerPackageName Optional package name of the application that + * is performing the installation. This identifies which market + * the package came from. + * @param verificationURI The location of the supplementary verification + * file. This can be a 'file:' or a 'content:' URI. May be + * {@code null}. + * @param manifestDigest an object that holds the digest of the package + * which can be used to verify ownership. May be {@code null}. + * @param encryptionParams if the package to be installed is encrypted, + * these parameters describing the encryption and authentication + * used. May be {@code null}. + * @hide + */ + public void installPackageWithVerification(Uri packageURI, + IPackageInstallObserver observer, int flags, String installerPackageName, + Uri verificationURI, ManifestDigest manifestDigest, + ContainerEncryptionParams encryptionParams) { + return; + } + + /** + * Similar to + * {@link #installPackage(Uri, IPackageInstallObserver, int, String)} but + * with an extra verification information provided. + * + * @param packageURI The location of the package file to install. This can + * be a 'file:' or a 'content:' URI. + * @param observer An observer callback to get notified when the package + * installation is complete. + * {@link IPackageInstallObserver#packageInstalled(String, int)} + * will be called when that happens. observer may be null to + * indicate that no callback is desired. + * @param flags - possible values: {@link #INSTALL_FORWARD_LOCK}, + * {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST} + * . + * @param installerPackageName Optional package name of the application that + * is performing the installation. This identifies which market + * the package came from. + * @param verificationParams an object that holds signal information to + * assist verification. May be {@code null}. + * @param encryptionParams if the package to be installed is encrypted, + * these parameters describing the encryption and authentication + * used. May be {@code null}. + * + * @hide + */ + public void installPackageWithVerificationAndEncryption(Uri packageURI, + IPackageInstallObserver observer, int flags, String installerPackageName, + VerificationParams verificationParams, + ContainerEncryptionParams encryptionParams) { + return; + } + + /** + * If there is already an application with the given package name installed + * on the system for other users, also install it for the calling user. + * @hide + */ + public int installExistingPackage(String packageName) throws NameNotFoundException { + return -1; + } + + /** + * Allows a package listening to the + * {@link Intent#ACTION_PACKAGE_NEEDS_VERIFICATION package verification + * broadcast} to respond to the package manager. The response must include + * the {@code verificationCode} which is one of + * {@link PackageManager#VERIFICATION_ALLOW} or + * {@link PackageManager#VERIFICATION_REJECT}. + * + * @param id pending package identifier as passed via the + * {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra. + * @param verificationCode either {@link PackageManager#VERIFICATION_ALLOW} + * or {@link PackageManager#VERIFICATION_REJECT}. + * @throws SecurityException if the caller does not have the + * PACKAGE_VERIFICATION_AGENT permission. + */ + public void verifyPendingInstall(int id, int verificationCode) { + return; + } + + /** + * Allows a package listening to the + * {@link Intent#ACTION_PACKAGE_NEEDS_VERIFICATION package verification + * broadcast} to extend the default timeout for a response and declare what + * action to perform after the timeout occurs. The response must include + * the {@code verificationCodeAtTimeout} which is one of + * {@link PackageManager#VERIFICATION_ALLOW} or + * {@link PackageManager#VERIFICATION_REJECT}. + * + * This method may only be called once per package id. Additional calls + * will have no effect. + * + * @param id pending package identifier as passed via the + * {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra. + * @param verificationCodeAtTimeout either + * {@link PackageManager#VERIFICATION_ALLOW} or + * {@link PackageManager#VERIFICATION_REJECT}. If + * {@code verificationCodeAtTimeout} is neither + * {@link PackageManager#VERIFICATION_ALLOW} or + * {@link PackageManager#VERIFICATION_REJECT}, then + * {@code verificationCodeAtTimeout} will default to + * {@link PackageManager#VERIFICATION_REJECT}. + * @param millisecondsToDelay the amount of time requested for the timeout. + * Must be positive and less than + * {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}. If + * {@code millisecondsToDelay} is out of bounds, + * {@code millisecondsToDelay} will be set to the closest in + * bounds value; namely, 0 or + * {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}. + * @throws SecurityException if the caller does not have the + * PACKAGE_VERIFICATION_AGENT permission. + */ + public void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay) { + return; + } + + /** + * Change the installer associated with a given package. There are limitations + * on how the installer package can be changed; in particular: + *

    + *
  • A SecurityException will be thrown if installerPackageName + * is not signed with the same certificate as the calling application. + *
  • A SecurityException will be thrown if targetPackage already + * has an installer package, and that installer package is not signed with + * the same certificate as the calling application. + *
+ * + * @param targetPackage The installed package whose installer will be changed. + * @param installerPackageName The package name of the new installer. May be + * null to clear the association. + */ + public void setInstallerPackageName(String targetPackage, String installerPackageName) { + return; + } + + /** + * Attempts to delete a package. Since this may take a little while, the result will + * be posted back to the given observer. A deletion will fail if the calling context + * lacks the {@link android.Manifest.permission#DELETE_PACKAGES} permission, if the + * named package cannot be found, or if the named package is a "system package". + * (TODO: include pointer to documentation on "system packages") + * + * @param packageName The name of the package to delete + * @param observer An observer callback to get notified when the package deletion is + * complete. {@link android.content.pm.IPackageDeleteObserver#packageDeleted(boolean)} will be + * called when that happens. observer may be null to indicate that no callback is desired. + * @param flags - possible values: {@link #DELETE_KEEP_DATA}, + * {@link #DELETE_ALL_USERS}. + * + * @hide + */ + public void deletePackage(String packageName, IPackageDeleteObserver observer, int flags) { + return; + } + + /** + * Retrieve the package name of the application that installed a package. This identifies + * which market the package came from. + * + * @param packageName The name of the package to query + */ + public String getInstallerPackageName(String packageName) { + return "com.example.installer"; + } + + /** + * Attempts to clear the user data directory of an application. + * Since this may take a little while, the result will + * be posted back to the given observer. A deletion will fail if the + * named package cannot be found, or if the named package is a "system package". + * + * @param packageName The name of the package + * @param observer An observer callback to get notified when the operation is finished + * {@link android.content.pm.IPackageDataObserver#onRemoveCompleted(String, boolean)} + * will be called when that happens. observer may be null to indicate that + * no callback is desired. + * + * @hide + */ + public void clearApplicationUserData(String packageName, IPackageDataObserver observer) { + return; + } + + /** + * Attempts to delete the cache files associated with an application. + * Since this may take a little while, the result will + * be posted back to the given observer. A deletion will fail if the calling context + * lacks the {@link android.Manifest.permission#DELETE_CACHE_FILES} permission, if the + * named package cannot be found, or if the named package is a "system package". + * + * @param packageName The name of the package to delete + * @param observer An observer callback to get notified when the cache file deletion + * is complete. + * {@link android.content.pm.IPackageDataObserver#onRemoveCompleted(String, boolean)} + * will be called when that happens. observer may be null to indicate that + * no callback is desired. + * + * @hide + */ + public void deleteApplicationCacheFiles(String packageName, IPackageDataObserver observer) { + return; + } + + /** + * Free storage by deleting LRU sorted list of cache files across + * all applications. If the currently available free storage + * on the device is greater than or equal to the requested + * free storage, no cache files are cleared. If the currently + * available storage on the device is less than the requested + * free storage, some or all of the cache files across + * all applications are deleted (based on last accessed time) + * to increase the free storage space on the device to + * the requested value. There is no guarantee that clearing all + * the cache files from all applications will clear up + * enough storage to achieve the desired value. + * @param freeStorageSize The number of bytes of storage to be + * freed by the system. Say if freeStorageSize is XX, + * and the current free storage is YY, + * if XX is less than YY, just return. if not free XX-YY number + * of bytes if possible. + * @param observer call back used to notify when + * the operation is completed + * + * @hide + */ + public void freeStorageAndNotify(long freeStorageSize, IPackageDataObserver observer) { + return; + } + + /** + * Free storage by deleting LRU sorted list of cache files across + * all applications. If the currently available free storage + * on the device is greater than or equal to the requested + * free storage, no cache files are cleared. If the currently + * available storage on the device is less than the requested + * free storage, some or all of the cache files across + * all applications are deleted (based on last accessed time) + * to increase the free storage space on the device to + * the requested value. There is no guarantee that clearing all + * the cache files from all applications will clear up + * enough storage to achieve the desired value. + * @param freeStorageSize The number of bytes of storage to be + * freed by the system. Say if freeStorageSize is XX, + * and the current free storage is YY, + * if XX is less than YY, just return. if not free XX-YY number + * of bytes if possible. + * @param pi IntentSender call back used to + * notify when the operation is completed.May be null + * to indicate that no call back is desired. + * + * @hide + */ + public void freeStorage(long freeStorageSize, IntentSender pi) { + return; + } + + /** + * Retrieve the size information for a package. + * Since this may take a little while, the result will + * be posted back to the given observer. The calling context + * should have the {@link android.Manifest.permission#GET_PACKAGE_SIZE} permission. + * + * @param packageName The name of the package whose size information is to be retrieved + * @param userHandle The user whose size information should be retrieved. + * @param observer An observer callback to get notified when the operation + * is complete. + * {@link android.content.pm.IPackageStatsObserver#onGetStatsCompleted(PackageStats, boolean)} + * The observer's callback is invoked with a PackageStats object(containing the + * code, data and cache sizes of the package) and a boolean value representing + * the status of the operation. observer may be null to indicate that + * no callback is desired. + * + * @hide + */ + public void getPackageSizeInfo(String packageName, int userHandle, IPackageStatsObserver observer) { + return; + } + + /** + * Like {@link #getPackageSizeInfo(String, int, IPackageStatsObserver)}, but + * returns the size for the calling user. + * + * @hide + */ + public void getPackageSizeInfo(String packageName, IPackageStatsObserver observer) { + getPackageSizeInfo(packageName, UserHandle.myUserId(), observer); + } + + /** + * @deprecated This function no longer does anything; it was an old + * approach to managing preferred activities, which has been superseded + * by (and conflicts with) the modern activity-based preferences. + */ + @Deprecated + public void addPackageToPreferred(String packageName) { + return; + } + + /** + * @deprecated This function no longer does anything; it was an old + * approach to managing preferred activities, which has been superseded + * by (and conflicts with) the modern activity-based preferences. + */ + @Deprecated + public void removePackageFromPreferred(String packageName) { + return; + } + + /** + * Retrieve the list of all currently configured preferred packages. The + * first package on the list is the most preferred, the last is the + * least preferred. + * + * @param flags Additional option flags. Use any combination of + * {@link #GET_ACTIVITIES}, + * {@link #GET_GIDS}, + * {@link #GET_CONFIGURATIONS}, + * {@link #GET_INSTRUMENTATION}, + * {@link #GET_PERMISSIONS}, + * {@link #GET_PROVIDERS}, + * {@link #GET_RECEIVERS}, + * {@link #GET_SERVICES}, + * {@link #GET_SIGNATURES}, to modify the data returned. + * + * @return Returns a list of PackageInfo objects describing each + * preferred application, in order of preference. + * + * @see #GET_ACTIVITIES + * @see #GET_GIDS + * @see #GET_CONFIGURATIONS + * @see #GET_INSTRUMENTATION + * @see #GET_PERMISSIONS + * @see #GET_PROVIDERS + * @see #GET_RECEIVERS + * @see #GET_SERVICES + * @see #GET_SIGNATURES + */ + public List getPreferredPackages(int flags) { + return null; + } + + /** + * @deprecated This is a protected API that should not have been available + * to third party applications. It is the platform's responsibility for + * assigning preferred activities and this cannot be directly modified. + * + * Add a new preferred activity mapping to the system. This will be used + * to automatically select the given activity component when + * {@link Context#startActivity(Intent) Context.startActivity()} finds + * multiple matching activities and also matches the given filter. + * + * @param filter The set of intents under which this activity will be + * made preferred. + * @param match The IntentFilter match category that this preference + * applies to. + * @param set The set of activities that the user was picking from when + * this preference was made. + * @param activity The component name of the activity that is to be + * preferred. + */ + @Deprecated + public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) { + return; + } + + /** + * Same as {@link #addPreferredActivity(IntentFilter, int, + ComponentName[], ComponentName)}, but with a specific userId to apply the preference + to. + * @hide + */ + public void addPreferredActivity(IntentFilter filter, int match, + ComponentName[] set, ComponentName activity, int userId) { + throw new RuntimeException("Not implemented. Must override in a subclass."); + } + + /** + * @deprecated This is a protected API that should not have been available + * to third party applications. It is the platform's responsibility for + * assigning preferred activities and this cannot be directly modified. + * + * Replaces an existing preferred activity mapping to the system, and if that were not present + * adds a new preferred activity. This will be used + * to automatically select the given activity component when + * {@link Context#startActivity(Intent) Context.startActivity()} finds + * multiple matching activities and also matches the given filter. + * + * @param filter The set of intents under which this activity will be + * made preferred. + * @param match The IntentFilter match category that this preference + * applies to. + * @param set The set of activities that the user was picking from when + * this preference was made. + * @param activity The component name of the activity that is to be + * preferred. + * @hide + */ + @Deprecated + public void replacePreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) { + return; + } + + /** + * Remove all preferred activity mappings, previously added with + * {@link #addPreferredActivity}, from the + * system whose activities are implemented in the given package name. + * An application can only clear its own package(s). + * + * @param packageName The name of the package whose preferred activity + * mappings are to be removed. + */ + public void clearPackagePreferredActivities(String packageName) { + return; + } + + /** + * Retrieve all preferred activities, previously added with + * {@link #addPreferredActivity}, that are + * currently registered with the system. + * + * @param outFilters A list in which to place the filters of all of the + * preferred activities, or null for none. + * @param outActivities A list in which to place the component names of + * all of the preferred activities, or null for none. + * @param packageName An option package in which you would like to limit + * the list. If null, all activities will be returned; if non-null, only + * those activities in the given package are returned. + * + * @return Returns the total number of registered preferred activities + * (the number of distinct IntentFilter records, not the number of unique + * activity components) that were found. + */ + public int getPreferredActivities(List outFilters, List outActivities, String packageName) { + return -1; + } + + /** + * Ask for the set of available 'home' activities and the current explicit + * default, if any. + * @hide + */ + public ComponentName getHomeActivities(List outActivities) { + return null; + } + + /** + * Set the enabled setting for a package component (activity, receiver, service, provider). + * This setting will override any enabled state which may have been set by the component in its + * manifest. + * + * @param componentName The component to enable + * @param newState The new enabled state for the component. The legal values for this state + * are: + * {@link #COMPONENT_ENABLED_STATE_ENABLED}, + * {@link #COMPONENT_ENABLED_STATE_DISABLED} + * and + * {@link #COMPONENT_ENABLED_STATE_DEFAULT} + * The last one removes the setting, thereby restoring the component's state to + * whatever was set in it's manifest (or enabled, by default). + * @param flags Optional behavior flags: {@link #DONT_KILL_APP} or 0. + */ + public void setComponentEnabledSetting(ComponentName componentName, int newState, int flags) { + return; + } + + + /** + * Return the the enabled setting for a package component (activity, + * receiver, service, provider). This returns the last value set by + * {@link #setComponentEnabledSetting(ComponentName, int, int)}; in most + * cases this value will be {@link #COMPONENT_ENABLED_STATE_DEFAULT} since + * the value originally specified in the manifest has not been modified. + * + * @param componentName The component to retrieve. + * @return Returns the current enabled state for the component. May + * be one of {@link #COMPONENT_ENABLED_STATE_ENABLED}, + * {@link #COMPONENT_ENABLED_STATE_DISABLED}, or + * {@link #COMPONENT_ENABLED_STATE_DEFAULT}. The last one means the + * component's enabled state is based on the original information in + * the manifest as found in {@link ComponentInfo}. + */ + public int getComponentEnabledSetting(ComponentName componentName) { + return -1; + } + + /** + * Set the enabled setting for an application + * This setting will override any enabled state which may have been set by the application in + * its manifest. It also overrides the enabled state set in the manifest for any of the + * application's components. It does not override any enabled state set by + * {@link #setComponentEnabledSetting} for any of the application's components. + * + * @param packageName The package name of the application to enable + * @param newState The new enabled state for the component. The legal values for this state + * are: + * {@link #COMPONENT_ENABLED_STATE_ENABLED}, + * {@link #COMPONENT_ENABLED_STATE_DISABLED} + * and + * {@link #COMPONENT_ENABLED_STATE_DEFAULT} + * The last one removes the setting, thereby restoring the applications's state to + * whatever was set in its manifest (or enabled, by default). + * @param flags Optional behavior flags: {@link #DONT_KILL_APP} or 0. + */ + public void setApplicationEnabledSetting(String packageName, int newState, int flags) { + return; + } + + /** + * Return the the enabled setting for an application. This returns + * the last value set by + * {@link #setApplicationEnabledSetting(String, int, int)}; in most + * cases this value will be {@link #COMPONENT_ENABLED_STATE_DEFAULT} since + * the value originally specified in the manifest has not been modified. + * + * @param packageName The component to retrieve. + * @return Returns the current enabled state for the component. May + * be one of {@link #COMPONENT_ENABLED_STATE_ENABLED}, + * {@link #COMPONENT_ENABLED_STATE_DISABLED}, or + * {@link #COMPONENT_ENABLED_STATE_DEFAULT}. The last one means the + * application's enabled state is based on the original information in + * the manifest as found in {@link ComponentInfo}. + * @throws IllegalArgumentException if the named package does not exist. + */ + public int getApplicationEnabledSetting(String packageName) { + return -1; + } + + /** + * Puts the package in a blocked state, which is almost like an uninstalled state, + * making the package unavailable, but it doesn't remove the data or the actual + * package file. + * @hide + */ + public boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, UserHandle userHandle) { + return false; + } + + /** + * Returns the blocked state of a package. + * @see #setApplicationBlockedSettingAsUser(String, boolean, UserHandle) + * @hide + */ + public boolean getApplicationBlockedSettingAsUser(String packageName, UserHandle userHandle) { + return false; + } + + /** + * Return whether the device has been booted into safe mode. + */ + public boolean isSafeMode() { + return false; + } + + /** + * Attempts to move package resources from internal to external media or vice versa. + * Since this may take a little while, the result will + * be posted back to the given observer. This call may fail if the calling context + * lacks the {@link android.Manifest.permission#MOVE_PACKAGE} permission, if the + * named package cannot be found, or if the named package is a "system package". + * + * @param packageName The name of the package to delete + * @param observer An observer callback to get notified when the package move is + * complete. {@link android.content.pm.IPackageMoveObserver#packageMoved(boolean)} will be + * called when that happens. observer may be null to indicate that no callback is desired. + * @param flags To indicate install location {@link #MOVE_INTERNAL} or + * {@link #MOVE_EXTERNAL_MEDIA} + * + * @hide + */ + public void movePackage(String packageName, IPackageMoveObserver observer, int flags) { + return; + }; + + /** + * Returns the device identity that verifiers can use to associate their scheme to a particular + * device. This should not be used by anything other than a package verifier. + * + * @return identity that uniquely identifies current device + * @hide + */ + public VerifierDeviceIdentity getVerifierDeviceIdentity() { + return null; + } + + /** + * Returns the data directory for a particular user and package, given the uid of the package. + * @param uid uid of the package, including the userId and appId + * @param packageName name of the package + * @return the user-specific data directory for the package + * @hide + */ + public static String getDataDirForUser(int userId, String packageName) { + // TODO: This should be shared with Installer's knowledge of user directory + return Environment.getDataDirectory().toString() + "/user/" + userId + + "/" + packageName; + } +} diff --git a/src/api-impl/android/content/pm/PackageParser.java b/src/api-impl/android/content/pm/PackageParser.java new file mode 100644 index 00000000..09cac4f6 --- /dev/null +++ b/src/api-impl/android/content/pm/PackageParser.java @@ -0,0 +1,3939 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.content.ComponentName; +import android.content.res.AssetManager; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.os.Build; +import android.os.Bundle; +import android.os.PatternMatcher; +import android.os.UserHandle; +import android.util.AttributeSet; +import android.util.Base64; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.Slog; +import android.util.TypedValue; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.lang.ref.WeakReference; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PublicKey; +import java.security.cert.Certificate; +import java.security.cert.CertificateEncodingException; +import java.security.spec.EncodedKeySpec; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.X509EncodedKeySpec; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.zip.ZipEntry; + +import com.android.internal.util.XmlUtils; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +/** + * Package archive parsing + * + * {@hide} + */ +public class PackageParser { + private static final boolean DEBUG_JAR = false; + private static final boolean DEBUG_PARSER = false; + private static final boolean DEBUG_BACKUP = false; + + /** File name in an APK for the Android manifest. */ + private static final String ANDROID_MANIFEST_FILENAME = "AndroidManifest.xml"; + + /** @hide */ + public static class NewPermissionInfo { + public final String name; + public final int sdkVersion; + public final int fileVersion; + + public NewPermissionInfo(String name, int sdkVersion, int fileVersion) { + this.name = name; + this.sdkVersion = sdkVersion; + this.fileVersion = fileVersion; + } + } + + /** @hide */ + public static class SplitPermissionInfo { + public final String rootPerm; + public final String[] newPerms; + public final int targetSdk; + + public SplitPermissionInfo(String rootPerm, String[] newPerms, int targetSdk) { + this.rootPerm = rootPerm; + this.newPerms = newPerms; + this.targetSdk = targetSdk; + } + } + + /** + * List of new permissions that have been added since 1.0. + * NOTE: These must be declared in SDK version order, with permissions + * added to older SDKs appearing before those added to newer SDKs. + * If sdkVersion is 0, then this is not a permission that we want to + * automatically add to older apps, but we do want to allow it to be + * granted during a platform update. + * @hide + */ + public static final PackageParser.NewPermissionInfo NEW_PERMISSIONS[] = + new PackageParser.NewPermissionInfo[] { + new PackageParser.NewPermissionInfo(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, + android.os.Build.VERSION_CODES.DONUT, 0), + new PackageParser.NewPermissionInfo(android.Manifest.permission.READ_PHONE_STATE, + android.os.Build.VERSION_CODES.DONUT, 0) + }; + + /** + * List of permissions that have been split into more granular or dependent + * permissions. + * @hide + */ + public static final PackageParser.SplitPermissionInfo SPLIT_PERMISSIONS[] = + new PackageParser.SplitPermissionInfo[] { + // READ_EXTERNAL_STORAGE is always required when an app requests + // WRITE_EXTERNAL_STORAGE, because we can't have an app that has + // write access without read access. The hack here with the target + // target SDK version ensures that this grant is always done. + new PackageParser.SplitPermissionInfo(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, + new String[] { android.Manifest.permission.READ_EXTERNAL_STORAGE }, + android.os.Build.VERSION_CODES.CUR_DEVELOPMENT+1), + new PackageParser.SplitPermissionInfo(android.Manifest.permission.READ_CONTACTS, + new String[] { android.Manifest.permission.READ_CALL_LOG }, + android.os.Build.VERSION_CODES.JELLY_BEAN), + new PackageParser.SplitPermissionInfo(android.Manifest.permission.WRITE_CONTACTS, + new String[] { android.Manifest.permission.WRITE_CALL_LOG }, + android.os.Build.VERSION_CODES.JELLY_BEAN) + }; + + private String mArchiveSourcePath; + private String[] mSeparateProcesses; + private boolean mOnlyCoreApps; + private static final int SDK_VERSION = Build.VERSION.SDK_INT; + private static final String SDK_CODENAME = "REL".equals(Build.VERSION.CODENAME) + ? null : Build.VERSION.CODENAME; + + private int mParseError = PackageManager.INSTALL_SUCCEEDED; + + private static final Object mSync = new Object(); + private static WeakReference mReadBuffer; + + private static boolean sCompatibilityModeEnabled = true; + private static final int PARSE_DEFAULT_INSTALL_LOCATION = + PackageInfo.INSTALL_LOCATION_UNSPECIFIED; + + static class ParsePackageItemArgs { + final Package owner; + final String[] outError; + final int nameRes; + final int labelRes; + final int iconRes; + final int logoRes; + + String tag; + TypedArray sa; + + ParsePackageItemArgs(Package _owner, String[] _outError, + int _nameRes, int _labelRes, int _iconRes, int _logoRes) { + owner = _owner; + outError = _outError; + nameRes = _nameRes; + labelRes = _labelRes; + iconRes = _iconRes; + logoRes = _logoRes; + } + } + + static class ParseComponentArgs extends ParsePackageItemArgs { + final String[] sepProcesses; + final int processRes; + final int descriptionRes; + final int enabledRes; + int flags; + + ParseComponentArgs(Package _owner, String[] _outError, + int _nameRes, int _labelRes, int _iconRes, int _logoRes, + String[] _sepProcesses, int _processRes, + int _descriptionRes, int _enabledRes) { + super(_owner, _outError, _nameRes, _labelRes, _iconRes, _logoRes); + sepProcesses = _sepProcesses; + processRes = _processRes; + descriptionRes = _descriptionRes; + enabledRes = _enabledRes; + } + } + + /* Light weight package info. + * @hide + */ + public static class PackageLite { + public final String packageName; + public final int versionCode; + public final int installLocation; + public final VerifierInfo[] verifiers; + + public PackageLite(String packageName, int versionCode, + int installLocation, List verifiers) { + this.packageName = packageName; + this.versionCode = versionCode; + this.installLocation = installLocation; + this.verifiers = verifiers.toArray(new VerifierInfo[verifiers.size()]); + } + } + + private ParsePackageItemArgs mParseInstrumentationArgs; + private ParseComponentArgs mParseActivityArgs; + private ParseComponentArgs mParseActivityAliasArgs; + private ParseComponentArgs mParseServiceArgs; + private ParseComponentArgs mParseProviderArgs; + + /** If set to true, we will only allow package files that exactly match + * the DTD. Otherwise, we try to get as much from the package as we + * can without failing. This should normally be set to false, to + * support extensions to the DTD in future versions. */ + private static final boolean RIGID_PARSER = false; + + private static final String TAG = "PackageParser"; + + public PackageParser(String archiveSourcePath) { + mArchiveSourcePath = archiveSourcePath; + } + + public void setSeparateProcesses(String[] procs) { + mSeparateProcesses = procs; + } + + public void setOnlyCoreApps(boolean onlyCoreApps) { + mOnlyCoreApps = onlyCoreApps; + } + + private static final boolean isPackageFilename(String name) { + return name.endsWith(".apk"); + } + + /* + public static PackageInfo generatePackageInfo(PackageParser.Package p, + int gids[], int flags, long firstInstallTime, long lastUpdateTime, + HashSet grantedPermissions) { + PackageUserState state = new PackageUserState(); + return generatePackageInfo(p, gids, flags, firstInstallTime, lastUpdateTime, + grantedPermissions, state, UserHandle.getCallingUserId()); + } + */ + + /** + * Generate and return the {@link PackageInfo} for a parsed package. + * + * @param p the parsed package. + * @param flags indicating which optional information is included. + */ + public static PackageInfo generatePackageInfo(PackageParser.Package p, + int gids[], int flags, long firstInstallTime, long lastUpdateTime, + HashSet grantedPermissions, PackageUserState state) { + + return generatePackageInfo(p, gids, flags, firstInstallTime, lastUpdateTime, + grantedPermissions, state, UserHandle.getCallingUserId()); + } + + /** + * Returns true if the package is installed and not blocked, or if the caller + * explicitly wanted all uninstalled and blocked packages as well. + */ + private static boolean checkUseInstalledOrBlocked(int flags, PackageUserState state) { + return (state.installed && !state.blocked) + || (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0; + } + + public static boolean isAvailable(PackageUserState state) { + return checkUseInstalledOrBlocked(0, state); + } + + public static PackageInfo generatePackageInfo(PackageParser.Package p, + int gids[], int flags, long firstInstallTime, long lastUpdateTime, + HashSet grantedPermissions, PackageUserState state, int userId) { + + if (!checkUseInstalledOrBlocked(flags, state)) { + return null; + } + PackageInfo pi = new PackageInfo(); + pi.packageName = p.packageName; + pi.versionCode = p.mVersionCode; + pi.versionName = p.mVersionName; + pi.sharedUserId = p.mSharedUserId; + pi.sharedUserLabel = p.mSharedUserLabel; + pi.applicationInfo = generateApplicationInfo(p, flags, state, userId); + pi.installLocation = p.installLocation; + if ((pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0 + || (pi.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { + pi.requiredForAllUsers = p.mRequiredForAllUsers; + } + pi.restrictedAccountType = p.mRestrictedAccountType; + pi.requiredAccountType = p.mRequiredAccountType; + pi.firstInstallTime = firstInstallTime; + pi.lastUpdateTime = lastUpdateTime; + if ((flags&PackageManager.GET_GIDS) != 0) { + pi.gids = gids; + } + if ((flags&PackageManager.GET_CONFIGURATIONS) != 0) { + int N = p.configPreferences.size(); + if (N > 0) { + pi.configPreferences = new ConfigurationInfo[N]; + p.configPreferences.toArray(pi.configPreferences); + } + N = p.reqFeatures != null ? p.reqFeatures.size() : 0; + if (N > 0) { + pi.reqFeatures = new FeatureInfo[N]; + p.reqFeatures.toArray(pi.reqFeatures); + } + } + if ((flags&PackageManager.GET_ACTIVITIES) != 0) { + int N = p.activities.size(); + if (N > 0) { + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.activities = new ActivityInfo[N]; + } else { + int num = 0; + for (int i=0; i 0) { + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.receivers = new ActivityInfo[N]; + } else { + int num = 0; + for (int i=0; i 0) { + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.services = new ServiceInfo[N]; + } else { + int num = 0; + for (int i=0; i 0) { + if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { + pi.providers = new ProviderInfo[N]; + } else { + int num = 0; + for (int i=0; i 0) { + pi.instrumentation = new InstrumentationInfo[N]; + for (int i=0; i 0) { + pi.permissions = new PermissionInfo[N]; + for (int i=0; i 0) { + pi.requestedPermissions = new String[N]; + pi.requestedPermissionsFlags = new int[N]; + for (int i=0; i 0) { + pi.signatures = new Signature[N]; + System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N); + } + } + return pi; + } + + private Certificate[] loadCertificates(JarFile jarFile, JarEntry je, + byte[] readBuffer) { + try { + // We must read the stream for the JarEntry to retrieve + // its certificates. + InputStream is = new BufferedInputStream(jarFile.getInputStream(je)); + while (is.read(readBuffer, 0, readBuffer.length) != -1) { + // not using + } + is.close(); + return je != null ? je.getCertificates() : null; + } catch (IOException e) { + Slog.w(TAG, "Exception reading " + je.getName() + " in " + + jarFile.getName(), e); + } catch (RuntimeException e) { + Slog.w(TAG, "Exception reading " + je.getName() + " in " + + jarFile.getName(), e); + } + return null; + } + + public final static int PARSE_IS_SYSTEM = 1<<0; + public final static int PARSE_CHATTY = 1<<1; + public final static int PARSE_MUST_BE_APK = 1<<2; + public final static int PARSE_IGNORE_PROCESSES = 1<<3; + public final static int PARSE_FORWARD_LOCK = 1<<4; + public final static int PARSE_ON_SDCARD = 1<<5; + public final static int PARSE_IS_SYSTEM_DIR = 1<<6; + public final static int PARSE_IS_PRIVILEGED = 1<<7; + + public int getParseError() { + return mParseError; + } + + public Package parsePackage(File sourceFile, String destCodePath, + DisplayMetrics metrics, int flags) {/* + mParseError = PackageManager.INSTALL_SUCCEEDED; + + mArchiveSourcePath = sourceFile.getPath(); + if (!sourceFile.isFile()) { + Slog.w(TAG, "Skipping dir: " + mArchiveSourcePath); + mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK; + return null; + } + if (!isPackageFilename(sourceFile.getName()) + && (flags&PARSE_MUST_BE_APK) != 0) { + if ((flags&PARSE_IS_SYSTEM) == 0) { + // We expect to have non-.apk files in the system dir, + // so don't warn about them. + Slog.w(TAG, "Skipping non-package file: " + mArchiveSourcePath); + } + mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK; + return null; + } + + if (DEBUG_JAR) + Slog.d(TAG, "Scanning package: " + mArchiveSourcePath); + + XmlResourceParser parser = null; + AssetManager assmgr = null; + Resources res = null; + boolean assetError = true; + try { + assmgr = new AssetManager(); + int cookie = assmgr.addAssetPath(mArchiveSourcePath); + if (cookie != 0) { + res = new Resources(assmgr, metrics, null); + assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + Build.VERSION.RESOURCES_SDK_INT); + parser = assmgr.openXmlResourceParser(cookie, ANDROID_MANIFEST_FILENAME); + assetError = false; + } else { + Slog.w(TAG, "Failed adding asset path:"+mArchiveSourcePath); + } + } catch (Exception e) { + Slog.w(TAG, "Unable to read AndroidManifest.xml of " + + mArchiveSourcePath, e); + } + if (assetError) { + if (assmgr != null) assmgr.close(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST; + return null; + } + String[] errorText = new String[1]; + Package pkg = null; + Exception errorException = null; + try { + // XXXX todo: need to figure out correct configuration. + pkg = parsePackage(res, parser, flags, errorText); + } catch (Exception e) { + errorException = e; + mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION; + } + + + if (pkg == null) { + // If we are only parsing core apps, then a null with INSTALL_SUCCEEDED + // just means to skip this app so don't make a fuss about it. + if (!mOnlyCoreApps || mParseError != PackageManager.INSTALL_SUCCEEDED) { + if (errorException != null) { + Slog.w(TAG, mArchiveSourcePath, errorException); + } else { + Slog.w(TAG, mArchiveSourcePath + " (at " + + parser.getPositionDescription() + + "): " + errorText[0]); + } + if (mParseError == PackageManager.INSTALL_SUCCEEDED) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + } + } + parser.close(); + assmgr.close(); + return null; + } + + parser.close(); + assmgr.close(); + + // Set code and resource paths + pkg.mPath = destCodePath; + pkg.mScanPath = mArchiveSourcePath; + //pkg.applicationInfo.sourceDir = destCodePath; + //pkg.applicationInfo.publicSourceDir = destRes; + pkg.mSignatures = null; + + return pkg; + */return null; + } + + /** + * Gathers the {@link ManifestDigest} for {@code pkg} if it exists in the + * APK. If it successfully scanned the package and found the + * {@code AndroidManifest.xml}, {@code true} is returned. + */ + public boolean collectManifestDigest(Package pkg) { + try { + final JarFile jarFile = new JarFile(mArchiveSourcePath); + try { + final ZipEntry je = jarFile.getEntry(ANDROID_MANIFEST_FILENAME); + if (je != null) { + pkg.manifestDigest = ManifestDigest.fromInputStream(jarFile.getInputStream(je)); + } + } finally { + jarFile.close(); + } + return true; + } catch (IOException e) { + return false; + } + } + + public boolean collectCertificates(Package pkg, int flags) { + pkg.mSignatures = null; + + WeakReference readBufferRef; + byte[] readBuffer = null; + synchronized (mSync) { + readBufferRef = mReadBuffer; + if (readBufferRef != null) { + mReadBuffer = null; + readBuffer = readBufferRef.get(); + } + if (readBuffer == null) { + readBuffer = new byte[8192]; + readBufferRef = new WeakReference(readBuffer); + } + } + + try { + JarFile jarFile = new JarFile(mArchiveSourcePath); + + Certificate[] certs = null; + + if ((flags&PARSE_IS_SYSTEM) != 0) { + // If this package comes from the system image, then we + // can trust it... we'll just use the AndroidManifest.xml + // to retrieve its signatures, not validating all of the + // files. + JarEntry jarEntry = jarFile.getJarEntry(ANDROID_MANIFEST_FILENAME); + certs = loadCertificates(jarFile, jarEntry, readBuffer); + if (certs == null) { + Slog.e(TAG, "Package " + pkg.packageName + + " has no certificates at entry " + + jarEntry.getName() + "; ignoring!"); + jarFile.close(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES; + return false; + } + if (DEBUG_JAR) { + Slog.i(TAG, "File " + mArchiveSourcePath + ": entry=" + jarEntry + + " certs=" + (certs != null ? certs.length : 0)); + if (certs != null) { + final int N = certs.length; + for (int i=0; i entries = jarFile.entries(); + while (entries.hasMoreElements()) { + final JarEntry je = entries.nextElement(); + if (je.isDirectory()) continue; + + final String name = je.getName(); + + if (name.startsWith("META-INF/")) + continue; + + if (ANDROID_MANIFEST_FILENAME.equals(name)) { + pkg.manifestDigest = + ManifestDigest.fromInputStream(jarFile.getInputStream(je)); + } + + final Certificate[] localCerts = loadCertificates(jarFile, je, readBuffer); + if (DEBUG_JAR) { + Slog.i(TAG, "File " + mArchiveSourcePath + " entry " + je.getName() + + ": certs=" + certs + " (" + + (certs != null ? certs.length : 0) + ")"); + } + + if (localCerts == null) { + Slog.e(TAG, "Package " + pkg.packageName + + " has no certificates at entry " + + je.getName() + "; ignoring!"); + jarFile.close(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES; + return false; + } else if (certs == null) { + certs = localCerts; + } else { + // Ensure all certificates match. + for (int i=0; i 0) { + final int N = certs.length; + pkg.mSignatures = new Signature[certs.length]; + for (int i=0; i(); + for (int i=0; i < certs.length; i++) { + pkg.mSigningKeys.add(certs[i].getPublicKey()); + } + + } catch (CertificateEncodingException e) { + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); + mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; + return false; + } catch (IOException e) { + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); + mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; + return false; + } catch (RuntimeException e) { + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); + mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION; + return false; + } + + return true; + } + + /* + * Utility method that retrieves just the package name and install + * location from the apk location at the given file path. + * @param packageFilePath file location of the apk + * @param flags Special parse flags + * @return PackageLite object with package information or null on failure. + */ + public static PackageLite parsePackageLite(String packageFilePath, int flags) {/* + AssetManager assmgr = null; + final XmlResourceParser parser; + final Resources res; + try { + assmgr = new AssetManager(); + assmgr.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + Build.VERSION.RESOURCES_SDK_INT); + + int cookie = assmgr.addAssetPath(packageFilePath); + if (cookie == 0) { + return null; + } + + final DisplayMetrics metrics = new DisplayMetrics(); + metrics.setToDefaults(); + res = new Resources(assmgr, metrics, null); + parser = assmgr.openXmlResourceParser(cookie, ANDROID_MANIFEST_FILENAME); + } catch (Exception e) { + if (assmgr != null) assmgr.close(); + Slog.w(TAG, "Unable to read AndroidManifest.xml of " + + packageFilePath, e); + return null; + } + + final AttributeSet attrs = parser; + final String errors[] = new String[1]; + PackageLite packageLite = null; + try { + packageLite = parsePackageLite(res, parser, attrs, flags, errors); + } catch (IOException e) { + Slog.w(TAG, packageFilePath, e); + } catch (XmlPullParserException e) { + Slog.w(TAG, packageFilePath, e); + } finally { + if (parser != null) parser.close(); + if (assmgr != null) assmgr.close(); + } + if (packageLite == null) { + Slog.e(TAG, "parsePackageLite error: " + errors[0]); + return null; + } + return packageLite; + */return null;} + + private static String validateName(String name, boolean requiresSeparator) { + final int N = name.length(); + boolean hasSep = false; + boolean front = true; + for (int i=0; i= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { + front = false; + continue; + } + if (!front) { + if ((c >= '0' && c <= '9') || c == '_') { + continue; + } + } + if (c == '.') { + hasSep = true; + front = true; + continue; + } + return "bad character '" + c + "'"; + } + return hasSep || !requiresSeparator + ? null : "must have at least one '.' separator"; + } + + private static String parsePackageName(XmlPullParser parser, + AttributeSet attrs, int flags, String[] outError) + throws IOException, XmlPullParserException { + + int type; + while ((type = parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { + ; + } + + if (type != XmlPullParser.START_TAG) { + outError[0] = "No start tag found"; + return null; + } + if (DEBUG_PARSER) + Slog.v(TAG, "Root element name: '" + parser.getName() + "'"); + if (!parser.getName().equals("manifest")) { + outError[0] = "No tag"; + return null; + } + String pkgName = attrs.getAttributeValue(null, "package"); + if (pkgName == null || pkgName.length() == 0) { + outError[0] = " does not specify package"; + return null; + } + String nameError = validateName(pkgName, true); + if (nameError != null && !"android".equals(pkgName)) { + outError[0] = " specifies bad package name \"" + + pkgName + "\": " + nameError; + return null; + } + + return pkgName.intern(); + } + + private static PackageLite parsePackageLite(Resources res, XmlPullParser parser, + AttributeSet attrs, int flags, String[] outError) throws IOException, + XmlPullParserException { + + int type; + while ((type = parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { + ; + } + + if (type != XmlPullParser.START_TAG) { + outError[0] = "No start tag found"; + return null; + } + if (DEBUG_PARSER) + Slog.v(TAG, "Root element name: '" + parser.getName() + "'"); + if (!parser.getName().equals("manifest")) { + outError[0] = "No tag"; + return null; + } + String pkgName = attrs.getAttributeValue(null, "package"); + if (pkgName == null || pkgName.length() == 0) { + outError[0] = " does not specify package"; + return null; + } + String nameError = validateName(pkgName, true); + if (nameError != null && !"android".equals(pkgName)) { + outError[0] = " specifies bad package name \"" + + pkgName + "\": " + nameError; + return null; + } + int installLocation = PARSE_DEFAULT_INSTALL_LOCATION; + int versionCode = 0; + int numFound = 0; + for (int i = 0; i < attrs.getAttributeCount(); i++) { + String attr = attrs.getAttributeName(i); + if (attr.equals("installLocation")) { + installLocation = attrs.getAttributeIntValue(i, + PARSE_DEFAULT_INSTALL_LOCATION); + numFound++; + } else if (attr.equals("versionCode")) { + versionCode = attrs.getAttributeIntValue(i, 0); + numFound++; + } + if (numFound >= 2) { + break; + } + } + + // Only search the tree when the tag is directly below + final int searchDepth = parser.getDepth() + 1; + + final List verifiers = new ArrayList(); + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() >= searchDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + if (parser.getDepth() == searchDepth && "package-verifier".equals(parser.getName())) { + final VerifierInfo verifier = parseVerifier(res, parser, attrs, flags, outError); + if (verifier != null) { + verifiers.add(verifier); + } + } + } + + return new PackageLite(pkgName.intern(), versionCode, installLocation, verifiers); + } + + /** + * Temporary. + */ + static public Signature stringToSignature(String str) { + final int N = str.length(); + byte[] sig = new byte[N]; + for (int i=0; i 0) { + String nameError = validateName(str, true); + if (nameError != null && !"android".equals(pkgName)) { + outError[0] = " specifies bad sharedUserId name \"" + + str + "\": " + nameError; + mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID; + return null; + } + pkg.mSharedUserId = str.intern(); + pkg.mSharedUserLabel = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifest_sharedUserLabel, 0); + } + sa.recycle(); + + pkg.installLocation = sa.getInteger( + com.android.internal.R.styleable.AndroidManifest_installLocation, + PARSE_DEFAULT_INSTALL_LOCATION); + pkg.applicationInfo.installLocation = pkg.installLocation; + + /* Set the global "forward lock" flag */ + if ((flags & PARSE_FORWARD_LOCK) != 0) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_FORWARD_LOCK; + } + + /* Set the global "on SD card" flag */ + if ((flags & PARSE_ON_SDCARD) != 0) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_EXTERNAL_STORAGE; + } + + // Resource boolean are -1, so 1 means we don't know the value. + int supportsSmallScreens = 1; + int supportsNormalScreens = 1; + int supportsLargeScreens = 1; + int supportsXLargeScreens = 1; + int resizeable = 1; + int anyDensity = 1; + + int outerDepth = parser.getDepth(); + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + String tagName = parser.getName(); + if (tagName.equals("application")) { + if (foundApp) { + if (RIGID_PARSER) { + outError[0] = " has more than one "; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } else { + Slog.w(TAG, " has more than one "); + XmlUtils.skipCurrentTag(parser); + continue; + } + } + + foundApp = true; + if (!parseApplication(pkg, res, parser, attrs, flags, outError)) { + return null; + } + } else if (tagName.equals("keys")) { + if (!parseKeys(pkg, res, parser, attrs, outError)) { + return null; + } + } else if (tagName.equals("permission-group")) { + if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) { + return null; + } + } else if (tagName.equals("permission")) { + if (parsePermission(pkg, res, parser, attrs, outError) == null) { + return null; + } + } else if (tagName.equals("permission-tree")) { + if (parsePermissionTree(pkg, res, parser, attrs, outError) == null) { + return null; + } + } else if (tagName.equals("uses-permission")) { + if (!parseUsesPermission(pkg, res, parser, attrs, outError)) { + return null; + } + + }/* else if (tagName.equals("uses-configuration")) { + ConfigurationInfo cPref = new ConfigurationInfo(); + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestUsesConfiguration); + cPref.reqTouchScreen = sa.getInt( + com.android.internal.R.styleable.AndroidManifestUsesConfiguration_reqTouchScreen, + Configuration.TOUCHSCREEN_UNDEFINED); + cPref.reqKeyboardType = sa.getInt( + com.android.internal.R.styleable.AndroidManifestUsesConfiguration_reqKeyboardType, + Configuration.KEYBOARD_UNDEFINED); + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestUsesConfiguration_reqHardKeyboard, + false)) { + cPref.reqInputFeatures |= ConfigurationInfo.INPUT_FEATURE_HARD_KEYBOARD; + } + cPref.reqNavigation = sa.getInt( + com.android.internal.R.styleable.AndroidManifestUsesConfiguration_reqNavigation, + Configuration.NAVIGATION_UNDEFINED); + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestUsesConfiguration_reqFiveWayNav, + false)) { + cPref.reqInputFeatures |= ConfigurationInfo.INPUT_FEATURE_FIVE_WAY_NAV; + } + sa.recycle(); + pkg.configPreferences.add(cPref); + + XmlUtils.skipCurrentTag(parser); + + } */else if (tagName.equals("uses-feature")) { + FeatureInfo fi = new FeatureInfo(); + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestUsesFeature); + // Note: don't allow this value to be a reference to a resource + // that may change. + fi.name = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestUsesFeature_name); + if (fi.name == null) { + fi.reqGlEsVersion = sa.getInt( + com.android.internal.R.styleable.AndroidManifestUsesFeature_glEsVersion, + FeatureInfo.GL_ES_VERSION_UNDEFINED); + } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestUsesFeature_required, + true)) { + fi.flags |= FeatureInfo.FLAG_REQUIRED; + } + sa.recycle(); + if (pkg.reqFeatures == null) { + pkg.reqFeatures = new ArrayList(); + } + pkg.reqFeatures.add(fi); + + if (fi.name == null) { + ConfigurationInfo cPref = new ConfigurationInfo(); + cPref.reqGlEsVersion = fi.reqGlEsVersion; + pkg.configPreferences.add(cPref); + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("uses-sdk")) { + if (SDK_VERSION > 0) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestUsesSdk); + + int minVers = 0; + String minCode = null; + int targetVers = 0; + String targetCode = null; + + TypedValue val = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestUsesSdk_minSdkVersion); + if (val != null) { + if (val.type == TypedValue.TYPE_STRING && val.string != null) { + targetCode = minCode = val.string.toString(); + } else { + // If it's not a string, it's an integer. + targetVers = minVers = val.data; + } + } + + val = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestUsesSdk_targetSdkVersion); + if (val != null) { + if (val.type == TypedValue.TYPE_STRING && val.string != null) { + targetCode = minCode = val.string.toString(); + } else { + // If it's not a string, it's an integer. + targetVers = val.data; + } + } + + sa.recycle(); + + if (minCode != null) { + if (!minCode.equals(SDK_CODENAME)) { + if (SDK_CODENAME != null) { + outError[0] = "Requires development platform " + minCode + + " (current platform is " + SDK_CODENAME + ")"; + } else { + outError[0] = "Requires development platform " + minCode + + " but this is a release platform."; + } + mParseError = PackageManager.INSTALL_FAILED_OLDER_SDK; + return null; + } + } else if (minVers > SDK_VERSION) { + outError[0] = "Requires newer sdk version #" + minVers + + " (current version is #" + SDK_VERSION + ")"; + mParseError = PackageManager.INSTALL_FAILED_OLDER_SDK; + return null; + } + + if (targetCode != null) { + if (!targetCode.equals(SDK_CODENAME)) { + if (SDK_CODENAME != null) { + outError[0] = "Requires development platform " + targetCode + + " (current platform is " + SDK_CODENAME + ")"; + } else { + outError[0] = "Requires development platform " + targetCode + + " but this is a release platform."; + } + mParseError = PackageManager.INSTALL_FAILED_OLDER_SDK; + return null; + } + // If the code matches, it definitely targets this SDK. + pkg.applicationInfo.targetSdkVersion + = android.os.Build.VERSION_CODES.CUR_DEVELOPMENT; + } else { + pkg.applicationInfo.targetSdkVersion = targetVers; + } + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("supports-screens")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestSupportsScreens); + + pkg.applicationInfo.requiresSmallestWidthDp = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_requiresSmallestWidthDp, + 0); + pkg.applicationInfo.compatibleWidthLimitDp = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_compatibleWidthLimitDp, + 0); + pkg.applicationInfo.largestWidthLimitDp = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_largestWidthLimitDp, + 0); + + // This is a trick to get a boolean and still able to detect + // if a value was actually set. + supportsSmallScreens = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_smallScreens, + supportsSmallScreens); + supportsNormalScreens = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_normalScreens, + supportsNormalScreens); + supportsLargeScreens = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_largeScreens, + supportsLargeScreens); + supportsXLargeScreens = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_xlargeScreens, + supportsXLargeScreens); + resizeable = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_resizeable, + resizeable); + anyDensity = sa.getInteger( + com.android.internal.R.styleable.AndroidManifestSupportsScreens_anyDensity, + anyDensity); + + sa.recycle(); + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("protected-broadcast")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestProtectedBroadcast); + + // Note: don't allow this value to be a reference to a resource + // that may change. + String name = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestProtectedBroadcast_name); + + sa.recycle(); + + if (name != null && (flags&PARSE_IS_SYSTEM) != 0) { + if (pkg.protectedBroadcasts == null) { + pkg.protectedBroadcasts = new ArrayList(); + } + if (!pkg.protectedBroadcasts.contains(name)) { + pkg.protectedBroadcasts.add(name.intern()); + } + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("instrumentation")) { + if (parseInstrumentation(pkg, res, parser, attrs, outError) == null) { + return null; + } + + } else if (tagName.equals("original-package")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestOriginalPackage); + + String orig =sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestOriginalPackage_name, 0); + if (!pkg.packageName.equals(orig)) { + if (pkg.mOriginalPackages == null) { + pkg.mOriginalPackages = new ArrayList(); + pkg.mRealPackage = pkg.packageName; + } + pkg.mOriginalPackages.add(orig); + } + + sa.recycle(); + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("adopt-permissions")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestOriginalPackage); + + String name = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestOriginalPackage_name, 0); + + sa.recycle(); + + if (name != null) { + if (pkg.mAdoptPermissions == null) { + pkg.mAdoptPermissions = new ArrayList(); + } + pkg.mAdoptPermissions.add(name); + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("uses-gl-texture")) { + // Just skip this tag + XmlUtils.skipCurrentTag(parser); + continue; + + } else if (tagName.equals("compatible-screens")) { + // Just skip this tag + XmlUtils.skipCurrentTag(parser); + continue; + } else if (tagName.equals("supports-input")) { + XmlUtils.skipCurrentTag(parser); + continue; + + } else if (tagName.equals("eat-comment")) { + // Just skip this tag + XmlUtils.skipCurrentTag(parser); + continue; + + } else if (RIGID_PARSER) { + outError[0] = "Bad element under : " + + parser.getName(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + + } else { + Slog.w(TAG, "Unknown element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } + } + + if (!foundApp && pkg.instrumentation.size() == 0) { + outError[0] = " does not contain an or "; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_EMPTY; + } + + final int NP = PackageParser.NEW_PERMISSIONS.length; + StringBuilder implicitPerms = null; + for (int ip=0; ip= npi.sdkVersion) { + break; + } + if (!pkg.requestedPermissions.contains(npi.name)) { + if (implicitPerms == null) { + implicitPerms = new StringBuilder(128); + implicitPerms.append(pkg.packageName); + implicitPerms.append(": compat added "); + } else { + implicitPerms.append(' '); + } + implicitPerms.append(npi.name); + pkg.requestedPermissions.add(npi.name); + pkg.requestedPermissionsRequired.add(Boolean.TRUE); + } + } + if (implicitPerms != null) { + Slog.i(TAG, implicitPerms.toString()); + } + + final int NS = PackageParser.SPLIT_PERMISSIONS.length; + for (int is=0; is= spi.targetSdk + || !pkg.requestedPermissions.contains(spi.rootPerm)) { + continue; + } + for (int in=0; in 0 + && pkg.applicationInfo.targetSdkVersion + >= android.os.Build.VERSION_CODES.DONUT)) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS; + } + if (supportsNormalScreens != 0) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS; + } + if (supportsLargeScreens < 0 || (supportsLargeScreens > 0 + && pkg.applicationInfo.targetSdkVersion + >= android.os.Build.VERSION_CODES.DONUT)) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS; + } + if (supportsXLargeScreens < 0 || (supportsXLargeScreens > 0 + && pkg.applicationInfo.targetSdkVersion + >= android.os.Build.VERSION_CODES.GINGERBREAD)) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS; + } + if (resizeable < 0 || (resizeable > 0 + && pkg.applicationInfo.targetSdkVersion + >= android.os.Build.VERSION_CODES.DONUT)) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS; + } + if (anyDensity < 0 || (anyDensity > 0 + && pkg.applicationInfo.targetSdkVersion + >= android.os.Build.VERSION_CODES.DONUT)) { + pkg.applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES; + } + + /* + * b/8528162: Ignore the attribute if + * targetSdkVersion < JELLY_BEAN_MR2. There are lots of apps in the wild + * which are improperly using this attribute, even though it never worked. + */ + if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2) { + for (int i = 0; i < pkg.requestedPermissionsRequired.size(); i++) { + pkg.requestedPermissionsRequired.set(i, Boolean.TRUE); + } + } + + return pkg; + } + + private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser, + AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestUsesPermission); + + // Note: don't allow this value to be a reference to a resource + // that may change. + String name = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestUsesPermission_name); +/* + boolean required = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestUsesPermission_required, true); +*/ + boolean required = true; // Optional not supported + + int maxSdkVersion = 0; + TypedValue val = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestUsesPermission_maxSdkVersion); + if (val != null) { + if (val.type >= TypedValue.TYPE_FIRST_INT && val.type <= TypedValue.TYPE_LAST_INT) { + maxSdkVersion = val.data; + } + } + + sa.recycle(); + + if ((maxSdkVersion == 0) || (maxSdkVersion >= Build.VERSION.RESOURCES_SDK_INT)) { + if (name != null) { + int index = pkg.requestedPermissions.indexOf(name); + if (index == -1) { + pkg.requestedPermissions.add(name.intern()); + pkg.requestedPermissionsRequired.add(required ? Boolean.TRUE : Boolean.FALSE); + } else { + if (pkg.requestedPermissionsRequired.get(index) != required) { + outError[0] = "conflicting entries"; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + } + } + } + + XmlUtils.skipCurrentTag(parser); + return true; + } + + private static String buildClassName(String pkg, CharSequence clsSeq, + String[] outError) { + if (clsSeq == null || clsSeq.length() <= 0) { + outError[0] = "Empty class name in package " + pkg; + return null; + } + String cls = clsSeq.toString(); + char c = cls.charAt(0); + if (c == '.') { + return (pkg + cls).intern(); + } + if (cls.indexOf('.') < 0) { + StringBuilder b = new StringBuilder(pkg); + b.append('.'); + b.append(cls); + return b.toString().intern(); + } + if (c >= 'a' && c <= 'z') { + return cls.intern(); + } + outError[0] = "Bad class name " + cls + " in package " + pkg; + return null; + } + + private static String buildCompoundName(String pkg, + CharSequence procSeq, String type, String[] outError) { + String proc = procSeq.toString(); + char c = proc.charAt(0); + if (pkg != null && c == ':') { + if (proc.length() < 2) { + outError[0] = "Bad " + type + " name " + proc + " in package " + pkg + + ": must be at least two characters"; + return null; + } + String subName = proc.substring(1); + String nameError = validateName(subName, false); + if (nameError != null) { + outError[0] = "Invalid " + type + " name " + proc + " in package " + + pkg + ": " + nameError; + return null; + } + return (pkg + proc).intern(); + } + String nameError = validateName(proc, true); + if (nameError != null && !"system".equals(proc)) { + outError[0] = "Invalid " + type + " name " + proc + " in package " + + pkg + ": " + nameError; + return null; + } + return proc.intern(); + } + + private static String buildProcessName(String pkg, String defProc, + CharSequence procSeq, int flags, String[] separateProcesses, + String[] outError) { + if ((flags&PARSE_IGNORE_PROCESSES) != 0 && !"system".equals(procSeq)) { + return defProc != null ? defProc : pkg; + } + if (separateProcesses != null) { + for (int i=separateProcesses.length-1; i>=0; i--) { + String sp = separateProcesses[i]; + if (sp.equals(pkg) || sp.equals(defProc) || sp.equals(procSeq)) { + return pkg; + } + } + } + if (procSeq == null || procSeq.length() <= 0) { + return defProc; + } + return buildCompoundName(pkg, procSeq, "process", outError); + } + + private static String buildTaskAffinityName(String pkg, String defProc, + CharSequence procSeq, String[] outError) { + if (procSeq == null) { + return defProc; + } + if (procSeq.length() <= 0) { + return null; + } + return buildCompoundName(pkg, procSeq, "taskAffinity", outError); + } + + private boolean parseKeys(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + // we've encountered the 'keys' tag + // all the keys and keysets that we want must be defined here + // so we're going to iterate over the parser and pull out the things we want + int outerDepth = parser.getDepth(); + + int type; + PublicKey currentKey = null; + int currentKeyDepth = -1; + Map> definedKeySets = new HashMap>(); + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG) { + if (parser.getDepth() == currentKeyDepth) { + currentKey = null; + currentKeyDepth = -1; + } + continue; + } + String tagname = parser.getName(); + if (tagname.equals("publicKey")) { + final TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.PublicKey); + final String encodedKey = sa.getNonResourceString( + com.android.internal.R.styleable.PublicKey_value); + currentKey = parsePublicKey(encodedKey); + if (currentKey == null) { + Slog.w(TAG, "No valid key in 'publicKey' tag at " + + parser.getPositionDescription()); + sa.recycle(); + continue; + } + currentKeyDepth = parser.getDepth(); + definedKeySets.put(currentKey, new HashSet()); + sa.recycle(); + } else if (tagname.equals("keyset")) { + if (currentKey == null) { + Slog.i(TAG, "'keyset' not in 'publicKey' tag at " + + parser.getPositionDescription()); + continue; + } + final TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.KeySet); + final String name = sa.getNonResourceString( + com.android.internal.R.styleable.KeySet_name); + definedKeySets.get(currentKey).add(name); + sa.recycle(); + } else if (RIGID_PARSER) { + Slog.w(TAG, "Bad element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + return false; + } else { + Slog.w(TAG, "Unknown element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } + } + + owner.mKeySetMapping = new HashMap>(); + for (Map.Entry> e : definedKeySets.entrySet()) { + PublicKey key = e.getKey(); + Set keySetNames = e.getValue(); + for (String alias : keySetNames) { + if (owner.mKeySetMapping.containsKey(alias)) { + owner.mKeySetMapping.get(alias).add(key); + } else { + Set keys = new HashSet(); + keys.add(key); + owner.mKeySetMapping.put(alias, keys); + } + } + } + + return true; + } + + private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + PermissionGroup perm = new PermissionGroup(owner); + + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestPermissionGroup); + + if (!parsePackageItemInfo(owner, perm.info, outError, + "", sa, + com.android.internal.R.styleable.AndroidManifestPermissionGroup_name, + com.android.internal.R.styleable.AndroidManifestPermissionGroup_label, + com.android.internal.R.styleable.AndroidManifestPermissionGroup_icon, + com.android.internal.R.styleable.AndroidManifestPermissionGroup_logo)) { + sa.recycle(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + perm.info.descriptionRes = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestPermissionGroup_description, + 0); + perm.info.flags = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); + perm.info.priority = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); + if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) == 0) { + perm.info.priority = 0; + } + + sa.recycle(); + + if (!parseAllMetaData(res, parser, attrs, "", perm, + outError)) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + owner.permissionGroups.add(perm); + + return perm; + } + + private Permission parsePermission(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + Permission perm = new Permission(owner); + + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestPermission); + + if (!parsePackageItemInfo(owner, perm.info, outError, + "", sa, + com.android.internal.R.styleable.AndroidManifestPermission_name, + com.android.internal.R.styleable.AndroidManifestPermission_label, + com.android.internal.R.styleable.AndroidManifestPermission_icon, + com.android.internal.R.styleable.AndroidManifestPermission_logo)) { + sa.recycle(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + // Note: don't allow this value to be a reference to a resource + // that may change. + perm.info.group = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestPermission_permissionGroup); + if (perm.info.group != null) { + perm.info.group = perm.info.group.intern(); + } + + perm.info.descriptionRes = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestPermission_description, + 0); + + perm.info.protectionLevel = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermission_protectionLevel, + PermissionInfo.PROTECTION_NORMAL); + + perm.info.flags = sa.getInt( + com.android.internal.R.styleable.AndroidManifestPermission_permissionFlags, 0); + + sa.recycle(); + + if (perm.info.protectionLevel == -1) { + outError[0] = " does not specify protectionLevel"; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + perm.info.protectionLevel = PermissionInfo.fixProtectionLevel(perm.info.protectionLevel); + + if ((perm.info.protectionLevel&PermissionInfo.PROTECTION_MASK_FLAGS) != 0) { + if ((perm.info.protectionLevel&PermissionInfo.PROTECTION_MASK_BASE) != + PermissionInfo.PROTECTION_SIGNATURE) { + outError[0] = " protectionLevel specifies a flag but is " + + "not based on signature type"; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + } + + if (!parseAllMetaData(res, parser, attrs, "", perm, + outError)) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + owner.permissions.add(perm); + + return perm; + } + + private Permission parsePermissionTree(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + Permission perm = new Permission(owner); + + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestPermissionTree); + + if (!parsePackageItemInfo(owner, perm.info, outError, + "", sa, + com.android.internal.R.styleable.AndroidManifestPermissionTree_name, + com.android.internal.R.styleable.AndroidManifestPermissionTree_label, + com.android.internal.R.styleable.AndroidManifestPermissionTree_icon, + com.android.internal.R.styleable.AndroidManifestPermissionTree_logo)) { + sa.recycle(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + sa.recycle(); + + int index = perm.info.name.indexOf('.'); + if (index > 0) { + index = perm.info.name.indexOf('.', index+1); + } + if (index < 0) { + outError[0] = " name has less than three segments: " + + perm.info.name; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + perm.info.descriptionRes = 0; + perm.info.protectionLevel = PermissionInfo.PROTECTION_NORMAL; + perm.tree = true; + + if (!parseAllMetaData(res, parser, attrs, "", perm, + outError)) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + owner.permissions.add(perm); + + return perm; + } + + private Instrumentation parseInstrumentation(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, String[] outError) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestInstrumentation); + + if (mParseInstrumentationArgs == null) { + mParseInstrumentationArgs = new ParsePackageItemArgs(owner, outError, + com.android.internal.R.styleable.AndroidManifestInstrumentation_name, + com.android.internal.R.styleable.AndroidManifestInstrumentation_label, + com.android.internal.R.styleable.AndroidManifestInstrumentation_icon, + com.android.internal.R.styleable.AndroidManifestInstrumentation_logo); + mParseInstrumentationArgs.tag = ""; + } + + mParseInstrumentationArgs.sa = sa; + + Instrumentation a = new Instrumentation(mParseInstrumentationArgs, + new InstrumentationInfo()); + if (outError[0] != null) { + sa.recycle(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + String str; + // Note: don't allow this value to be a reference to a resource + // that may change. + str = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestInstrumentation_targetPackage); + a.info.targetPackage = str != null ? str.intern() : null; + + a.info.handleProfiling = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestInstrumentation_handleProfiling, + false); + + a.info.functionalTest = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestInstrumentation_functionalTest, + false); + + sa.recycle(); + + if (a.info.targetPackage == null) { + outError[0] = " does not specify targetPackage"; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + if (!parseAllMetaData(res, parser, attrs, "", a, + outError)) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return null; + } + + owner.instrumentation.add(a); + + return a; + } + + private boolean parseApplication(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, int flags, String[] outError) + throws XmlPullParserException, IOException { + final ApplicationInfo ai = owner.applicationInfo; + final String pkgName = owner.applicationInfo.packageName; + + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestApplication); + + String name = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_name, 0); + if (name != null) { + ai.className = buildClassName(pkgName, name, outError); + if (ai.className == null) { + sa.recycle(); + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + } + + String manageSpaceActivity = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_manageSpaceActivity, + Configuration.NATIVE_CONFIG_VERSION); + if (manageSpaceActivity != null) { + ai.manageSpaceActivityName = buildClassName(pkgName, manageSpaceActivity, + outError); + } + + boolean allowBackup = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_allowBackup, true); + if (allowBackup) { + ai.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP; + + // backupAgent, killAfterRestore, and restoreAnyVersion are only relevant + // if backup is possible for the given application. + String backupAgent = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_backupAgent, + Configuration.NATIVE_CONFIG_VERSION); + if (backupAgent != null) { + ai.backupAgentName = buildClassName(pkgName, backupAgent, outError); + if (DEBUG_BACKUP) { + Slog.v(TAG, "android:backupAgent = " + ai.backupAgentName + + " from " + pkgName + "+" + backupAgent); + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_killAfterRestore, + true)) { + ai.flags |= ApplicationInfo.FLAG_KILL_AFTER_RESTORE; + } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_restoreAnyVersion, + false)) { + ai.flags |= ApplicationInfo.FLAG_RESTORE_ANY_VERSION; + } + } + } + + TypedValue v = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestApplication_label); + if (v != null && (ai.labelRes=v.resourceId) == 0) { + ai.nonLocalizedLabel = v.coerceToString(); + } + + ai.icon = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestApplication_icon, 0); + ai.logo = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestApplication_logo, 0); + ai.theme = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestApplication_theme, 0); + ai.descriptionRes = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestApplication_description, 0); + + if ((flags&PARSE_IS_SYSTEM) != 0) { + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_persistent, + false)) { + ai.flags |= ApplicationInfo.FLAG_PERSISTENT; + } + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_requiredForAllUsers, + false)) { + owner.mRequiredForAllUsers = true; + } + + String restrictedAccountType = sa.getString(com.android.internal.R.styleable + .AndroidManifestApplication_restrictedAccountType); + if (restrictedAccountType != null && restrictedAccountType.length() > 0) { + owner.mRestrictedAccountType = restrictedAccountType; + } + + String requiredAccountType = sa.getString(com.android.internal.R.styleable + .AndroidManifestApplication_requiredAccountType); + if (requiredAccountType != null && requiredAccountType.length() > 0) { + owner.mRequiredAccountType = requiredAccountType; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_debuggable, + false)) { + ai.flags |= ApplicationInfo.FLAG_DEBUGGABLE; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_vmSafeMode, + false)) { + ai.flags |= ApplicationInfo.FLAG_VM_SAFE_MODE; + } + + boolean hardwareAccelerated = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_hardwareAccelerated, + owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH); + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_hasCode, + true)) { + ai.flags |= ApplicationInfo.FLAG_HAS_CODE; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_allowTaskReparenting, + false)) { + ai.flags |= ApplicationInfo.FLAG_ALLOW_TASK_REPARENTING; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_allowClearUserData, + true)) { + ai.flags |= ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_testOnly, + false)) { + ai.flags |= ApplicationInfo.FLAG_TEST_ONLY; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_largeHeap, + false)) { + ai.flags |= ApplicationInfo.FLAG_LARGE_HEAP; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_supportsRtl, + false /* default is no RTL support*/)) { + ai.flags |= ApplicationInfo.FLAG_SUPPORTS_RTL; + } + + String str; + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_permission, 0); + ai.permission = (str != null && str.length() > 0) ? str.intern() : null; + + if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_taskAffinity, + Configuration.NATIVE_CONFIG_VERSION); + } else { + // Some older apps have been seen to use a resource reference + // here that on older builds was ignored (with a warning). We + // need to continue to do this for them so they don't break. + str = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestApplication_taskAffinity); + } + ai.taskAffinity = buildTaskAffinityName(ai.packageName, ai.packageName, + str, outError); + + if (outError[0] == null) { + CharSequence pname; + if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { + pname = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestApplication_process, + Configuration.NATIVE_CONFIG_VERSION); + } else { + // Some older apps have been seen to use a resource reference + // here that on older builds was ignored (with a warning). We + // need to continue to do this for them so they don't break. + pname = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestApplication_process); + } + ai.processName = buildProcessName(ai.packageName, null, pname, + flags, mSeparateProcesses, outError); + + ai.enabled = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_enabled, true); + + if (false) { + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_cantSaveState, + false)) { + ai.flags |= ApplicationInfo.FLAG_CANT_SAVE_STATE; + + // A heavy-weight application can not be in a custom process. + // We can do direct compare because we intern all strings. + if (ai.processName != null && ai.processName != ai.packageName) { + outError[0] = "cantSaveState applications can not use custom processes"; + } + } + } + } + + ai.uiOptions = sa.getInt( + com.android.internal.R.styleable.AndroidManifestApplication_uiOptions, 0); + + sa.recycle(); + + if (outError[0] != null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + final int innerDepth = parser.getDepth(); + + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > innerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + String tagName = parser.getName(); + if (tagName.equals("activity")) { + Activity a = parseActivity(owner, res, parser, attrs, flags, outError, false, + hardwareAccelerated); + if (a == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + owner.activities.add(a); + + } else if (tagName.equals("receiver")) { + Activity a = parseActivity(owner, res, parser, attrs, flags, outError, true, false); + if (a == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + owner.receivers.add(a); + + } else if (tagName.equals("service")) { + Service s = parseService(owner, res, parser, attrs, flags, outError); + if (s == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + owner.services.add(s); + + } else if (tagName.equals("provider")) { + Provider p = parseProvider(owner, res, parser, attrs, flags, outError); + if (p == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + owner.providers.add(p); + + } else if (tagName.equals("activity-alias")) { + Activity a = parseActivityAlias(owner, res, parser, attrs, flags, outError); + if (a == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + owner.activities.add(a); + + } else if (parser.getName().equals("meta-data")) { + // note: application meta-data is stored off to the side, so it can + // remain null in the primary copy (we like to avoid extra copies because + // it can be large) + if ((owner.mAppMetaData = parseMetaData(res, parser, attrs, owner.mAppMetaData, + outError)) == null) { + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + + } else if (tagName.equals("library")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestLibrary); + + // Note: don't allow this value to be a reference to a resource + // that may change. + String lname = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestLibrary_name); + + sa.recycle(); + + if (lname != null) { + if (owner.libraryNames == null) { + owner.libraryNames = new ArrayList(); + } + if (!owner.libraryNames.contains(lname)) { + owner.libraryNames.add(lname.intern()); + } + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("uses-library")) { + sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestUsesLibrary); + + // Note: don't allow this value to be a reference to a resource + // that may change. + String lname = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestUsesLibrary_name); + boolean req = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestUsesLibrary_required, + true); + + sa.recycle(); + + if (lname != null) { + if (req) { + if (owner.usesLibraries == null) { + owner.usesLibraries = new ArrayList(); + } + if (!owner.usesLibraries.contains(lname)) { + owner.usesLibraries.add(lname.intern()); + } + } else { + if (owner.usesOptionalLibraries == null) { + owner.usesOptionalLibraries = new ArrayList(); + } + if (!owner.usesOptionalLibraries.contains(lname)) { + owner.usesOptionalLibraries.add(lname.intern()); + } + } + } + + XmlUtils.skipCurrentTag(parser); + + } else if (tagName.equals("uses-package")) { + // Dependencies for app installers; we don't currently try to + // enforce this. + XmlUtils.skipCurrentTag(parser); + + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under : " + tagName + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "Bad element under : " + tagName; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + } + } + + return true; + } + + private boolean parsePackageItemInfo(Package owner, PackageItemInfo outInfo, + String[] outError, String tag, TypedArray sa, + int nameRes, int labelRes, int iconRes, int logoRes) { + String name = sa.getNonConfigurationString(nameRes, 0); + if (name == null) { + outError[0] = tag + " does not specify android:name"; + return false; + } + + outInfo.name + = buildClassName(owner.applicationInfo.packageName, name, outError); + if (outInfo.name == null) { + return false; + } + + int iconVal = sa.getResourceId(iconRes, 0); + if (iconVal != 0) { + outInfo.icon = iconVal; + outInfo.nonLocalizedLabel = null; + } + + int logoVal = sa.getResourceId(logoRes, 0); + if (logoVal != 0) { + outInfo.logo = logoVal; + } + + TypedValue v = sa.peekValue(labelRes); + if (v != null && (outInfo.labelRes=v.resourceId) == 0) { + outInfo.nonLocalizedLabel = v.coerceToString(); + } + + outInfo.packageName = owner.packageName; + + return true; + } + + private Activity parseActivity(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, int flags, String[] outError, + boolean receiver, boolean hardwareAccelerated) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestActivity); + + if (mParseActivityArgs == null) { + mParseActivityArgs = new ParseComponentArgs(owner, outError, + com.android.internal.R.styleable.AndroidManifestActivity_name, + com.android.internal.R.styleable.AndroidManifestActivity_label, + com.android.internal.R.styleable.AndroidManifestActivity_icon, + com.android.internal.R.styleable.AndroidManifestActivity_logo, + mSeparateProcesses, + com.android.internal.R.styleable.AndroidManifestActivity_process, + com.android.internal.R.styleable.AndroidManifestActivity_description, + com.android.internal.R.styleable.AndroidManifestActivity_enabled); + } + + mParseActivityArgs.tag = receiver ? "" : ""; + mParseActivityArgs.sa = sa; + mParseActivityArgs.flags = flags; + + Activity a = new Activity(mParseActivityArgs, new ActivityInfo()); + if (outError[0] != null) { + sa.recycle(); + return null; + } + + boolean setExported = sa.hasValue( + com.android.internal.R.styleable.AndroidManifestActivity_exported); + if (setExported) { + a.info.exported = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_exported, false); + } + + a.info.theme = sa.getResourceId( + com.android.internal.R.styleable.AndroidManifestActivity_theme, 0); + + a.info.uiOptions = sa.getInt( + com.android.internal.R.styleable.AndroidManifestActivity_uiOptions, + a.info.applicationInfo.uiOptions); + + String parentName = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestActivity_parentActivityName, + Configuration.NATIVE_CONFIG_VERSION); + if (parentName != null) { + String parentClassName = buildClassName(a.info.packageName, parentName, outError); + if (outError[0] == null) { + a.info.parentActivityName = parentClassName; + } else { + Log.e(TAG, "Activity " + a.info.name + " specified invalid parentActivityName " + + parentName); + outError[0] = null; + } + } + + String str; + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestActivity_permission, 0); + if (str == null) { + a.info.permission = owner.applicationInfo.permission; + } else { + a.info.permission = str.length() > 0 ? str.toString().intern() : null; + } + + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestActivity_taskAffinity, + Configuration.NATIVE_CONFIG_VERSION); + a.info.taskAffinity = buildTaskAffinityName(owner.applicationInfo.packageName, + owner.applicationInfo.taskAffinity, str, outError); + + a.info.flags = 0; + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_multiprocess, + false)) { + a.info.flags |= ActivityInfo.FLAG_MULTIPROCESS; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_finishOnTaskLaunch, + false)) { + a.info.flags |= ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_clearTaskOnLaunch, + false)) { + a.info.flags |= ActivityInfo.FLAG_CLEAR_TASK_ON_LAUNCH; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_noHistory, + false)) { + a.info.flags |= ActivityInfo.FLAG_NO_HISTORY; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_alwaysRetainTaskState, + false)) { + a.info.flags |= ActivityInfo.FLAG_ALWAYS_RETAIN_TASK_STATE; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_stateNotNeeded, + false)) { + a.info.flags |= ActivityInfo.FLAG_STATE_NOT_NEEDED; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_excludeFromRecents, + false)) { + a.info.flags |= ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_allowTaskReparenting, + (owner.applicationInfo.flags&ApplicationInfo.FLAG_ALLOW_TASK_REPARENTING) != 0)) { + a.info.flags |= ActivityInfo.FLAG_ALLOW_TASK_REPARENTING; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_finishOnCloseSystemDialogs, + false)) { + a.info.flags |= ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_showOnLockScreen, + false)) { + a.info.flags |= ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN; + } + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_immersive, + false)) { + a.info.flags |= ActivityInfo.FLAG_IMMERSIVE; + } + + if (!receiver) { + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_hardwareAccelerated, + hardwareAccelerated)) { + a.info.flags |= ActivityInfo.FLAG_HARDWARE_ACCELERATED; + } + + a.info.launchMode = sa.getInt( + com.android.internal.R.styleable.AndroidManifestActivity_launchMode, + ActivityInfo.LAUNCH_MULTIPLE); + a.info.screenOrientation = sa.getInt( + com.android.internal.R.styleable.AndroidManifestActivity_screenOrientation, + ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + a.info.configChanges = sa.getInt( + com.android.internal.R.styleable.AndroidManifestActivity_configChanges, + 0); + a.info.softInputMode = sa.getInt( + com.android.internal.R.styleable.AndroidManifestActivity_windowSoftInputMode, + 0); + } else { + a.info.launchMode = ActivityInfo.LAUNCH_MULTIPLE; + a.info.configChanges = 0; + } + + if (receiver) { + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_singleUser, + false)) { + a.info.flags |= ActivityInfo.FLAG_SINGLE_USER; + if (a.info.exported) { + Slog.w(TAG, "Activity exported request ignored due to singleUser: " + + a.className + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + a.info.exported = false; + } + setExported = true; + } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestActivity_primaryUserOnly, + false)) { + a.info.flags |= ActivityInfo.FLAG_PRIMARY_USER_ONLY; + } + } + + sa.recycle(); + + if (receiver && (owner.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) { + // A heavy-weight application can not have receives in its main process + // We can do direct compare because we intern all strings. + if (a.info.processName == owner.packageName) { + outError[0] = "Heavy-weight applications can not have receivers in main process"; + } + } + + if (outError[0] != null) { + return null; + } + + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + + if (parser.getName().equals("meta-data")) { + if ((a.metaData=parseMetaData(res, parser, attrs, a.metaData, + outError)) == null) { + return null; + } + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Problem in package " + mArchiveSourcePath + ":"); + if (receiver) { + Slog.w(TAG, "Unknown element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + } else { + Slog.w(TAG, "Unknown element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + } + XmlUtils.skipCurrentTag(parser); + continue; + } else { + if (receiver) { + outError[0] = "Bad element under : " + parser.getName(); + } else { + outError[0] = "Bad element under : " + parser.getName(); + } + return null; + } + } + } + + if (!setExported) { + a.info.exported = a.intents.size() > 0; + } + + return a; + } + + private Activity parseActivityAlias(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, int flags, String[] outError) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestActivityAlias); + + String targetActivity = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestActivityAlias_targetActivity, + Configuration.NATIVE_CONFIG_VERSION); + if (targetActivity == null) { + outError[0] = " does not specify android:targetActivity"; + sa.recycle(); + return null; + } + + targetActivity = buildClassName(owner.applicationInfo.packageName, + targetActivity, outError); + if (targetActivity == null) { + sa.recycle(); + return null; + } + + if (mParseActivityAliasArgs == null) { + mParseActivityAliasArgs = new ParseComponentArgs(owner, outError, + com.android.internal.R.styleable.AndroidManifestActivityAlias_name, + com.android.internal.R.styleable.AndroidManifestActivityAlias_label, + com.android.internal.R.styleable.AndroidManifestActivityAlias_icon, + com.android.internal.R.styleable.AndroidManifestActivityAlias_logo, + mSeparateProcesses, + 0, + com.android.internal.R.styleable.AndroidManifestActivityAlias_description, + com.android.internal.R.styleable.AndroidManifestActivityAlias_enabled); + mParseActivityAliasArgs.tag = ""; + } + + mParseActivityAliasArgs.sa = sa; + mParseActivityAliasArgs.flags = flags; + + Activity target = null; + + final int NA = owner.activities.size(); + for (int i=0; i 0 ? str.toString().intern() : null; + } + + String parentName = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestActivityAlias_parentActivityName, + Configuration.NATIVE_CONFIG_VERSION); + if (parentName != null) { + String parentClassName = buildClassName(a.info.packageName, parentName, outError); + if (outError[0] == null) { + a.info.parentActivityName = parentClassName; + } else { + Log.e(TAG, "Activity alias " + a.info.name + + " specified invalid parentActivityName " + parentName); + outError[0] = null; + } + } + + sa.recycle(); + + if (outError[0] != null) { + return null; + } + + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + if (parser.getName().equals("meta-data")) { + if ((a.metaData=parseMetaData(res, parser, attrs, a.metaData, + outError)) == null) { + return null; + } + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under : " + parser.getName() + + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "Bad element under : " + parser.getName(); + return null; + } + } + } + + if (!setExported) { + a.info.exported = a.intents.size() > 0; + } + + return a; + } + + private Provider parseProvider(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, int flags, String[] outError) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestProvider); + + if (mParseProviderArgs == null) { + mParseProviderArgs = new ParseComponentArgs(owner, outError, + com.android.internal.R.styleable.AndroidManifestProvider_name, + com.android.internal.R.styleable.AndroidManifestProvider_label, + com.android.internal.R.styleable.AndroidManifestProvider_icon, + com.android.internal.R.styleable.AndroidManifestProvider_logo, + mSeparateProcesses, + com.android.internal.R.styleable.AndroidManifestProvider_process, + com.android.internal.R.styleable.AndroidManifestProvider_description, + com.android.internal.R.styleable.AndroidManifestProvider_enabled); + mParseProviderArgs.tag = ""; + } + + mParseProviderArgs.sa = sa; + mParseProviderArgs.flags = flags; + + Provider p = new Provider(mParseProviderArgs, new ProviderInfo()); + if (outError[0] != null) { + sa.recycle(); + return null; + } + + boolean providerExportedDefault = false; + + if (owner.applicationInfo.targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1) { + // For compatibility, applications targeting API level 16 or lower + // should have their content providers exported by default, unless they + // specify otherwise. + providerExportedDefault = true; + } + + p.info.exported = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestProvider_exported, + providerExportedDefault); + + String cpname = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestProvider_authorities, 0); + + p.info.isSyncable = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestProvider_syncable, + false); + + String permission = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestProvider_permission, 0); + String str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestProvider_readPermission, 0); + if (str == null) { + str = permission; + } + if (str == null) { + p.info.readPermission = owner.applicationInfo.permission; + } else { + p.info.readPermission = + str.length() > 0 ? str.toString().intern() : null; + } + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestProvider_writePermission, 0); + if (str == null) { + str = permission; + } + if (str == null) { + p.info.writePermission = owner.applicationInfo.permission; + } else { + p.info.writePermission = + str.length() > 0 ? str.toString().intern() : null; + } + + p.info.grantUriPermissions = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestProvider_grantUriPermissions, + false); + + p.info.multiprocess = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestProvider_multiprocess, + false); + + p.info.initOrder = sa.getInt( + com.android.internal.R.styleable.AndroidManifestProvider_initOrder, + 0); + + p.info.flags = 0; + + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestProvider_singleUser, + false)) { + p.info.flags |= ProviderInfo.FLAG_SINGLE_USER; + if (p.info.exported) { + Slog.w(TAG, "Provider exported request ignored due to singleUser: " + + p.className + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + p.info.exported = false; + } + } + + sa.recycle(); + + if ((owner.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) { + // A heavy-weight application can not have providers in its main process + // We can do direct compare because we intern all strings. + if (p.info.processName == owner.packageName) { + outError[0] = "Heavy-weight applications can not have providers in main process"; + return null; + } + } + + if (cpname == null) { + outError[0] = " does not include authorities attribute"; + return null; + } + p.info.authority = cpname.intern(); + + if (!parseProviderTags(res, parser, attrs, p, outError)) { + return null; + } + + return p; + } + + private boolean parseProviderTags(Resources res, + XmlPullParser parser, AttributeSet attrs, + Provider outInfo, String[] outError) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + if (parser.getName().equals("meta-data")) { + if ((outInfo.metaData=parseMetaData(res, parser, attrs, + outInfo.metaData, outError)) == null) { + return false; + } + + } else if (parser.getName().equals("grant-uri-permission")) { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestGrantUriPermission); + + PatternMatcher pa = null; + + String str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestGrantUriPermission_path, 0); + if (str != null) { + pa = new PatternMatcher(str, PatternMatcher.PATTERN_LITERAL); + } + + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestGrantUriPermission_pathPrefix, 0); + if (str != null) { + pa = new PatternMatcher(str, PatternMatcher.PATTERN_PREFIX); + } + + str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestGrantUriPermission_pathPattern, 0); + if (str != null) { + pa = new PatternMatcher(str, PatternMatcher.PATTERN_SIMPLE_GLOB); + } + + sa.recycle(); + + if (pa != null) { + if (outInfo.info.uriPermissionPatterns == null) { + outInfo.info.uriPermissionPatterns = new PatternMatcher[1]; + outInfo.info.uriPermissionPatterns[0] = pa; + } else { + final int N = outInfo.info.uriPermissionPatterns.length; + PatternMatcher[] newp = new PatternMatcher[N+1]; + System.arraycopy(outInfo.info.uriPermissionPatterns, 0, newp, 0, N); + newp[N] = pa; + outInfo.info.uriPermissionPatterns = newp; + } + outInfo.info.grantUriPermissions = true; + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under : " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "No path, pathPrefix, or pathPattern for "; + return false; + } + } + XmlUtils.skipCurrentTag(parser); + + } else if (parser.getName().equals("path-permission")) { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestPathPermission); + + PathPermission pa = null; + + String permission = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_permission, 0); + String readPermission = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_readPermission, 0); + if (readPermission == null) { + readPermission = permission; + } + String writePermission = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_writePermission, 0); + if (writePermission == null) { + writePermission = permission; + } + + boolean havePerm = false; + if (readPermission != null) { + readPermission = readPermission.intern(); + havePerm = true; + } + if (writePermission != null) { + writePermission = writePermission.intern(); + havePerm = true; + } + + if (!havePerm) { + if (!RIGID_PARSER) { + Slog.w(TAG, "No readPermission or writePermssion for : " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "No readPermission or writePermssion for "; + return false; + } + } + + String path = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_path, 0); + if (path != null) { + pa = new PathPermission(path, + PatternMatcher.PATTERN_LITERAL, readPermission, writePermission); + } + + path = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_pathPrefix, 0); + if (path != null) { + pa = new PathPermission(path, + PatternMatcher.PATTERN_PREFIX, readPermission, writePermission); + } + + path = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestPathPermission_pathPattern, 0); + if (path != null) { + pa = new PathPermission(path, + PatternMatcher.PATTERN_SIMPLE_GLOB, readPermission, writePermission); + } + + sa.recycle(); + + if (pa != null) { + if (outInfo.info.pathPermissions == null) { + outInfo.info.pathPermissions = new PathPermission[1]; + outInfo.info.pathPermissions[0] = pa; + } else { + final int N = outInfo.info.pathPermissions.length; + PathPermission[] newp = new PathPermission[N+1]; + System.arraycopy(outInfo.info.pathPermissions, 0, newp, 0, N); + newp[N] = pa; + outInfo.info.pathPermissions = newp; + } + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "No path, pathPrefix, or pathPattern for : " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } + outError[0] = "No path, pathPrefix, or pathPattern for "; + return false; + } + XmlUtils.skipCurrentTag(parser); + + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under : " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "Bad element under : " + parser.getName(); + return false; + } + } + } + return true; + } + + private Service parseService(Package owner, Resources res, + XmlPullParser parser, AttributeSet attrs, int flags, String[] outError) + throws XmlPullParserException, IOException { + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestService); + + if (mParseServiceArgs == null) { + mParseServiceArgs = new ParseComponentArgs(owner, outError, + com.android.internal.R.styleable.AndroidManifestService_name, + com.android.internal.R.styleable.AndroidManifestService_label, + com.android.internal.R.styleable.AndroidManifestService_icon, + com.android.internal.R.styleable.AndroidManifestService_logo, + mSeparateProcesses, + com.android.internal.R.styleable.AndroidManifestService_process, + com.android.internal.R.styleable.AndroidManifestService_description, + com.android.internal.R.styleable.AndroidManifestService_enabled); + mParseServiceArgs.tag = ""; + } + + mParseServiceArgs.sa = sa; + mParseServiceArgs.flags = flags; + + Service s = new Service(mParseServiceArgs, new ServiceInfo()); + if (outError[0] != null) { + sa.recycle(); + return null; + } + + boolean setExported = sa.hasValue( + com.android.internal.R.styleable.AndroidManifestService_exported); + if (setExported) { + s.info.exported = sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestService_exported, false); + } + + String str = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestService_permission, 0); + if (str == null) { + s.info.permission = owner.applicationInfo.permission; + } else { + s.info.permission = str.length() > 0 ? str.toString().intern() : null; + } + + s.info.flags = 0; + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestService_stopWithTask, + false)) { + s.info.flags |= ServiceInfo.FLAG_STOP_WITH_TASK; + } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestService_isolatedProcess, + false)) { + s.info.flags |= ServiceInfo.FLAG_ISOLATED_PROCESS; + } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestService_singleUser, + false)) { + s.info.flags |= ServiceInfo.FLAG_SINGLE_USER; + if (s.info.exported) { + Slog.w(TAG, "Service exported request ignored due to singleUser: " + + s.className + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + s.info.exported = false; + } + setExported = true; + } + + sa.recycle(); + + if ((owner.applicationInfo.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) { + // A heavy-weight application can not have services in its main process + // We can do direct compare because we intern all strings. + if (s.info.processName == owner.packageName) { + outError[0] = "Heavy-weight applications can not have services in main process"; + return null; + } + } + + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + if (parser.getName().equals("meta-data")) { + if ((s.metaData=parseMetaData(res, parser, attrs, s.metaData, + outError)) == null) { + return null; + } + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under : " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "Bad element under : " + parser.getName(); + return null; + } + } + } + + if (!setExported) { + s.info.exported = s.intents.size() > 0; + } + + return s; + } + + private boolean parseAllMetaData(Resources res, + XmlPullParser parser, AttributeSet attrs, String tag, + Component outInfo, String[] outError) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + if (parser.getName().equals("meta-data")) { + if ((outInfo.metaData=parseMetaData(res, parser, attrs, + outInfo.metaData, outError)) == null) { + return false; + } + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, "Unknown element under " + tag + ": " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + XmlUtils.skipCurrentTag(parser); + continue; + } else { + outError[0] = "Bad element under " + tag + ": " + parser.getName(); + return false; + } + } + } + return true; + } + + private Bundle parseMetaData(Resources res, + XmlPullParser parser, AttributeSet attrs, + Bundle data, String[] outError) + throws XmlPullParserException, IOException { + + TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestMetaData); + + if (data == null) { + data = new Bundle(); + } + + String name = sa.getNonConfigurationString( + com.android.internal.R.styleable.AndroidManifestMetaData_name, 0); + if (name == null) { + outError[0] = " requires an android:name attribute"; + sa.recycle(); + return null; + } + + name = name.intern(); + + TypedValue v = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestMetaData_resource); + if (v != null && v.resourceId != 0) { + //Slog.i(TAG, "Meta data ref " + name + ": " + v); + data.putInt(name, v.resourceId); + } else { + v = sa.peekValue( + com.android.internal.R.styleable.AndroidManifestMetaData_value); + //Slog.i(TAG, "Meta data " + name + ": " + v); + if (v != null) { + if (v.type == TypedValue.TYPE_STRING) { + CharSequence cs = v.coerceToString(); + data.putString(name, cs != null ? cs.toString().intern() : null); + } else if (v.type == TypedValue.TYPE_INT_BOOLEAN) { + data.putBoolean(name, v.data != 0); + } else if (v.type >= TypedValue.TYPE_FIRST_INT + && v.type <= TypedValue.TYPE_LAST_INT) { + data.putInt(name, v.data); + } else if (v.type == TypedValue.TYPE_FLOAT) { + data.putFloat(name, v.getFloat()); + } else { + if (!RIGID_PARSER) { + Slog.w(TAG, " only supports string, integer, float, color, boolean, and resource reference types: " + + parser.getName() + " at " + mArchiveSourcePath + " " + + parser.getPositionDescription()); + } else { + outError[0] = " only supports string, integer, float, color, boolean, and resource reference types"; + data = null; + } + } + } else { + outError[0] = " requires an android:value or android:resource attribute"; + data = null; + } + } + + sa.recycle(); + + XmlUtils.skipCurrentTag(parser); + + return data; + } + + private static VerifierInfo parseVerifier(Resources res, XmlPullParser parser, + AttributeSet attrs, int flags, String[] outError) throws XmlPullParserException, + IOException { + final TypedArray sa = res.obtainAttributes(attrs, + com.android.internal.R.styleable.AndroidManifestPackageVerifier); + + final String packageName = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestPackageVerifier_name); + + final String encodedPublicKey = sa.getNonResourceString( + com.android.internal.R.styleable.AndroidManifestPackageVerifier_publicKey); + + sa.recycle(); + + if (packageName == null || packageName.length() == 0) { + Slog.i(TAG, "verifier package name was null; skipping"); + return null; + } else if (encodedPublicKey == null) { + Slog.i(TAG, "verifier " + packageName + " public key was null; skipping"); + } + + PublicKey publicKey = parsePublicKey(encodedPublicKey); + if (publicKey != null) { + return new VerifierInfo(packageName, publicKey); + } + + return null; + } + + public static final PublicKey parsePublicKey(String encodedPublicKey) { + EncodedKeySpec keySpec; + try { + final byte[] encoded = Base64.decode(encodedPublicKey, Base64.DEFAULT); + keySpec = new X509EncodedKeySpec(encoded); + } catch (IllegalArgumentException e) { + Slog.i(TAG, "Could not parse verifier public key; invalid Base64"); + return null; + } + + /* First try the key as an RSA key. */ + try { + final KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePublic(keySpec); + } catch (NoSuchAlgorithmException e) { + Log.wtf(TAG, "Could not parse public key because RSA isn't included in build"); + return null; + } catch (InvalidKeySpecException e) { + // Not a RSA public key. + } + + /* Now try it as a DSA key. */ + try { + final KeyFactory keyFactory = KeyFactory.getInstance("DSA"); + return keyFactory.generatePublic(keySpec); + } catch (NoSuchAlgorithmException e) { + Log.wtf(TAG, "Could not parse public key because DSA isn't included in build"); + return null; + } catch (InvalidKeySpecException e) { + // Not a DSA public key. + } + + return null; + } + + private static final String ANDROID_RESOURCES + = "http://schemas.android.com/apk/res/android"; + + public final static class Package { + + public String packageName; + + // For now we only support one application per package. + public final ApplicationInfo applicationInfo = new ApplicationInfo(); + + public final ArrayList permissions = new ArrayList(0); + public final ArrayList permissionGroups = new ArrayList(0); + public final ArrayList activities = new ArrayList(0); + public final ArrayList receivers = new ArrayList(0); + public final ArrayList providers = new ArrayList(0); + public final ArrayList services = new ArrayList(0); + public final ArrayList instrumentation = new ArrayList(0); + + public final ArrayList requestedPermissions = new ArrayList(); + public final ArrayList requestedPermissionsRequired = new ArrayList(); + + public ArrayList protectedBroadcasts; + + public ArrayList libraryNames = null; + public ArrayList usesLibraries = null; + public ArrayList usesOptionalLibraries = null; + public String[] usesLibraryFiles = null; + + public ArrayList preferredActivityFilters = null; + + public ArrayList mOriginalPackages = null; + public String mRealPackage = null; + public ArrayList mAdoptPermissions = null; + + // We store the application meta-data independently to avoid multiple unwanted references + public Bundle mAppMetaData = null; + + // If this is a 3rd party app, this is the path of the zip file. + public String mPath; + + // The version code declared for this package. + public int mVersionCode; + + // The version name declared for this package. + public String mVersionName; + + // The shared user id that this package wants to use. + public String mSharedUserId; + + // The shared user label that this package wants to use. + public int mSharedUserLabel; + + // Signatures that were read from the package. + public Signature mSignatures[]; + + // For use by package manager service for quick lookup of + // preferred up order. + public int mPreferredOrder = 0; + + // For use by the package manager to keep track of the path to the + // file an app came from. + public String mScanPath; + + // For use by package manager to keep track of where it has done dexopt. + public boolean mDidDexOpt; + + // // User set enabled state. + // public int mSetEnabled = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; + // + // // Whether the package has been stopped. + // public boolean mSetStopped = false; + + // Additional data supplied by callers. + public Object mExtras; + + // Whether an operation is currently pending on this package + public boolean mOperationPending; + + /* + * Applications hardware preferences + */ + public final ArrayList configPreferences = + new ArrayList(); + + /* + * Applications requested features + */ + public ArrayList reqFeatures = null; + + public int installLocation; + + /* An app that's required for all users and cannot be uninstalled for a user */ + public boolean mRequiredForAllUsers; + + /* The restricted account authenticator type that is used by this application */ + public String mRestrictedAccountType; + + /* The required account type without which this application will not function */ + public String mRequiredAccountType; + + /** + * Digest suitable for comparing whether this package's manifest is the + * same as another. + */ + public ManifestDigest manifestDigest; + + /** + * Data used to feed the KeySetManager + */ + public Set mSigningKeys; + public Map> mKeySetMapping; + + public Package(String _name) { + packageName = _name; + applicationInfo.packageName = _name; + applicationInfo.uid = -1; + } + + public void setPackageName(String newName) { + packageName = newName; + applicationInfo.packageName = newName; + for (int i=permissions.size()-1; i>=0; i--) { + permissions.get(i).setPackageName(newName); + } + for (int i=permissionGroups.size()-1; i>=0; i--) { + permissionGroups.get(i).setPackageName(newName); + } + for (int i=activities.size()-1; i>=0; i--) { + activities.get(i).setPackageName(newName); + } + for (int i=receivers.size()-1; i>=0; i--) { + receivers.get(i).setPackageName(newName); + } + for (int i=providers.size()-1; i>=0; i--) { + providers.get(i).setPackageName(newName); + } + for (int i=services.size()-1; i>=0; i--) { + services.get(i).setPackageName(newName); + } + for (int i=instrumentation.size()-1; i>=0; i--) { + instrumentation.get(i).setPackageName(newName); + } + } + + public boolean hasComponentClassName(String name) { + for (int i=activities.size()-1; i>=0; i--) { + if (name.equals(activities.get(i).className)) { + return true; + } + } + for (int i=receivers.size()-1; i>=0; i--) { + if (name.equals(receivers.get(i).className)) { + return true; + } + } + for (int i=providers.size()-1; i>=0; i--) { + if (name.equals(providers.get(i).className)) { + return true; + } + } + for (int i=services.size()-1; i>=0; i--) { + if (name.equals(services.get(i).className)) { + return true; + } + } + for (int i=instrumentation.size()-1; i>=0; i--) { + if (name.equals(instrumentation.get(i).className)) { + return true; + } + } + return false; + } + + public String toString() { + return "Package{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + packageName + "}"; + } + } + + public static class Component { + public final Package owner; + public final ArrayList intents; + public final String className; + public Bundle metaData; + + ComponentName componentName; + String componentShortName; + + public Component(Package _owner) { + owner = _owner; + intents = null; + className = null; + } + + public Component(final ParsePackageItemArgs args, final PackageItemInfo outInfo) { + owner = args.owner; + intents = new ArrayList(0); + String name = args.sa.getNonConfigurationString(args.nameRes, 0); + if (name == null) { + className = null; + args.outError[0] = args.tag + " does not specify android:name"; + return; + } + + outInfo.name + = buildClassName(owner.applicationInfo.packageName, name, args.outError); + if (outInfo.name == null) { + className = null; + args.outError[0] = args.tag + " does not have valid android:name"; + return; + } + + className = outInfo.name; + + int iconVal = args.sa.getResourceId(args.iconRes, 0); + if (iconVal != 0) { + outInfo.icon = iconVal; + outInfo.nonLocalizedLabel = null; + } + + int logoVal = args.sa.getResourceId(args.logoRes, 0); + if (logoVal != 0) { + outInfo.logo = logoVal; + } + + TypedValue v = args.sa.peekValue(args.labelRes); + if (v != null && (outInfo.labelRes=v.resourceId) == 0) { + outInfo.nonLocalizedLabel = v.coerceToString(); + } + + outInfo.packageName = owner.packageName; + } + + public Component(final ParseComponentArgs args, final ComponentInfo outInfo) { + this(args, (PackageItemInfo)outInfo); + if (args.outError[0] != null) { + return; + } + + if (args.processRes != 0) { + CharSequence pname; + if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { + pname = args.sa.getNonConfigurationString(args.processRes, + Configuration.NATIVE_CONFIG_VERSION); + } else { + // Some older apps have been seen to use a resource reference + // here that on older builds was ignored (with a warning). We + // need to continue to do this for them so they don't break. + pname = args.sa.getNonResourceString(args.processRes); + } + outInfo.processName = buildProcessName(owner.applicationInfo.packageName, + owner.applicationInfo.processName, pname, + args.flags, args.sepProcesses, args.outError); + } + + if (args.descriptionRes != 0) { + outInfo.descriptionRes = args.sa.getResourceId(args.descriptionRes, 0); + } + + outInfo.enabled = args.sa.getBoolean(args.enabledRes, true); + } + + public Component(Component clone) { + owner = clone.owner; + intents = clone.intents; + className = clone.className; + componentName = clone.componentName; + componentShortName = clone.componentShortName; + } + + public ComponentName getComponentName() { + if (componentName != null) { + return componentName; + } + if (className != null) { + componentName = new ComponentName(owner.applicationInfo.packageName, + className); + } + return componentName; + } + + public void appendComponentShortName(StringBuilder sb) { + ComponentName.appendShortString(sb, owner.applicationInfo.packageName, className); + } + + public void printComponentShortName(PrintWriter pw) { + ComponentName.printShortString(pw, owner.applicationInfo.packageName, className); + } + + public void setPackageName(String packageName) { + componentName = null; + componentShortName = null; + } + } + + public final static class Permission extends Component { + public final PermissionInfo info; + public boolean tree; + public PermissionGroup group; + + public Permission(Package _owner) { + super(_owner); + info = new PermissionInfo(); + } + + public Permission(Package _owner, PermissionInfo _info) { + super(_owner); + info = _info; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + return "Permission{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + info.name + "}"; + } + } + + public final static class PermissionGroup extends Component { + public final PermissionGroupInfo info; + + public PermissionGroup(Package _owner) { + super(_owner); + info = new PermissionGroupInfo(); + } + + public PermissionGroup(Package _owner, PermissionGroupInfo _info) { + super(_owner); + info = _info; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + return "PermissionGroup{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + info.name + "}"; + } + } + + private static boolean copyNeeded(int flags, Package p, + PackageUserState state, Bundle metaData, int userId) { + if (userId != 0) { + // We always need to copy for other users, since we need + // to fix up the uid. + return true; + } + if (state.enabled != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { + boolean enabled = state.enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + if (p.applicationInfo.enabled != enabled) { + return true; + } + } + if (!state.installed || state.blocked) { + return true; + } + if (state.stopped) { + return true; + } + if ((flags & PackageManager.GET_META_DATA) != 0 + && (metaData != null || p.mAppMetaData != null)) { + return true; + } + if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0 + && p.usesLibraryFiles != null) { + return true; + } + return false; + } + + public static ApplicationInfo generateApplicationInfo(Package p, int flags, + PackageUserState state) { + return generateApplicationInfo(p, flags, state, UserHandle.getCallingUserId()); + } + + private static void updateApplicationInfo(ApplicationInfo ai, int flags, + PackageUserState state) { + // CompatibilityMode is global state. + if (!sCompatibilityModeEnabled) { + ai.disableCompatibilityMode(); + } + if (state.installed) { + ai.flags |= ApplicationInfo.FLAG_INSTALLED; + } else { + ai.flags &= ~ApplicationInfo.FLAG_INSTALLED; + } + if (state.blocked) { + ai.flags |= ApplicationInfo.FLAG_BLOCKED; + } else { + ai.flags &= ~ApplicationInfo.FLAG_BLOCKED; + } + if (state.enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { + ai.enabled = true; + } else if (state.enabled == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { + ai.enabled = (flags&PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS) != 0; + } else if (state.enabled == PackageManager.COMPONENT_ENABLED_STATE_DISABLED + || state.enabled == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) { + ai.enabled = false; + } + ai.enabledSetting = state.enabled; + } + + public static ApplicationInfo generateApplicationInfo(Package p, int flags, + PackageUserState state, int userId) { + if (p == null) return null; + if (!checkUseInstalledOrBlocked(flags, state)) { + return null; + } + if (!copyNeeded(flags, p, state, null, userId) + && ((flags&PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS) == 0 + || state.enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED)) { + // In this case it is safe to directly modify the internal ApplicationInfo state: + // - CompatibilityMode is global state, so will be the same for every call. + // - We only come in to here if the app should reported as installed; this is the + // default state, and we will do a copy otherwise. + // - The enable state will always be reported the same for the application across + // calls; the only exception is for the UNTIL_USED mode, and in that case we will + // be doing a copy. + updateApplicationInfo(p.applicationInfo, flags, state); + return p.applicationInfo; + } + + // Make shallow copy so we can store the metadata/libraries safely + ApplicationInfo ai = new ApplicationInfo(p.applicationInfo); + if (userId != 0) { + ai.uid = UserHandle.getUid(userId, ai.uid); + ai.dataDir = PackageManager.getDataDirForUser(userId, ai.packageName); + } + if ((flags & PackageManager.GET_META_DATA) != 0) { + ai.metaData = p.mAppMetaData; + } + if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0) { + ai.sharedLibraryFiles = p.usesLibraryFiles; + } + if (state.stopped) { + ai.flags |= ApplicationInfo.FLAG_STOPPED; + } else { + ai.flags &= ~ApplicationInfo.FLAG_STOPPED; + } + updateApplicationInfo(ai, flags, state); + return ai; + } + + public static final PermissionInfo generatePermissionInfo( + Permission p, int flags) { + if (p == null) return null; + if ((flags&PackageManager.GET_META_DATA) == 0) { + return p.info; + } + PermissionInfo pi = new PermissionInfo(p.info); + pi.metaData = p.metaData; + return pi; + } + + public static final PermissionGroupInfo generatePermissionGroupInfo( + PermissionGroup pg, int flags) { + if (pg == null) return null; + if ((flags&PackageManager.GET_META_DATA) == 0) { + return pg.info; + } + PermissionGroupInfo pgi = new PermissionGroupInfo(pg.info); + pgi.metaData = pg.metaData; + return pgi; + } + + public final static class Activity extends Component { + public final ActivityInfo info; + + public Activity(final ParseComponentArgs args, final ActivityInfo _info) { + super(args, _info); + info = _info; + info.applicationInfo = args.owner.applicationInfo; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("Activity{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public static final ActivityInfo generateActivityInfo(Activity a, int flags, + PackageUserState state, int userId) { + if (a == null) return null; + if (!checkUseInstalledOrBlocked(flags, state)) { + return null; + } + if (!copyNeeded(flags, a.owner, state, a.metaData, userId)) { + return a.info; + } + // Make shallow copies so we can store the metadata safely + ActivityInfo ai = new ActivityInfo(a.info); + ai.metaData = a.metaData; + ai.applicationInfo = generateApplicationInfo(a.owner, flags, state, userId); + return ai; + } + + public final static class Service extends Component { + public final ServiceInfo info; + + public Service(final ParseComponentArgs args, final ServiceInfo _info) { + super(args, _info); + info = _info; + info.applicationInfo = args.owner.applicationInfo; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("Service{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public static final ServiceInfo generateServiceInfo(Service s, int flags, + PackageUserState state, int userId) { + if (s == null) return null; + if (!checkUseInstalledOrBlocked(flags, state)) { + return null; + } + if (!copyNeeded(flags, s.owner, state, s.metaData, userId)) { + return s.info; + } + // Make shallow copies so we can store the metadata safely + ServiceInfo si = new ServiceInfo(s.info); + si.metaData = s.metaData; + si.applicationInfo = generateApplicationInfo(s.owner, flags, state, userId); + return si; + } + + public final static class Provider extends Component { + public final ProviderInfo info; + public boolean syncable; + + public Provider(final ParseComponentArgs args, final ProviderInfo _info) { + super(args, _info); + info = _info; + info.applicationInfo = args.owner.applicationInfo; + syncable = false; + } + + public Provider(Provider existingProvider) { + super(existingProvider); + this.info = existingProvider.info; + this.syncable = existingProvider.syncable; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("Provider{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public static final ProviderInfo generateProviderInfo(Provider p, int flags, + PackageUserState state, int userId) { + if (p == null) return null; + if (!checkUseInstalledOrBlocked(flags, state)) { + return null; + } + if (!copyNeeded(flags, p.owner, state, p.metaData, userId) + && ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) != 0 + || p.info.uriPermissionPatterns == null)) { + return p.info; + } + // Make shallow copies so we can store the metadata safely + ProviderInfo pi = new ProviderInfo(p.info); + pi.metaData = p.metaData; + if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) { + pi.uriPermissionPatterns = null; + } + pi.applicationInfo = generateApplicationInfo(p.owner, flags, state, userId); + return pi; + } + + public final static class Instrumentation extends Component { + public final InstrumentationInfo info; + + public Instrumentation(final ParsePackageItemArgs args, final InstrumentationInfo _info) { + super(args, _info); + info = _info; + } + + public void setPackageName(String packageName) { + super.setPackageName(packageName); + info.packageName = packageName; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("Instrumentation{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public static final InstrumentationInfo generateInstrumentationInfo( + Instrumentation i, int flags) { + if (i == null) return null; + if ((flags&PackageManager.GET_META_DATA) == 0) { + return i.info; + } + InstrumentationInfo ii = new InstrumentationInfo(i.info); + ii.metaData = i.metaData; + return ii; + } + + public static class IntentInfo extends IntentFilter { + public boolean hasDefault; + public int labelRes; + public CharSequence nonLocalizedLabel; + public int icon; + public int logo; + public int preferred; + } + + public final static class ActivityIntentInfo extends IntentInfo { + public final Activity activity; + + public ActivityIntentInfo(Activity _activity) { + activity = _activity; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("ActivityIntentInfo{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + activity.appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public final static class ServiceIntentInfo extends IntentInfo { + public final Service service; + + public ServiceIntentInfo(Service _service) { + service = _service; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("ServiceIntentInfo{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + service.appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + public static final class ProviderIntentInfo extends IntentInfo { + public final Provider provider; + + public ProviderIntentInfo(Provider provider) { + this.provider = provider; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("ProviderIntentInfo{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + provider.appendComponentShortName(sb); + sb.append('}'); + return sb.toString(); + } + } + + /** + * @hide + */ + public static void setCompatibilityModeEnabled(boolean compatibilityModeEnabled) { + sCompatibilityModeEnabled = compatibilityModeEnabled; + } +} diff --git a/src/api-impl/android/content/pm/PackageUserState.java b/src/api-impl/android/content/pm/PackageUserState.java new file mode 100644 index 00000000..94e3f79b --- /dev/null +++ b/src/api-impl/android/content/pm/PackageUserState.java @@ -0,0 +1,57 @@ +/* + * 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 android.content.pm; + +import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; + +import java.util.HashSet; + +/** + * Per-user state information about a package. + * @hide + */ +public class PackageUserState { + public boolean stopped; + public boolean notLaunched; + public boolean installed; + public boolean blocked; // Is the app restricted by owner / admin + public int enabled; + + public String lastDisableAppCaller; + + public HashSet disabledComponents; + public HashSet enabledComponents; + + public PackageUserState() { + installed = true; + blocked = false; + enabled = COMPONENT_ENABLED_STATE_DEFAULT; + } + + public PackageUserState(PackageUserState o) { + installed = o.installed; + stopped = o.stopped; + notLaunched = o.notLaunched; + enabled = o.enabled; + blocked = o.blocked; + lastDisableAppCaller = o.lastDisableAppCaller; + disabledComponents = o.disabledComponents != null + ? new HashSet(o.disabledComponents) : null; + enabledComponents = o.enabledComponents != null + ? new HashSet(o.enabledComponents) : null; + } +} \ No newline at end of file diff --git a/src/api-impl/android/content/pm/PathPermission.java b/src/api-impl/android/content/pm/PathPermission.java new file mode 100644 index 00000000..c3c9e79f --- /dev/null +++ b/src/api-impl/android/content/pm/PathPermission.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.os.PatternMatcher; + +/** + * Description of permissions needed to access a particular path + * in a {@link ProviderInfo}. + */ +public class PathPermission extends PatternMatcher { + private final String mReadPermission; + private final String mWritePermission; + + public PathPermission(String pattern, int type, String readPermission, + String writePermission) { + super(pattern, type); + mReadPermission = readPermission; + mWritePermission = writePermission; + } + + public String getReadPermission() { + return mReadPermission; + } + + public String getWritePermission() { + return mWritePermission; + } +} diff --git a/src/api-impl/android/content/pm/PermissionGroupInfo.java b/src/api-impl/android/content/pm/PermissionGroupInfo.java new file mode 100644 index 00000000..42380acb --- /dev/null +++ b/src/api-impl/android/content/pm/PermissionGroupInfo.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +//import android.text.TextUtils; + +/** + * Information you can retrieve about a particular security permission + * group known to the system. This corresponds to information collected from the + * AndroidManifest.xml's <permission-group> tags. + */ +public class PermissionGroupInfo extends PackageItemInfo { + /** + * A string resource identifier (in the package's resources) of this + * permission's description. From the "description" attribute or, + * if not set, 0. + */ + public int descriptionRes; + + /** + * The description string provided in the AndroidManifest file, if any. You + * probably don't want to use this, since it will be null if the description + * is in a resource. You probably want + * {@link PermissionInfo#loadDescription} instead. + */ + public CharSequence nonLocalizedDescription; + + /** + * Flag for {@link #flags}, corresponding to personalInfo + * value of {@link android.R.attr#permissionGroupFlags}. + */ + public static final int FLAG_PERSONAL_INFO = 1<<0; + + /** + * Additional flags about this group as given by + * {@link android.R.attr#permissionGroupFlags}. + */ + public int flags; + + /** + * Prioritization of this group, for visually sorting with other groups. + */ + public int priority; + + public PermissionGroupInfo() { + } + + public PermissionGroupInfo(PermissionGroupInfo orig) { + super(orig); + descriptionRes = orig.descriptionRes; + nonLocalizedDescription = orig.nonLocalizedDescription; + flags = orig.flags; + priority = orig.priority; + } + + /** + * Retrieve the textual description of this permission. This + * will call back on the given PackageManager to load the description from + * the application. + * + * @param pm A PackageManager from which the label can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a CharSequence containing the permission's description. + * If there is no description, null is returned. + */ + public CharSequence loadDescription(PackageManager pm) { + if (nonLocalizedDescription != null) { + return nonLocalizedDescription; + } + if (descriptionRes != 0) { + CharSequence label = pm.getText(packageName, descriptionRes, null); + if (label != null) { + return label; + } + } + return null; + } + + public String toString() { + return "PermissionGroupInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + " flgs=0x" + Integer.toHexString(flags) + "}"; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/pm/PermissionInfo.java b/src/api-impl/android/content/pm/PermissionInfo.java new file mode 100644 index 00000000..4a2dc051 --- /dev/null +++ b/src/api-impl/android/content/pm/PermissionInfo.java @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * Information you can retrieve about a particular security permission + * known to the system. This corresponds to information collected from the + * AndroidManifest.xml's <permission> tags. + */ +public class PermissionInfo extends PackageItemInfo { + /** + * A normal application value for {@link #protectionLevel}, corresponding + * to the normal value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_NORMAL = 0; + + /** + * Dangerous value for {@link #protectionLevel}, corresponding + * to the dangerous value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_DANGEROUS = 1; + + /** + * System-level value for {@link #protectionLevel}, corresponding + * to the signature value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_SIGNATURE = 2; + + /** + * System-level value for {@link #protectionLevel}, corresponding + * to the signatureOrSystem value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_SIGNATURE_OR_SYSTEM = 3; + + /** + * Additional flag for {@link #protectionLevel}, corresponding + * to the system value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_FLAG_SYSTEM = 0x10; + + /** + * Additional flag for {@link #protectionLevel}, corresponding + * to the development value of + * {@link android.R.attr#protectionLevel}. + */ + public static final int PROTECTION_FLAG_DEVELOPMENT = 0x20; + + /** + * Mask for {@link #protectionLevel}: the basic protection type. + */ + public static final int PROTECTION_MASK_BASE = 0xf; + + /** + * Mask for {@link #protectionLevel}: additional flag bits. + */ + public static final int PROTECTION_MASK_FLAGS = 0xf0; + + /** + * The level of access this permission is protecting, as per + * {@link android.R.attr#protectionLevel}. Values may be + * {@link #PROTECTION_NORMAL}, {@link #PROTECTION_DANGEROUS}, or + * {@link #PROTECTION_SIGNATURE}. May also include the additional + * flags {@link #PROTECTION_FLAG_SYSTEM} or {@link #PROTECTION_FLAG_DEVELOPMENT} + * (which only make sense in combination with the base + * {@link #PROTECTION_SIGNATURE}. + */ + public int protectionLevel; + + /** + * The group this permission is a part of, as per + * {@link android.R.attr#permissionGroup}. + */ + public String group; + + /** + * Flag for {@link #flags}, corresponding to costsMoney + * value of {@link android.R.attr#permissionFlags}. + */ + public static final int FLAG_COSTS_MONEY = 1<<0; + + /** + * Additional flags about this permission as given by + * {@link android.R.attr#permissionFlags}. + */ + public int flags; + + /** + * A string resource identifier (in the package's resources) of this + * permission's description. From the "description" attribute or, + * if not set, 0. + */ + public int descriptionRes; + + /** + * The description string provided in the AndroidManifest file, if any. You + * probably don't want to use this, since it will be null if the description + * is in a resource. You probably want + * {@link PermissionInfo#loadDescription} instead. + */ + public CharSequence nonLocalizedDescription; + + /** @hide */ + public static int fixProtectionLevel(int level) { + if (level == PROTECTION_SIGNATURE_OR_SYSTEM) { + level = PROTECTION_SIGNATURE | PROTECTION_FLAG_SYSTEM; + } + return level; + } + + /** @hide */ + public static String protectionToString(int level) { + String protLevel = "????"; + switch (level&PROTECTION_MASK_BASE) { + case PermissionInfo.PROTECTION_DANGEROUS: + protLevel = "dangerous"; + break; + case PermissionInfo.PROTECTION_NORMAL: + protLevel = "normal"; + break; + case PermissionInfo.PROTECTION_SIGNATURE: + protLevel = "signature"; + break; + case PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM: + protLevel = "signatureOrSystem"; + break; + } + if ((level&PermissionInfo.PROTECTION_FLAG_SYSTEM) != 0) { + protLevel += "|system"; + } + if ((level&PermissionInfo.PROTECTION_FLAG_DEVELOPMENT) != 0) { + protLevel += "|development"; + } + return protLevel; + } + + public PermissionInfo() { + } + + public PermissionInfo(PermissionInfo orig) { + super(orig); + protectionLevel = orig.protectionLevel; + flags = orig.flags; + group = orig.group; + descriptionRes = orig.descriptionRes; + nonLocalizedDescription = orig.nonLocalizedDescription; + } + + /** + * Retrieve the textual description of this permission. This + * will call back on the given PackageManager to load the description from + * the application. + * + * @param pm A PackageManager from which the label can be loaded; usually + * the PackageManager from which you originally retrieved this item. + * + * @return Returns a CharSequence containing the permission's description. + * If there is no description, null is returned. + */ + public CharSequence loadDescription(PackageManager pm) { + if (nonLocalizedDescription != null) { + return nonLocalizedDescription; + } + if (descriptionRes != 0) { + CharSequence label = pm.getText(packageName, descriptionRes, null); + if (label != null) { + return label; + } + } + return null; + } + + public String toString() { + return "PermissionInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + "}"; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/pm/ProviderInfo.java b/src/api-impl/android/content/pm/ProviderInfo.java new file mode 100644 index 00000000..f2c6b1b3 --- /dev/null +++ b/src/api-impl/android/content/pm/ProviderInfo.java @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.os.PatternMatcher; +import android.util.Printer; + +/** + * Holds information about a specific + * {@link android.content.ContentProvider content provider}. This is returned by + * {@link android.content.pm.PackageManager#resolveContentProvider(java.lang.String, int) + * PackageManager.resolveContentProvider()}. + */ +public final class ProviderInfo extends ComponentInfo { + + /** The name provider is published under content:// */ + public String authority = null; + + /** Optional permission required for read-only access this content + * provider. */ + public String readPermission = null; + + /** Optional permission required for read/write access this content + * provider. */ + public String writePermission = null; + + /** If true, additional permissions to specific Uris in this content + * provider can be granted, as per the + * {@link android.R.styleable#AndroidManifestProvider_grantUriPermissions + * grantUriPermissions} attribute. + */ + public boolean grantUriPermissions = false; + + /** + * If non-null, these are the patterns that are allowed for granting URI + * permissions. Any URI that does not match one of these patterns will not + * allowed to be granted. If null, all URIs are allowed. The + * {@link PackageManager#GET_URI_PERMISSION_PATTERNS + * PackageManager.GET_URI_PERMISSION_PATTERNS} flag must be specified for + * this field to be filled in. + */ + public PatternMatcher[] uriPermissionPatterns = null; + + /** + * If non-null, these are path-specific permissions that are allowed for + * accessing the provider. Any permissions listed here will allow a + * holding client to access the provider, and the provider will check + * the URI it provides when making calls against the patterns here. + */ + public PathPermission[] pathPermissions = null; + + /** If true, this content provider allows multiple instances of itself + * to run in different process. If false, a single instances is always + * run in {@link #processName}. */ + public boolean multiprocess = false; + + /** Used to control initialization order of single-process providers + * running in the same process. Higher goes first. */ + public int initOrder = 0; + + /** + * Bit in {@link #flags}: If set, a single instance of the provider will + * run for all users on the device. Set from the + * {@link android.R.attr#singleUser} attribute. + */ + public static final int FLAG_SINGLE_USER = 0x40000000; + + /** + * Options that have been set in the provider declaration in the + * manifest. + * These include: {@link #FLAG_SINGLE_USER}. + */ + public int flags = 0; + + /** + * Whether or not this provider is syncable. + * @deprecated This flag is now being ignored. The current way to make a provider + * syncable is to provide a SyncAdapter service for a given provider/account type. + */ + @Deprecated + public boolean isSyncable = false; + + public ProviderInfo() { + } + + public ProviderInfo(ProviderInfo orig) { + super(orig); + authority = orig.authority; + readPermission = orig.readPermission; + writePermission = orig.writePermission; + grantUriPermissions = orig.grantUriPermissions; + uriPermissionPatterns = orig.uriPermissionPatterns; + pathPermissions = orig.pathPermissions; + multiprocess = orig.multiprocess; + initOrder = orig.initOrder; + flags = orig.flags; + isSyncable = orig.isSyncable; + } + + public void dump(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + pw.println(prefix + "authority=" + authority); + pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); + } + + public int describeContents() { + return 0; + } + + public String toString() { + return "ContentProviderInfo{name=" + authority + " className=" + name + "}"; + } +} diff --git a/src/api-impl/android/content/pm/ServiceInfo.java b/src/api-impl/android/content/pm/ServiceInfo.java new file mode 100644 index 00000000..52bd1039 --- /dev/null +++ b/src/api-impl/android/content/pm/ServiceInfo.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.util.Printer; + +/** + * Information you can retrieve about a particular application + * service. This corresponds to information collected from the + * AndroidManifest.xml's <service> tags. + */ +public class ServiceInfo extends ComponentInfo { + /** + * Optional name of a permission required to be able to access this + * Service. From the "permission" attribute. + */ + public String permission; + + /** + * Bit in {@link #flags}: If set, the service will automatically be + * stopped by the system if the user removes a task that is rooted + * in one of the application's activities. Set from the + * {@link android.R.attr#stopWithTask} attribute. + */ + public static final int FLAG_STOP_WITH_TASK = 0x0001; + + /** + * Bit in {@link #flags}: If set, the service will run in its own + * isolated process. Set from the + * {@link android.R.attr#isolatedProcess} attribute. + */ + public static final int FLAG_ISOLATED_PROCESS = 0x0002; + + /** + * Bit in {@link #flags}: If set, a single instance of the service will + * run for all users on the device. Set from the + * {@link android.R.attr#singleUser} attribute. + */ + public static final int FLAG_SINGLE_USER = 0x40000000; + + /** + * Options that have been set in the service declaration in the + * manifest. + * These include: + * {@link #FLAG_STOP_WITH_TASK}, {@link #FLAG_ISOLATED_PROCESS}, + * {@link #FLAG_SINGLE_USER}. + */ + public int flags; + + public ServiceInfo() { + } + + public ServiceInfo(ServiceInfo orig) { + super(orig); + permission = orig.permission; + flags = orig.flags; + } + + public void dump(Printer pw, String prefix) { + super.dumpFront(pw, prefix); + pw.println(prefix + "permission=" + permission); + pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); + } + + public String toString() { + return "ServiceInfo{" + + Integer.toHexString(System.identityHashCode(this)) + + " " + name + "}"; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/pm/Signature.java b/src/api-impl/android/content/pm/Signature.java new file mode 100644 index 00000000..251607bb --- /dev/null +++ b/src/api-impl/android/content/pm/Signature.java @@ -0,0 +1,190 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import com.android.internal.util.ArrayUtils; + +import java.io.ByteArrayInputStream; +import java.lang.ref.SoftReference; +import java.security.PublicKey; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.util.Arrays; + +/** + * Opaque, immutable representation of a signature associated with an + * application package. + */ +public class Signature { + private final byte[] mSignature; + private int mHashCode; + private boolean mHaveHashCode; + private SoftReference mStringRef; + + /** + * Create Signature from an existing raw byte array. + */ + public Signature(byte[] signature) { + mSignature = signature.clone(); + } + + private static final int parseHexDigit(int nibble) { + if ('0' <= nibble && nibble <= '9') { + return nibble - '0'; + } else if ('a' <= nibble && nibble <= 'f') { + return nibble - 'a' + 10; + } else if ('A' <= nibble && nibble <= 'F') { + return nibble - 'A' + 10; + } else { + throw new IllegalArgumentException("Invalid character " + nibble + " in hex string"); + } + } + + /** + * Create Signature from a text representation previously returned by + * {@link #toChars} or {@link #toCharsString()}. Signatures are expected to + * be a hex-encoded ASCII string. + * + * @param text hex-encoded string representing the signature + * @throws IllegalArgumentException when signature is odd-length + */ + public Signature(String text) { + final byte[] input = text.getBytes(); + final int N = input.length; + + if (N % 2 != 0) { + throw new IllegalArgumentException("text size " + N + " is not even"); + } + + final byte[] sig = new byte[N / 2]; + int sigIndex = 0; + + for (int i = 0; i < N;) { + final int hi = parseHexDigit(input[i++]); + final int lo = parseHexDigit(input[i++]); + sig[sigIndex++] = (byte) ((hi << 4) | lo); + } + + mSignature = sig; + } + + /** + * Encode the Signature as ASCII text. + */ + public char[] toChars() { + return toChars(null, null); + } + + /** + * Encode the Signature as ASCII text in to an existing array. + * + * @param existingArray Existing char array or null. + * @param outLen Output parameter for the number of characters written in + * to the array. + * @return Returns either existingArray if it was large enough + * to hold the ASCII representation, or a newly created char[] array if + * needed. + */ + public char[] toChars(char[] existingArray, int[] outLen) { + byte[] sig = mSignature; + final int N = sig.length; + final int N2 = N*2; + char[] text = existingArray == null || N2 > existingArray.length + ? new char[N2] : existingArray; + for (int j=0; j>4)&0xf; + text[j*2] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d)); + d = v&0xf; + text[j*2+1] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d)); + } + if (outLen != null) outLen[0] = N; + return text; + } + + /** + * Return the result of {@link #toChars()} as a String. + */ + public String toCharsString() { + String str = mStringRef == null ? null : mStringRef.get(); + if (str != null) { + return str; + } + str = new String(toChars()); + mStringRef = new SoftReference(str); + return str; + } + + /** + * @return the contents of this signature as a byte array. + */ + public byte[] toByteArray() { + byte[] bytes = new byte[mSignature.length]; + System.arraycopy(mSignature, 0, bytes, 0, mSignature.length); + return bytes; + } + + /** + * Returns the public key for this signature. + * + * @throws CertificateException when Signature isn't a valid X.509 + * certificate; shouldn't happen. + * @hide + */ + public PublicKey getPublicKey() throws CertificateException { + final CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); + final ByteArrayInputStream bais = new ByteArrayInputStream(mSignature); + final Certificate cert = certFactory.generateCertificate(bais); + return cert.getPublicKey(); + } + + @Override + public boolean equals(Object obj) { + try { + if (obj != null) { + Signature other = (Signature)obj; + return this == other || Arrays.equals(mSignature, other.mSignature); + } + } catch (ClassCastException e) { + } + return false; + } + + @Override + public int hashCode() { + if (mHaveHashCode) { + return mHashCode; + } + mHashCode = Arrays.hashCode(mSignature); + mHaveHashCode = true; + return mHashCode; + } + + public int describeContents() { + return 0; + } + + /** + * Test if given {@link Signature} sets are exactly equal. + * + * @hide + */ + public static boolean areExactMatch(Signature[] a, Signature[] b) { + return ArrayUtils.containsAll(a, b) && ArrayUtils.containsAll(b, a); + } +} diff --git a/src/api-impl/android/content/pm/VerifierInfo.java b/src/api-impl/android/content/pm/VerifierInfo.java new file mode 100644 index 00000000..5a04869c --- /dev/null +++ b/src/api-impl/android/content/pm/VerifierInfo.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import java.security.PublicKey; + +/** + * Contains information about a package verifier as used by + * {@code PackageManagerService} during package verification. + * + * @hide + */ +public class VerifierInfo { + /** Package name of the verifier. */ + public final String packageName; + + /** Signatures used to sign the package verifier's package. */ + public final PublicKey publicKey; + + /** + * Creates an object that represents a verifier info object. + * + * @param packageName the package name in Java-style. Must not be {@code + * null} or empty. + * @param publicKey the public key for the signer encoded in Base64. Must + * not be {@code null} or empty. + * @throws IllegalArgumentException if either argument is null or empty. + */ + public VerifierInfo(String packageName, PublicKey publicKey) { + if (packageName == null || packageName.length() == 0) { + throw new IllegalArgumentException("packageName must not be null or empty"); + } else if (publicKey == null) { + throw new IllegalArgumentException("publicKey must not be null"); + } + + this.packageName = packageName; + this.publicKey = publicKey; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/res/AssetFileDescriptor.java b/src/api-impl/android/content/res/AssetFileDescriptor.java new file mode 100644 index 00000000..b60724d1 --- /dev/null +++ b/src/api-impl/android/content/res/AssetFileDescriptor.java @@ -0,0 +1,336 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import android.os.Bundle; +import android.os.ParcelFileDescriptor; + +import java.io.Closeable; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * File descriptor of an entry in the AssetManager. This provides your own + * opened FileDescriptor that can be used to read the data, as well as the + * offset and length of that entry's data in the file. + */ +public class AssetFileDescriptor implements Closeable { + /** + * Length used with {@link #AssetFileDescriptor(ParcelFileDescriptor, long, long)} + * and {@link #getDeclaredLength} when a length has not been declared. This means + * the data extends to the end of the file. + */ + public static final long UNKNOWN_LENGTH = -1; + + private final ParcelFileDescriptor mFd; + private final long mStartOffset; + private final long mLength; + private final Bundle mExtras; + + /** + * Create a new AssetFileDescriptor from the given values. + * + * @param fd The underlying file descriptor. + * @param startOffset The location within the file that the asset starts. + * This must be 0 if length is UNKNOWN_LENGTH. + * @param length The number of bytes of the asset, or + * {@link #UNKNOWN_LENGTH} if it extends to the end of the file. + */ + public AssetFileDescriptor(ParcelFileDescriptor fd, long startOffset, + long length) { + this(fd, startOffset, length, null); + } + + /** + * Create a new AssetFileDescriptor from the given values. + * + * @param fd The underlying file descriptor. + * @param startOffset The location within the file that the asset starts. + * This must be 0 if length is UNKNOWN_LENGTH. + * @param length The number of bytes of the asset, or + * {@link #UNKNOWN_LENGTH} if it extends to the end of the file. + * @param extras additional details that can be used to interpret the + * underlying file descriptor. May be null. + */ + public AssetFileDescriptor(ParcelFileDescriptor fd, long startOffset, + long length, Bundle extras) { + if (fd == null) { + throw new IllegalArgumentException("fd must not be null"); + } + if (length < 0 && startOffset != 0) { + throw new IllegalArgumentException( + "startOffset must be 0 when using UNKNOWN_LENGTH"); + } + mFd = fd; + mStartOffset = startOffset; + mLength = length; + mExtras = extras; + } + + /** + * The AssetFileDescriptor contains its own ParcelFileDescriptor, which + * in addition to the normal FileDescriptor object also allows you to close + * the descriptor when you are done with it. + */ + public ParcelFileDescriptor getParcelFileDescriptor() { + return mFd; + } + + /** + * Returns the FileDescriptor that can be used to read the data in the + * file. + */ + public FileDescriptor getFileDescriptor() { + return mFd.getFileDescriptor(); + } + + /** + * Returns the byte offset where this asset entry's data starts. + */ + public long getStartOffset() { + return mStartOffset; + } + + /** + * Returns any additional details that can be used to interpret the + * underlying file descriptor. May be null. + */ + public Bundle getExtras() { + return mExtras; + } + + /** + * Returns the total number of bytes of this asset entry's data. May be + * {@link #UNKNOWN_LENGTH} if the asset extends to the end of the file. + * If the AssetFileDescriptor was constructed with {@link #UNKNOWN_LENGTH}, + * this will use {@link ParcelFileDescriptor#getStatSize() + * ParcelFileDescriptor.getStatSize()} to find the total size of the file, + * returning that number if found or {@link #UNKNOWN_LENGTH} if it could + * not be determined. + * + * @see #getDeclaredLength() + */ + public long getLength() { + if (mLength >= 0) { + return mLength; + } + long len = mFd.getStatSize(); + return len >= 0 ? len : UNKNOWN_LENGTH; + } + + /** + * Return the actual number of bytes that were declared when the + * AssetFileDescriptor was constructed. Will be + * {@link #UNKNOWN_LENGTH} if the length was not declared, meaning data + * should be read to the end of the file. + * + * @see #getDeclaredLength() + */ + public long getDeclaredLength() { + return mLength; + } + + /** + * Convenience for calling getParcelFileDescriptor().close(). + */ + @Override + public void close() throws IOException { + mFd.close(); + } + + /** + * Create and return a new auto-close input stream for this asset. This + * will either return a full asset {@link AutoCloseInputStream}, or + * an underlying {@link ParcelFileDescriptor.AutoCloseInputStream + * ParcelFileDescriptor.AutoCloseInputStream} depending on whether the + * the object represents a complete file or sub-section of a file. You + * should only call this once for a particular asset. + */ + public FileInputStream createInputStream() throws IOException { + if (mLength < 0) { + return new ParcelFileDescriptor.AutoCloseInputStream(mFd); + } + return new AutoCloseInputStream(this); + } + + /** + * Create and return a new auto-close output stream for this asset. This + * will either return a full asset {@link AutoCloseOutputStream}, or + * an underlying {@link ParcelFileDescriptor.AutoCloseOutputStream + * ParcelFileDescriptor.AutoCloseOutputStream} depending on whether the + * the object represents a complete file or sub-section of a file. You + * should only call this once for a particular asset. + */ + public FileOutputStream createOutputStream() throws IOException { + if (mLength < 0) { + return new ParcelFileDescriptor.AutoCloseOutputStream(mFd); + } + return new AutoCloseOutputStream(this); + } + + @Override + public String toString() { + return "{AssetFileDescriptor: " + mFd + + " start=" + mStartOffset + " len=" + mLength + "}"; + } + + /** + * An InputStream you can create on a ParcelFileDescriptor, which will + * take care of calling {@link ParcelFileDescriptor#close + * ParcelFileDescritor.close()} for you when the stream is closed. + */ + public static class AutoCloseInputStream + extends ParcelFileDescriptor.AutoCloseInputStream { + private long mRemaining; + + public AutoCloseInputStream(AssetFileDescriptor fd) throws IOException { + super(fd.getParcelFileDescriptor()); + super.skip(fd.getStartOffset()); + mRemaining = (int)fd.getLength(); + } + + @Override + public int available() throws IOException { + return mRemaining >= 0 + ? (mRemaining < 0x7fffffff ? (int)mRemaining : 0x7fffffff) + : super.available(); + } + + @Override + public int read() throws IOException { + byte[] buffer = new byte[1]; + int result = read(buffer, 0, 1); + return result == -1 ? -1 : buffer[0] & 0xff; + } + + @Override + public int read(byte[] buffer, int offset, int count) throws IOException { + if (mRemaining >= 0) { + if (mRemaining == 0) return -1; + if (count > mRemaining) count = (int)mRemaining; + int res = super.read(buffer, offset, count); + if (res >= 0) mRemaining -= res; + return res; + } + + return super.read(buffer, offset, count); + } + + @Override + public int read(byte[] buffer) throws IOException { + return read(buffer, 0, buffer.length); + } + + @Override + public long skip(long count) throws IOException { + if (mRemaining >= 0) { + if (mRemaining == 0) return -1; + if (count > mRemaining) count = mRemaining; + long res = super.skip(count); + if (res >= 0) mRemaining -= res; + return res; + } + + return super.skip(count); + } + + @Override + public void mark(int readlimit) { + if (mRemaining >= 0) { + // Not supported. + return; + } + super.mark(readlimit); + } + + @Override + public boolean markSupported() { + if (mRemaining >= 0) { + return false; + } + return super.markSupported(); + } + + @Override + public synchronized void reset() throws IOException { + if (mRemaining >= 0) { + // Not supported. + return; + } + super.reset(); + } + } + + /** + * An OutputStream you can create on a ParcelFileDescriptor, which will + * take care of calling {@link ParcelFileDescriptor#close + * ParcelFileDescritor.close()} for you when the stream is closed. + */ + public static class AutoCloseOutputStream + extends ParcelFileDescriptor.AutoCloseOutputStream { + private long mRemaining; + + public AutoCloseOutputStream(AssetFileDescriptor fd) throws IOException { + super(fd.getParcelFileDescriptor()); + if (fd.getParcelFileDescriptor().seekTo(fd.getStartOffset()) < 0) { + throw new IOException("Unable to seek"); + } + mRemaining = (int)fd.getLength(); + } + + @Override + public void write(byte[] buffer, int offset, int count) throws IOException { + if (mRemaining >= 0) { + if (mRemaining == 0) return; + if (count > mRemaining) count = (int)mRemaining; + super.write(buffer, offset, count); + mRemaining -= count; + return; + } + + super.write(buffer, offset, count); + } + + @Override + public void write(byte[] buffer) throws IOException { + if (mRemaining >= 0) { + if (mRemaining == 0) return; + int count = buffer.length; + if (count > mRemaining) count = (int)mRemaining; + super.write(buffer); + mRemaining -= count; + return; + } + + super.write(buffer); + } + + @Override + public void write(int oneByte) throws IOException { + if (mRemaining >= 0) { + if (mRemaining == 0) return; + super.write(oneByte); + mRemaining--; + return; + } + + super.write(oneByte); + } + } +} diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java new file mode 100644 index 00000000..edc092a4 --- /dev/null +++ b/src/api-impl/android/content/res/AssetManager.java @@ -0,0 +1,821 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import com.hq.arscresourcesparser.ArscResourcesParser; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserFactory; + +import java.io.FileReader; + +import android.os.ParcelFileDescriptor; +import android.os.Trace; +import android.util.Log; +import android.util.TypedValue; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; + +/** + * Provides access to an application's raw asset files; see {@link Resources} + * for the way most applications will want to retrieve their resource data. + * This class presents a lower-level API that allows you to open and read raw + * files that have been bundled with the application as a simple stream of + * bytes. + */ +public final class AssetManager { + /* modes used when opening an asset */ + + /** + * Mode for {@link #open(String, int)}: no specific information about how + * data will be accessed. + */ + public static final int ACCESS_UNKNOWN = 0; + /** + * Mode for {@link #open(String, int)}: Read chunks, and seek forward and + * backward. + */ + public static final int ACCESS_RANDOM = 1; + /** + * Mode for {@link #open(String, int)}: Read sequentially, with an + * occasional forward seek. + */ + public static final int ACCESS_STREAMING = 2; + /** + * Mode for {@link #open(String, int)}: Attempt to load contents into + * memory, for fast small reads. + */ + public static final int ACCESS_BUFFER = 3; + + private static final String TAG = "AssetManager"; + private static final boolean localLOGV = false || false; + + private static final boolean DEBUG_REFS = false; + + private static final Object sSync = new Object(); + /*package*/ static AssetManager sSystem = null; + + private final TypedValue mValue = new TypedValue(); + private final long[] mOffsets = new long[2]; + + // For communication with native code. + private int mObject; + private int mNObject; // used by the NDK + + private StringBlock mStringBlocks[] = null; + + private int mNumRefs = 1; + private boolean mOpen = true; + private HashMap mRefStacks; + + private ArscResourcesParser arsc_parser; + + /** + * Create a new AssetManager containing only the basic system assets. + * Applications will not generally use this method, instead retrieving the + * appropriate asset manager with {@link Resources#getAssets}. Not for + * use by applications. + * {@hide} + */ + public AssetManager() { + // NOTE: this enforces a particular order when specifying the MicroG .apk in classpath + arsc_parser = new ArscResourcesParser(ClassLoader.getSystemClassLoader().getResource("resources.arsc")); + + // FIXME: evaluate if this can be axed + synchronized (this) { + if (DEBUG_REFS) { + mNumRefs = 0; + incRefsLocked(this.hashCode()); + } + init(); + if (localLOGV) Log.v(TAG, "New asset manager: " + this); +// ensureSystemAssets() + } + } + + private static void ensureSystemAssets() { + synchronized (sSync) { + if (sSystem == null) { + AssetManager system = new AssetManager(true); + system.makeStringBlocks(false); + sSystem = system; + } + } + } + + private AssetManager(boolean isSystem) { + if (DEBUG_REFS) { + synchronized (this) { + mNumRefs = 0; + incRefsLocked(this.hashCode()); + } + } + init(); + if (localLOGV) Log.v(TAG, "New asset manager: " + this); + } + + /** + * Return a global shared asset manager that provides access to only + * system assets (no application assets). + * {@hide} + */ + public static AssetManager getSystem() { + ensureSystemAssets(); + return sSystem; + } + + /** + * Close this asset manager. + */ + public void close() { + synchronized(this) { + //System.out.println("Release: num=" + mNumRefs + // + ", released=" + mReleased); + if (mOpen) { + mOpen = false; + decRefsLocked(this.hashCode()); + } + } + } + + /** + * Retrieve the string value associated with a particular resource + * identifier for the current configuration / skin. + */ + /*package*/ final CharSequence getResourceText(int id) { + return arsc_parser.getResource(id); + } + + /** + * Retrieve the string value associated with a particular resource + * identifier for the current configuration / skin. + */ + /*package*/ final CharSequence getResourceBagText(int ident, int bagEntryId) { + synchronized (this) { + TypedValue tmpValue = mValue; + int block = loadResourceBagValue(ident, bagEntryId, tmpValue, true); + if (block >= 0) { + if (tmpValue.type == TypedValue.TYPE_STRING) { + return mStringBlocks[block].get(tmpValue.data); + } + return tmpValue.coerceToString(); + } + } + return null; + } + + /** + * Retrieve the string array associated with a particular resource + * identifier. + * @param id Resource id of the string array + */ + /*package*/ final String[] getResourceStringArray(final int id) { + return arsc_parser.getResourceArray(id); + } + + + /*package*/ final boolean getResourceValue(int ident, + int density, + TypedValue outValue, + boolean resolveRefs) + { + /*int block = loadResourceValue(ident, (short) density, outValue, resolveRefs); + if (block >= 0) { + if (outValue.type != TypedValue.TYPE_STRING) { + return true; + } + outValue.string = mStringBlocks[block].get(outValue.data); + return true; + }*/ + outValue.type = TypedValue.TYPE_STRING; + outValue.string = getResourceText(ident); + return true; + } + + /** + * Retrieve the text array associated with a particular resource + * identifier. + * @param id Resource id of the string array + */ + /*package*/ final CharSequence[] getResourceTextArray(final int id) { + int[] rawInfoArray = getArrayStringInfo(id); + int rawInfoArrayLen = rawInfoArray.length; + final int infoArrayLen = rawInfoArrayLen / 2; + int block; + int index; + CharSequence[] retArray = new CharSequence[infoArrayLen]; + for (int i = 0, j = 0; i < rawInfoArrayLen; i = i + 2, j++) { + block = rawInfoArray[i]; + index = rawInfoArray[i + 1]; + retArray[j] = index >= 0 ? mStringBlocks[block].get(index) : null; + } + return retArray; + } + + /*package*/ final boolean getThemeValue(int theme, int ident, + TypedValue outValue, boolean resolveRefs) { + int block = loadThemeAttributeValue(theme, ident, outValue, resolveRefs); + if (block >= 0) { + if (outValue.type != TypedValue.TYPE_STRING) { + return true; + } + StringBlock[] blocks = mStringBlocks; + if (blocks == null) { + ensureStringBlocks(); + blocks = mStringBlocks; + } + outValue.string = blocks[block].get(outValue.data); + return true; + } + return false; + } + + /*package*/ final void ensureStringBlocks() { + if (mStringBlocks == null) { + synchronized (this) { + if (mStringBlocks == null) { + makeStringBlocks(true); + } + } + } + } + + /*package*/ final void makeStringBlocks(boolean copyFromSystem) { + final int sysNum = copyFromSystem ? sSystem.mStringBlocks.length : 0; + final int num = getStringBlockCount(); + mStringBlocks = new StringBlock[num]; + if (localLOGV) Log.v(TAG, "Making string blocks for " + this + + ": " + num); + for (int i=0; i Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)len; + } + public final void close() throws IOException { + synchronized (AssetManager.this) { + if (mAsset != 0) { + destroyAsset(mAsset); + mAsset = 0; + decRefsLocked(hashCode()); + } + } + } + public final void mark(int readlimit) { + mMarkPos = seekAsset(mAsset, 0, 0); + } + public final void reset() throws IOException { + seekAsset(mAsset, mMarkPos, -1); + } + public final int read(byte[] b) throws IOException { + return readAsset(mAsset, b, 0, b.length); + } + public final int read(byte[] b, int off, int len) throws IOException { + return readAsset(mAsset, b, off, len); + } + public final long skip(long n) throws IOException { + long pos = seekAsset(mAsset, 0, 0); + if ((pos+n) > mLength) { + n = mLength-pos; + } + if (n > 0) { + seekAsset(mAsset, n, 0); + } + return n; + } + + protected void finalize() throws Throwable + { + close(); + } + + private int mAsset; + private long mLength; + private long mMarkPos; + } + + /** + * Add an additional set of assets to the asset manager. This can be + * either a directory or ZIP file. Not for use by applications. Returns + * the cookie of the added asset, or 0 on failure. + * {@hide} + */ + public final int addAssetPath(String path) { + int res = addAssetPathNative(path); + return res; + } + + private native final int addAssetPathNative(String path); + + /** + * Add multiple sets of assets to the asset manager at once. See + * {@link #addAssetPath(String)} for more information. Returns array of + * cookies for each added asset with 0 indicating failure, or null if + * the input array of paths is null. + * {@hide} + */ + public final int[] addAssetPaths(String[] paths) { + if (paths == null) { + return null; + } + + int[] cookies = new int[paths.length]; + for (int i = 0; i < paths.length; i++) { + cookies[i] = addAssetPath(paths[i]); + } + + return cookies; + } + + /** + * Determine whether the state in this asset manager is up-to-date with + * the files on the filesystem. If false is returned, you need to + * instantiate a new AssetManager class to see the new data. + * {@hide} + */ + public native final boolean isUpToDate(); + + /** + * Change the locale being used by this asset manager. Not for use by + * applications. + * {@hide} + */ + public native final void setLocale(String locale); + + /** + * Get the locales that this asset manager contains data for. + */ + public native final String[] getLocales(); + + /** + * Change the configuation used when retrieving resources. Not for use by + * applications. + * {@hide} + */ + public native final void setConfiguration(int mcc, int mnc, String locale, + int orientation, int touchscreen, int density, int keyboard, + int keyboardHidden, int navigation, int screenWidth, int screenHeight, + int smallestScreenWidthDp, int screenWidthDp, int screenHeightDp, + int screenLayout, int uiMode, int majorVersion); + + /** + * Retrieve the resource identifier for the given resource name. + */ + /*package*/ /*native*/ final int getResourceIdentifier(String name, String type, String defPackage) { + System.out.println("getResourceIdentifier("+name+","+type+","+defPackage+") called"); + + int typeId; + + if(type.equals("color")) { + typeId = 1; + }else if(type.equals("drawable")) { + typeId = 2; + }else if(type.equals("layout")) { + typeId = 3; + }else if(type.equals("dimen")) { + typeId = 4; + }else if(type.equals("string")) { + typeId = 5; + }else if(type.equals("array")) { + typeId = 6; + }else if(type.equals("style")) { + typeId = 7; + }else if(type.equals("menu")) { + typeId = 8; + }else if(type.equals("id")) { + typeId = 9; + } else { + System.out.println("returning 0 (no such type: >"+type+"<)"); + return 0; + } + + System.out.println("returning: " + arsc_parser.getResourceId(name, typeId)); + System.out.println("debug: " + arsc_parser.getResource(0x7f020002)); + return arsc_parser.getResourceId(name, typeId); + } + + /*package*/ native final String getResourceName(int resid); + /*package*/ native final String getResourcePackageName(int resid); + /*package*/ native final String getResourceTypeName(int resid); + /*package*/ native final String getResourceEntryName(int resid); + + private native final int openAsset(String fileName, int accessMode); + private final native ParcelFileDescriptor openAssetFd(String fileName, + long[] outOffsets) throws IOException; + private /*native*/ final int openNonAssetNative(int cookie, String fileName, int accessMode) { + return openAsset("../"+fileName, accessMode); + } + private native ParcelFileDescriptor openNonAssetFdNative(int cookie, + String fileName, long[] outOffsets) throws IOException; + private native final void destroyAsset(int asset); + private native final int readAssetChar(int asset); + private native final int readAsset(int asset, byte[] b, int off, int len); + private native final long seekAsset(int asset, long offset, int whence); + private native final long getAssetLength(int asset); + private native final long getAssetRemainingLength(int asset); + + /** Returns true if the resource was found, filling in mRetStringBlock and + * mRetData. */ + private native final int loadResourceValue(int ident, short density, TypedValue outValue, + boolean resolve); + /** Returns true if the resource was found, filling in mRetStringBlock and + * mRetData. */ + private native final int loadResourceBagValue(int ident, int bagEntryId, TypedValue outValue, + boolean resolve); + /*package*/ static final int STYLE_NUM_ENTRIES = 6; + /*package*/ static final int STYLE_TYPE = 0; + /*package*/ static final int STYLE_DATA = 1; + /*package*/ static final int STYLE_ASSET_COOKIE = 2; + /*package*/ static final int STYLE_RESOURCE_ID = 3; + /*package*/ static final int STYLE_CHANGING_CONFIGURATIONS = 4; + /*package*/ static final int STYLE_DENSITY = 5; + /*package*/ native static final boolean applyStyle(int theme, + int defStyleAttr, int defStyleRes, int xmlParser, + int[] inAttrs, int[] outValues, int[] outIndices); + /*package*/ native final boolean retrieveAttributes( + int xmlParser, int[] inAttrs, int[] outValues, int[] outIndices); + /*package*/ native final int getArraySize(int resource); + /*package*/ native final int retrieveArray(int resource, int[] outValues); + private native final int getStringBlockCount(); + private native final int getNativeStringBlock(int block); + + /** + * {@hide} + */ + public native final String getCookieName(int cookie); + + /** + * {@hide} + */ + public native static final int getGlobalAssetCount(); + + /** + * {@hide} + */ + public native static final String getAssetAllocations(); + + /** + * {@hide} + */ + public native static final int getGlobalAssetManagerCount(); + + private native final int newTheme(); + private native final void deleteTheme(int theme); + /*package*/ native static final void applyThemeStyle(int theme, int styleRes, boolean force); + /*package*/ native static final void copyTheme(int dest, int source); + /*package*/ native static final int loadThemeAttributeValue(int theme, int ident, + TypedValue outValue, + boolean resolve); + /*package*/ native static final void dumpTheme(int theme, int priority, String tag, String prefix); + + private /*native*/ final int openXmlAssetNative(int cookie, String fileName) { + return openAsset("../"+fileName, 0); + } + + private native final String[] getArrayStringResource(int arrayRes); + private native final int[] getArrayStringInfo(int arrayRes); + /*package*/ native final int[] getArrayIntResource(int arrayRes); + + private/* native */final void init() {} + private native final void destroy(); + + private final void incRefsLocked(int id) { + if (DEBUG_REFS) { + if (mRefStacks == null) { + mRefStacks = new HashMap(); + RuntimeException ex = new RuntimeException(); + ex.fillInStackTrace(); + mRefStacks.put(this.hashCode(), ex); + } + } + mNumRefs++; + } + + private final void decRefsLocked(int id) { + if (DEBUG_REFS && mRefStacks != null) { + mRefStacks.remove(id); + } + mNumRefs--; + //System.out.println("Dec streams: mNumRefs=" + mNumRefs + // + " mReleased=" + mReleased); + if (mNumRefs == 0) { + destroy(); + } + } +} diff --git a/src/api-impl/android/content/res/ColorStateList.java b/src/api-impl/android/content/res/ColorStateList.java new file mode 100644 index 00000000..7d92ac87 --- /dev/null +++ b/src/api-impl/android/content/res/ColorStateList.java @@ -0,0 +1,300 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import com.android.internal.util.ArrayUtils; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import android.util.AttributeSet; +import android.util.SparseArray; +import android.util.StateSet; +import android.util.Xml; + +import java.io.IOException; +import java.lang.ref.WeakReference; +import java.util.Arrays; + +/** + * + * Lets you map {@link android.view.View} state sets to colors. + * + * {@link android.content.res.ColorStateList}s are created from XML resource files defined in the + * "color" subdirectory directory of an application's resource directory. The XML file contains + * a single "selector" element with a number of "item" elements inside. For example: + * + *
+ * <selector xmlns:android="http://schemas.android.com/apk/res/android">
+ *   <item android:state_focused="true" android:color="@color/testcolor1"/>
+ *   <item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" />
+ *   <item android:state_enabled="false" android:color="@color/testcolor3" />
+ *   <item android:color="@color/testcolor5"/>
+ * </selector>
+ * 
+ * + * This defines a set of state spec / color pairs where each state spec specifies a set of + * states that a view must either be in or not be in and the color specifies the color associated + * with that spec. The list of state specs will be processed in order of the items in the XML file. + * An item with no state spec is considered to match any set of states and is generally useful as + * a final item to be used as a default. Note that if you have such an item before any other items + * in the list then any subsequent items will end up being ignored. + *

For more information, see the guide to Color State + * List Resource.

+ */ +public class ColorStateList { + + private int[][] mStateSpecs; // must be parallel to mColors + private int[] mColors; // must be parallel to mStateSpecs + private int mDefaultColor = 0xffff0000; + + private static final int[][] EMPTY = new int[][] { new int[0] }; + private static final SparseArray> sCache = + new SparseArray>(); + + private ColorStateList() { } + + /** + * Creates a ColorStateList that returns the specified mapping from + * states to colors. + */ + public ColorStateList(int[][] states, int[] colors) { + mStateSpecs = states; + mColors = colors; + + if (states.length > 0) { + mDefaultColor = colors[0]; + + for (int i = 0; i < states.length; i++) { + if (states[i].length == 0) { + mDefaultColor = colors[i]; + } + } + } + } + + /** + * Creates or retrieves a ColorStateList that always returns a single color. + */ + public static ColorStateList valueOf(int color) { + // TODO: should we collect these eventually? + synchronized (sCache) { + WeakReference ref = sCache.get(color); + ColorStateList csl = ref != null ? ref.get() : null; + + if (csl != null) { + return csl; + } + + csl = new ColorStateList(EMPTY, new int[] { color }); + sCache.put(color, new WeakReference(csl)); + return csl; + } + } + + /** + * Create a ColorStateList from an XML document, given a set of {@link Resources}. + */ + public static ColorStateList createFromXml(Resources r, XmlPullParser parser) + throws XmlPullParserException, IOException { + + AttributeSet attrs = Xml.asAttributeSet(parser); + + int type; + while ((type=parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { + } + + if (type != XmlPullParser.START_TAG) { + throw new XmlPullParserException("No start tag found"); + } + + return createFromXmlInner(r, parser, attrs); + } + + /* Create from inside an XML document. Called on a parser positioned at + * a tag in an XML document, tries to create a ColorStateList from that tag. + * Returns null if the tag is not a valid ColorStateList. + */ + private static ColorStateList createFromXmlInner(Resources r, XmlPullParser parser, + AttributeSet attrs) throws XmlPullParserException, IOException { + + ColorStateList colorStateList; + + final String name = parser.getName(); + + if (name.equals("selector")) { + colorStateList = new ColorStateList(); + } else { + throw new XmlPullParserException( + parser.getPositionDescription() + ": invalid drawable tag " + name); + } + + colorStateList.inflate(r, parser, attrs); + return colorStateList; + } + + /** + * Creates a new ColorStateList that has the same states and + * colors as this one but where each color has the specified alpha value + * (0-255). + */ + public ColorStateList withAlpha(int alpha) { + int[] colors = new int[mColors.length]; + + int len = colors.length; + for (int i = 0; i < len; i++) { + colors[i] = (mColors[i] & 0xFFFFFF) | (alpha << 24); + } + + return new ColorStateList(mStateSpecs, colors); + } + + /** + * Fill in this object based on the contents of an XML "selector" element. + */ + private void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) + throws XmlPullParserException, IOException { + + int type; + + final int innerDepth = parser.getDepth()+1; + int depth; + + int listAllocated = 20; + int listSize = 0; + int[] colorList = new int[listAllocated]; + int[][] stateSpecList = new int[listAllocated][]; + + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && ((depth=parser.getDepth()) >= innerDepth + || type != XmlPullParser.END_TAG)) { + if (type != XmlPullParser.START_TAG) { + continue; + } + + if (depth > innerDepth || !parser.getName().equals("item")) { + continue; + } + + int colorRes = 0; + int color = 0xffff0000; + boolean haveColor = false; + + int i; + int j = 0; + final int numAttrs = attrs.getAttributeCount(); + int[] stateSpec = new int[numAttrs]; + for (i = 0; i < numAttrs; i++) { + final int stateResId = attrs.getAttributeNameResource(i); + if (stateResId == 0) break; + if (stateResId == com.android.internal.R.attr.color) { + colorRes = attrs.getAttributeResourceValue(i, 0); + + if (colorRes == 0) { + color = attrs.getAttributeIntValue(i, color); + haveColor = true; + } + } else { + stateSpec[j++] = attrs.getAttributeBooleanValue(i, false) + ? stateResId + : -stateResId; + } + } + stateSpec = StateSet.trimStateSet(stateSpec, j); + + if (colorRes != 0) { + color = r.getColor(colorRes); + } else if (!haveColor) { + throw new XmlPullParserException( + parser.getPositionDescription() + + ": tag requires a 'android:color' attribute."); + } + + if (listSize == 0 || stateSpec.length == 0) { + mDefaultColor = color; + } + + if (listSize + 1 >= listAllocated) { + listAllocated = ArrayUtils.idealIntArraySize(listSize + 1); + + int[] ncolor = new int[listAllocated]; + System.arraycopy(colorList, 0, ncolor, 0, listSize); + + int[][] nstate = new int[listAllocated][]; + System.arraycopy(stateSpecList, 0, nstate, 0, listSize); + + colorList = ncolor; + stateSpecList = nstate; + } + + colorList[listSize] = color; + stateSpecList[listSize] = stateSpec; + listSize++; + } + + mColors = new int[listSize]; + mStateSpecs = new int[listSize][]; + System.arraycopy(colorList, 0, mColors, 0, listSize); + System.arraycopy(stateSpecList, 0, mStateSpecs, 0, listSize); + } + + public boolean isStateful() { + return mStateSpecs.length > 1; + } + + /** + * Return the color associated with the given set of {@link android.view.View} states. + * + * @param stateSet an array of {@link android.view.View} states + * @param defaultColor the color to return if there's not state spec in this + * {@link ColorStateList} that matches the stateSet. + * + * @return the color associated with that set of states in this {@link ColorStateList}. + */ + public int getColorForState(int[] stateSet, int defaultColor) { + final int setLength = mStateSpecs.length; + for (int i = 0; i < setLength; i++) { + int[] stateSpec = mStateSpecs[i]; + if (StateSet.stateSetMatches(stateSpec, stateSet)) { + return mColors[i]; + } + } + return defaultColor; + } + + /** + * Return the default color in this {@link ColorStateList}. + * + * @return the default color in this {@link ColorStateList}. + */ + public int getDefaultColor() { + return mDefaultColor; + } + + public String toString() { + return "ColorStateList{" + + "mStateSpecs=" + Arrays.deepToString(mStateSpecs) + + "mColors=" + Arrays.toString(mColors) + + "mDefaultColor=" + mDefaultColor + '}'; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/res/CompatibilityInfo.java b/src/api-impl/android/content/res/CompatibilityInfo.java new file mode 100644 index 00000000..83e78f55 --- /dev/null +++ b/src/api-impl/android/content/res/CompatibilityInfo.java @@ -0,0 +1,575 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import android.content.pm.ApplicationInfo; +//import android.graphics.Canvas; +//import android.graphics.PointF; +//import android.graphics.Rect; +//import android.graphics.Region; +import android.util.DisplayMetrics; +import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; + +class Canvas {} +class PointF {} +class Rect {} +class Region {} +class MotionEvent {} + +/** + * CompatibilityInfo class keeps the information about compatibility mode that the application is + * running under. + * + * {@hide} + */ +public class CompatibilityInfo { + /** default compatibility info object for compatible applications */ + public static final CompatibilityInfo DEFAULT_COMPATIBILITY_INFO = new CompatibilityInfo() { + }; + + /** + * This is the number of pixels we would like to have along the + * short axis of an app that needs to run on a normal size screen. + */ + public static final int DEFAULT_NORMAL_SHORT_DIMENSION = 320; + + /** + * This is the maximum aspect ratio we will allow while keeping + * applications in a compatible screen size. + */ + public static final float MAXIMUM_ASPECT_RATIO = (854f/480f); + + /** + * A compatibility flags + */ + private final int mCompatibilityFlags; + + /** + * A flag mask to tell if the application needs scaling (when mApplicationScale != 1.0f) + * {@see compatibilityFlag} + */ + private static final int SCALING_REQUIRED = 1; + + /** + * Application must always run in compatibility mode? + */ + private static final int ALWAYS_NEEDS_COMPAT = 2; + + /** + * Application never should run in compatibility mode? + */ + private static final int NEVER_NEEDS_COMPAT = 4; + + /** + * Set if the application needs to run in screen size compatibility mode. + */ + private static final int NEEDS_SCREEN_COMPAT = 8; + + /** + * The effective screen density we have selected for this application. + */ + public final int applicationDensity; + + /** + * Application's scale. + */ + public final float applicationScale; + + /** + * Application's inverted scale. + */ + public final float applicationInvertedScale; + + public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, + boolean forceCompat) { + int compatFlags = 0; + + if (appInfo.requiresSmallestWidthDp != 0 || appInfo.compatibleWidthLimitDp != 0 + || appInfo.largestWidthLimitDp != 0) { + // New style screen requirements spec. + int required = appInfo.requiresSmallestWidthDp != 0 + ? appInfo.requiresSmallestWidthDp + : appInfo.compatibleWidthLimitDp; + if (required == 0) { + required = appInfo.largestWidthLimitDp; + } + int compat = appInfo.compatibleWidthLimitDp != 0 + ? appInfo.compatibleWidthLimitDp : required; + if (compat < required) { + compat = required; + } + int largest = appInfo.largestWidthLimitDp; + + if (required > DEFAULT_NORMAL_SHORT_DIMENSION) { + // For now -- if they require a size larger than the only + // size we can do in compatibility mode, then don't ever + // allow the app to go in to compat mode. Trying to run + // it at a smaller size it can handle will make it far more + // broken than running at a larger size than it wants or + // thinks it can handle. + compatFlags |= NEVER_NEEDS_COMPAT; + } else if (largest != 0 && sw > largest) { + // If the screen size is larger than the largest size the + // app thinks it can work with, then always force it in to + // compatibility mode. + compatFlags |= NEEDS_SCREEN_COMPAT | ALWAYS_NEEDS_COMPAT; + } else if (compat >= sw) { + // The screen size is something the app says it was designed + // for, so never do compatibility mode. + compatFlags |= NEVER_NEEDS_COMPAT; + } else if (forceCompat) { + // The app may work better with or without compatibility mode. + // Let the user decide. + compatFlags |= NEEDS_SCREEN_COMPAT; + } + + // Modern apps always support densities. + applicationDensity = DisplayMetrics.DENSITY_DEVICE; + applicationScale = 1.0f; + applicationInvertedScale = 1.0f; + + } else { + /** + * Has the application said that its UI is expandable? Based on the + * android:expandible in the manifest. + */ + final int EXPANDABLE = 2; + + /** + * Has the application said that its UI supports large screens? Based on the + * android:largeScreens in the manifest. + */ + final int LARGE_SCREENS = 8; + + /** + * Has the application said that its UI supports xlarge screens? Based on the + * android:xlargeScreens in the manifest. + */ + final int XLARGE_SCREENS = 32; + + int sizeInfo = 0; + + // We can't rely on the application always setting + // FLAG_RESIZEABLE_FOR_SCREENS so will compute it based on various input. + boolean anyResizeable = false; + + if ((appInfo.flags & ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS) != 0) { + sizeInfo |= LARGE_SCREENS; + anyResizeable = true; + if (!forceCompat) { + // If we aren't forcing the app into compatibility mode, then + // assume if it supports large screens that we should allow it + // to use the full space of an xlarge screen as well. + sizeInfo |= XLARGE_SCREENS | EXPANDABLE; + } + } + if ((appInfo.flags & ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS) != 0) { + anyResizeable = true; + if (!forceCompat) { + sizeInfo |= XLARGE_SCREENS | EXPANDABLE; + } + } + if ((appInfo.flags & ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS) != 0) { + anyResizeable = true; + sizeInfo |= EXPANDABLE; + } + + if (forceCompat) { + // If we are forcing compatibility mode, then ignore an app that + // just says it is resizable for screens. We'll only have it fill + // the screen if it explicitly says it supports the screen size we + // are running in. + sizeInfo &= ~EXPANDABLE; + } + + compatFlags |= NEEDS_SCREEN_COMPAT; + switch (screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) { + case Configuration.SCREENLAYOUT_SIZE_XLARGE: + if ((sizeInfo&XLARGE_SCREENS) != 0) { + compatFlags &= ~NEEDS_SCREEN_COMPAT; + } + if ((appInfo.flags & ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS) != 0) { + compatFlags |= NEVER_NEEDS_COMPAT; + } + break; + case Configuration.SCREENLAYOUT_SIZE_LARGE: + if ((sizeInfo&LARGE_SCREENS) != 0) { + compatFlags &= ~NEEDS_SCREEN_COMPAT; + } + if ((appInfo.flags & ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS) != 0) { + compatFlags |= NEVER_NEEDS_COMPAT; + } + break; + } + + if ((screenLayout&Configuration.SCREENLAYOUT_COMPAT_NEEDED) != 0) { + if ((sizeInfo&EXPANDABLE) != 0) { + compatFlags &= ~NEEDS_SCREEN_COMPAT; + } else if (!anyResizeable) { + compatFlags |= ALWAYS_NEEDS_COMPAT; + } + } else { + compatFlags &= ~NEEDS_SCREEN_COMPAT; + compatFlags |= NEVER_NEEDS_COMPAT; + } + + if ((appInfo.flags & ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES) != 0) { + applicationDensity = DisplayMetrics.DENSITY_DEVICE; + applicationScale = 1.0f; + applicationInvertedScale = 1.0f; + } else { + applicationDensity = DisplayMetrics.DENSITY_DEFAULT; + applicationScale = DisplayMetrics.DENSITY_DEVICE + / (float) DisplayMetrics.DENSITY_DEFAULT; + applicationInvertedScale = 1.0f / applicationScale; + compatFlags |= SCALING_REQUIRED; + } + } + + mCompatibilityFlags = compatFlags; + } + + private CompatibilityInfo(int compFlags, + int dens, float scale, float invertedScale) { + mCompatibilityFlags = compFlags; + applicationDensity = dens; + applicationScale = scale; + applicationInvertedScale = invertedScale; + } + + private CompatibilityInfo() { + this(NEVER_NEEDS_COMPAT, DisplayMetrics.DENSITY_DEVICE, + 1.0f, + 1.0f); + } + + /** + * @return true if the scaling is required + */ + public boolean isScalingRequired() { + return (mCompatibilityFlags&SCALING_REQUIRED) != 0; + } + + public boolean supportsScreen() { + return (mCompatibilityFlags&NEEDS_SCREEN_COMPAT) == 0; + } + + public boolean neverSupportsScreen() { + return (mCompatibilityFlags&ALWAYS_NEEDS_COMPAT) != 0; + } + + public boolean alwaysSupportsScreen() { + return (mCompatibilityFlags&NEVER_NEEDS_COMPAT) != 0; + } + + /** + * Returns the translator which translates the coordinates in compatibility mode. + * @param params the window's parameter + */ + public Translator getTranslator() { + return isScalingRequired() ? new Translator() : null; + } + + /** + * A helper object to translate the screen and window coordinates back and forth. + * @hide + */ + public class Translator { + final public float applicationScale; + final public float applicationInvertedScale; + + private Rect mContentInsetsBuffer = null; + private Rect mVisibleInsetsBuffer = null; + private Region mTouchableAreaBuffer = null; + + Translator(float applicationScale, float applicationInvertedScale) { + this.applicationScale = applicationScale; + this.applicationInvertedScale = applicationInvertedScale; + } + + Translator() { + this(CompatibilityInfo.this.applicationScale, + CompatibilityInfo.this.applicationInvertedScale); + } + + /** + * Translate the screen rect to the application frame. + */ + public void translateRectInScreenToAppWinFrame(Rect rect) {/* + rect.scale(applicationInvertedScale); + */} + + /** + * Translate the region in window to screen. + */ + public void translateRegionInWindowToScreen(Region transparentRegion) {/* + transparentRegion.scale(applicationScale); + */} + + /** + * Apply translation to the canvas that is necessary to draw the content. + */ + public void translateCanvas(Canvas canvas) {/* + if (applicationScale == 1.5f) { + /* When we scale for compatibility, we can put our stretched + bitmaps and ninepatches on exacty 1/2 pixel boundaries, + which can give us inconsistent drawing due to imperfect + float precision in the graphics engine's inverse matrix. + + As a work-around, we translate by a tiny amount to avoid + landing on exact pixel centers and boundaries, giving us + the slop we need to draw consistently. + + This constant is meant to resolve to 1/255 after it is + scaled by 1.5 (applicationScale). Note, this is just a guess + as to what is small enough not to create its own artifacts, + and big enough to avoid the precision problems. Feel free + to experiment with smaller values as you choose. + * / + final float tinyOffset = 2.0f / (3 * 255); + canvas.translate(tinyOffset, tinyOffset); + } + canvas.scale(applicationScale, applicationScale); + */} + + /** + * Translate the motion event captured on screen to the application's window. + */ + public void translateEventInScreenToAppWindow(MotionEvent event) {/* + event.scale(applicationInvertedScale); + */} + + /** + * Translate the window's layout parameter, from application's view to + * Screen's view. + */ + public void translateWindowLayout(WindowManager.LayoutParams params) {/* + params.scale(applicationScale); + */} + + /** + * Translate a Rect in application's window to screen. + */ + public void translateRectInAppWindowToScreen(Rect rect) {/* + rect.scale(applicationScale); + */} + + /** + * Translate a Rect in screen coordinates into the app window's coordinates. + */ + public void translateRectInScreenToAppWindow(Rect rect) {/* + rect.scale(applicationInvertedScale); + */} + + /** + * Translate a Point in screen coordinates into the app window's coordinates. + */ + public void translatePointInScreenToAppWindow(PointF point) {/* + final float scale = applicationInvertedScale; + if (scale != 1.0f) { + point.x *= scale; + point.y *= scale; + } + */} + + /** + * Translate the location of the sub window. + * @param params + */ + public void translateLayoutParamsInAppWindowToScreen(LayoutParams params) {/* + params.scale(applicationScale); + */} + + /** + * Translate the content insets in application window to Screen. This uses + * the internal buffer for content insets to avoid extra object allocation. + */ + public Rect getTranslatedContentInsets(Rect contentInsets) {/* + if (mContentInsetsBuffer == null) mContentInsetsBuffer = new Rect(); + mContentInsetsBuffer.set(contentInsets); + translateRectInAppWindowToScreen(mContentInsetsBuffer); + return mContentInsetsBuffer; + */return null;} + + /** + * Translate the visible insets in application window to Screen. This uses + * the internal buffer for visible insets to avoid extra object allocation. + */ + public Rect getTranslatedVisibleInsets(Rect visibleInsets) {/* + if (mVisibleInsetsBuffer == null) mVisibleInsetsBuffer = new Rect(); + mVisibleInsetsBuffer.set(visibleInsets); + translateRectInAppWindowToScreen(mVisibleInsetsBuffer); + return mVisibleInsetsBuffer; + */return null;} + + /** + * Translate the touchable area in application window to Screen. This uses + * the internal buffer for touchable area to avoid extra object allocation. + */ + public Region getTranslatedTouchableArea(Region touchableArea) {/* + if (mTouchableAreaBuffer == null) mTouchableAreaBuffer = new Region(); + mTouchableAreaBuffer.set(touchableArea); + mTouchableAreaBuffer.scale(applicationScale); + return mTouchableAreaBuffer; + */return null;} + } + + public void applyToDisplayMetrics(DisplayMetrics inoutDm) { + if (!supportsScreen()) { + // This is a larger screen device and the app is not + // compatible with large screens, so diddle it. + CompatibilityInfo.computeCompatibleScaling(inoutDm, inoutDm); + } else { + inoutDm.widthPixels = inoutDm.noncompatWidthPixels; + inoutDm.heightPixels = inoutDm.noncompatHeightPixels; + } + + if (isScalingRequired()) { + float invertedRatio = applicationInvertedScale; + inoutDm.density = inoutDm.noncompatDensity * invertedRatio; + inoutDm.densityDpi = (int)((inoutDm.noncompatDensityDpi * invertedRatio) + .5f); + inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * invertedRatio; + inoutDm.xdpi = inoutDm.noncompatXdpi * invertedRatio; + inoutDm.ydpi = inoutDm.noncompatYdpi * invertedRatio; + inoutDm.widthPixels = (int) (inoutDm.widthPixels * invertedRatio + 0.5f); + inoutDm.heightPixels = (int) (inoutDm.heightPixels * invertedRatio + 0.5f); + } + } + + public void applyToConfiguration(int displayDensity, Configuration inoutConfig) { + if (!supportsScreen()) { + // This is a larger screen device and the app is not + // compatible with large screens, so we are forcing it to + // run as if the screen is normal size. + inoutConfig.screenLayout = + (inoutConfig.screenLayout&~Configuration.SCREENLAYOUT_SIZE_MASK) + | Configuration.SCREENLAYOUT_SIZE_NORMAL; + inoutConfig.screenWidthDp = inoutConfig.compatScreenWidthDp; + inoutConfig.screenHeightDp = inoutConfig.compatScreenHeightDp; + inoutConfig.smallestScreenWidthDp = inoutConfig.compatSmallestScreenWidthDp; + } + inoutConfig.densityDpi = displayDensity; + if (isScalingRequired()) { + float invertedRatio = applicationInvertedScale; + inoutConfig.densityDpi = (int)((inoutConfig.densityDpi * invertedRatio) + .5f); + } + } + + /** + * Compute the frame Rect for applications runs under compatibility mode. + * + * @param dm the display metrics used to compute the frame size. + * @param outDm If non-null the width and height will be set to their scaled values. + * @return Returns the scaling factor for the window. + */ + public static float computeCompatibleScaling(DisplayMetrics dm, DisplayMetrics outDm) { + final int width = dm.noncompatWidthPixels; + final int height = dm.noncompatHeightPixels; + int shortSize, longSize; + if (width < height) { + shortSize = width; + longSize = height; + } else { + shortSize = height; + longSize = width; + } + int newShortSize = (int)(DEFAULT_NORMAL_SHORT_DIMENSION * dm.density + 0.5f); + float aspect = ((float)longSize) / shortSize; + if (aspect > MAXIMUM_ASPECT_RATIO) { + aspect = MAXIMUM_ASPECT_RATIO; + } + int newLongSize = (int)(newShortSize * aspect + 0.5f); + int newWidth, newHeight; + if (width < height) { + newWidth = newShortSize; + newHeight = newLongSize; + } else { + newWidth = newLongSize; + newHeight = newShortSize; + } + + float sw = width/(float)newWidth; + float sh = height/(float)newHeight; + float scale = sw < sh ? sw : sh; + if (scale < 1) { + scale = 1; + } + + if (outDm != null) { + outDm.widthPixels = newWidth; + outDm.heightPixels = newHeight; + } + + return scale; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + try { + CompatibilityInfo oc = (CompatibilityInfo)o; + if (mCompatibilityFlags != oc.mCompatibilityFlags) return false; + if (applicationDensity != oc.applicationDensity) return false; + if (applicationScale != oc.applicationScale) return false; + if (applicationInvertedScale != oc.applicationInvertedScale) return false; + return true; + } catch (ClassCastException e) { + return false; + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("{"); + sb.append(applicationDensity); + sb.append("dpi"); + if (isScalingRequired()) { + sb.append(" "); + sb.append(applicationScale); + sb.append("x"); + } + if (!supportsScreen()) { + sb.append(" resizing"); + } + if (neverSupportsScreen()) { + sb.append(" never-compat"); + } + if (alwaysSupportsScreen()) { + sb.append(" always-compat"); + } + sb.append("}"); + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 17; + result = 31 * result + mCompatibilityFlags; + result = 31 * result + applicationDensity; + result = 31 * result + Float.floatToIntBits(applicationScale); + result = 31 * result + Float.floatToIntBits(applicationInvertedScale); + return result; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/content/res/Configuration.java b/src/api-impl/android/content/res/Configuration.java new file mode 100644 index 00000000..47c201a4 --- /dev/null +++ b/src/api-impl/android/content/res/Configuration.java @@ -0,0 +1,1216 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import android.content.pm.ActivityInfo; +//import android.text.TextUtils; +import android.view.View; + +import java.util.Locale; + +/** + * This class describes all device configuration information that can + * impact the resources the application retrieves. This includes both + * user-specified configuration options (locale and scaling) as well + * as device configurations (such as input modes, screen size and screen orientation). + *

You can acquire this object from {@link Resources}, using {@link + * Resources#getConfiguration}. Thus, from an activity, you can get it by chaining the request + * with {@link android.app.Activity#getResources}:

+ *
Configuration config = getResources().getConfiguration();
+ */ +public final class Configuration implements Comparable { + /** @hide */ + public static final Configuration EMPTY = new Configuration(); + + /** + * Current user preference for the scaling factor for fonts, relative + * to the base density scaling. + */ + public float fontScale; + + /** + * IMSI MCC (Mobile Country Code), corresponding to + * mcc + * resource qualifier. 0 if undefined. + */ + public int mcc; + + /** + * IMSI MNC (Mobile Network Code), corresponding to + * mnc + * resource qualifier. 0 if undefined. Note that the actual MNC may be 0; in order to check + * for this use the {@link #MNC_ZERO} symbol. + */ + public int mnc; + + /** + * Constant used to to represent MNC (Mobile Network Code) zero. + * 0 cannot be used, since it is used to represent an undefined MNC. + */ + public static final int MNC_ZERO = 0xffff; + + /** + * Current user preference for the locale, corresponding to + * locale + * resource qualifier. + */ + public Locale locale; + + /** + * Locale should persist on setting. This is hidden because it is really + * questionable whether this is the right way to expose the functionality. + * @hide + */ + public boolean userSetLocale; + + /** Constant for {@link #screenLayout}: bits that encode the size. */ + public static final int SCREENLAYOUT_SIZE_MASK = 0x0f; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK} + * value indicating that no size has been set. */ + public static final int SCREENLAYOUT_SIZE_UNDEFINED = 0x00; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK} + * value indicating the screen is at least approximately 320x426 dp units, + * corresponds to the + * small + * resource qualifier. + * See Supporting + * Multiple Screens for more information. */ + public static final int SCREENLAYOUT_SIZE_SMALL = 0x01; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK} + * value indicating the screen is at least approximately 320x470 dp units, + * corresponds to the + * normal + * resource qualifier. + * See Supporting + * Multiple Screens for more information. */ + public static final int SCREENLAYOUT_SIZE_NORMAL = 0x02; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK} + * value indicating the screen is at least approximately 480x640 dp units, + * corresponds to the + * large + * resource qualifier. + * See Supporting + * Multiple Screens for more information. */ + public static final int SCREENLAYOUT_SIZE_LARGE = 0x03; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_SIZE_MASK} + * value indicating the screen is at least approximately 720x960 dp units, + * corresponds to the + * xlarge + * resource qualifier. + * See Supporting + * Multiple Screens for more information.*/ + public static final int SCREENLAYOUT_SIZE_XLARGE = 0x04; + + /** Constant for {@link #screenLayout}: bits that encode the aspect ratio. */ + public static final int SCREENLAYOUT_LONG_MASK = 0x30; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LONG_MASK} + * value indicating that no size has been set. */ + public static final int SCREENLAYOUT_LONG_UNDEFINED = 0x00; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LONG_MASK} + * value that corresponds to the + * notlong + * resource qualifier. */ + public static final int SCREENLAYOUT_LONG_NO = 0x10; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LONG_MASK} + * value that corresponds to the + * long + * resource qualifier. */ + public static final int SCREENLAYOUT_LONG_YES = 0x20; + + /** Constant for {@link #screenLayout}: bits that encode the layout direction. */ + public static final int SCREENLAYOUT_LAYOUTDIR_MASK = 0xC0; + /** Constant for {@link #screenLayout}: bits shift to get the layout direction. */ + public static final int SCREENLAYOUT_LAYOUTDIR_SHIFT = 6; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LAYOUTDIR_MASK} + * value indicating that no layout dir has been set. */ + public static final int SCREENLAYOUT_LAYOUTDIR_UNDEFINED = 0x00; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LAYOUTDIR_MASK} + * value indicating that a layout dir has been set to LTR. */ + public static final int SCREENLAYOUT_LAYOUTDIR_LTR = 0x01 << SCREENLAYOUT_LAYOUTDIR_SHIFT; + /** Constant for {@link #screenLayout}: a {@link #SCREENLAYOUT_LAYOUTDIR_MASK} + * value indicating that a layout dir has been set to RTL. */ + public static final int SCREENLAYOUT_LAYOUTDIR_RTL = 0x02 << SCREENLAYOUT_LAYOUTDIR_SHIFT; + + /** Constant for {@link #screenLayout}: a value indicating that screenLayout is undefined */ + public static final int SCREENLAYOUT_UNDEFINED = SCREENLAYOUT_SIZE_UNDEFINED | + SCREENLAYOUT_LONG_UNDEFINED | SCREENLAYOUT_LAYOUTDIR_UNDEFINED; + + /** + * Special flag we generate to indicate that the screen layout requires + * us to use a compatibility mode for apps that are not modern layout + * aware. + * @hide + */ + public static final int SCREENLAYOUT_COMPAT_NEEDED = 0x10000000; + + /** + * Bit mask of overall layout of the screen. Currently there are two + * fields: + *

The {@link #SCREENLAYOUT_SIZE_MASK} bits define the overall size + * of the screen. They may be one of + * {@link #SCREENLAYOUT_SIZE_SMALL}, {@link #SCREENLAYOUT_SIZE_NORMAL}, + * {@link #SCREENLAYOUT_SIZE_LARGE}, or {@link #SCREENLAYOUT_SIZE_XLARGE}. + * + *

The {@link #SCREENLAYOUT_LONG_MASK} defines whether the screen + * is wider/taller than normal. They may be one of + * {@link #SCREENLAYOUT_LONG_NO} or {@link #SCREENLAYOUT_LONG_YES}. + * + *

The {@link #SCREENLAYOUT_LAYOUTDIR_MASK} defines whether the screen layout + * is either LTR or RTL. They may be one of + * {@link #SCREENLAYOUT_LAYOUTDIR_LTR} or {@link #SCREENLAYOUT_LAYOUTDIR_RTL}. + * + *

See Supporting + * Multiple Screens for more information. + */ + public int screenLayout; + + /** @hide */ + static public int resetScreenLayout(int curLayout) { + return (curLayout&~(SCREENLAYOUT_LONG_MASK | SCREENLAYOUT_SIZE_MASK + | SCREENLAYOUT_COMPAT_NEEDED)) + | (SCREENLAYOUT_LONG_YES | SCREENLAYOUT_SIZE_XLARGE); + } + + /** @hide */ + static public int reduceScreenLayout(int curLayout, int longSizeDp, int shortSizeDp) { + int screenLayoutSize; + boolean screenLayoutLong; + boolean screenLayoutCompatNeeded; + + // These semi-magic numbers define our compatibility modes for + // applications with different screens. These are guarantees to + // app developers about the space they can expect for a particular + // configuration. DO NOT CHANGE! + if (longSizeDp < 470) { + // This is shorter than an HVGA normal density screen (which + // is 480 pixels on its long side). + screenLayoutSize = SCREENLAYOUT_SIZE_SMALL; + screenLayoutLong = false; + screenLayoutCompatNeeded = false; + } else { + // What size is this screen screen? + if (longSizeDp >= 960 && shortSizeDp >= 720) { + // 1.5xVGA or larger screens at medium density are the point + // at which we consider it to be an extra large screen. + screenLayoutSize = SCREENLAYOUT_SIZE_XLARGE; + } else if (longSizeDp >= 640 && shortSizeDp >= 480) { + // VGA or larger screens at medium density are the point + // at which we consider it to be a large screen. + screenLayoutSize = SCREENLAYOUT_SIZE_LARGE; + } else { + screenLayoutSize = SCREENLAYOUT_SIZE_NORMAL; + } + + // If this screen is wider than normal HVGA, or taller + // than FWVGA, then for old apps we want to run in size + // compatibility mode. + if (shortSizeDp > 321 || longSizeDp > 570) { + screenLayoutCompatNeeded = true; + } else { + screenLayoutCompatNeeded = false; + } + + // Is this a long screen? + if (((longSizeDp*3)/5) >= (shortSizeDp-1)) { + // Anything wider than WVGA (5:3) is considering to be long. + screenLayoutLong = true; + } else { + screenLayoutLong = false; + } + } + + // Now reduce the last screenLayout to not be better than what we + // have found. + if (!screenLayoutLong) { + curLayout = (curLayout&~SCREENLAYOUT_LONG_MASK) | SCREENLAYOUT_LONG_NO; + } + if (screenLayoutCompatNeeded) { + curLayout |= Configuration.SCREENLAYOUT_COMPAT_NEEDED; + } + int curSize = curLayout&SCREENLAYOUT_SIZE_MASK; + if (screenLayoutSize < curSize) { + curLayout = (curLayout&~SCREENLAYOUT_SIZE_MASK) | screenLayoutSize; + } + return curLayout; + } + + /** + * Check if the Configuration's current {@link #screenLayout} is at + * least the given size. + * + * @param size The desired size, either {@link #SCREENLAYOUT_SIZE_SMALL}, + * {@link #SCREENLAYOUT_SIZE_NORMAL}, {@link #SCREENLAYOUT_SIZE_LARGE}, or + * {@link #SCREENLAYOUT_SIZE_XLARGE}. + * @return Returns true if the current screen layout size is at least + * the given size. + */ + public boolean isLayoutSizeAtLeast(int size) { + int cur = screenLayout&SCREENLAYOUT_SIZE_MASK; + if (cur == SCREENLAYOUT_SIZE_UNDEFINED) return false; + return cur >= size; + } + + /** Constant for {@link #touchscreen}: a value indicating that no value has been set. */ + public static final int TOUCHSCREEN_UNDEFINED = 0; + /** Constant for {@link #touchscreen}, value corresponding to the + * notouch + * resource qualifier. */ + public static final int TOUCHSCREEN_NOTOUCH = 1; + /** @deprecated Not currently supported or used. */ + @Deprecated public static final int TOUCHSCREEN_STYLUS = 2; + /** Constant for {@link #touchscreen}, value corresponding to the + * finger + * resource qualifier. */ + public static final int TOUCHSCREEN_FINGER = 3; + + /** + * The kind of touch screen attached to the device. + * One of: {@link #TOUCHSCREEN_NOTOUCH}, {@link #TOUCHSCREEN_FINGER}. + */ + public int touchscreen; + + /** Constant for {@link #keyboard}: a value indicating that no value has been set. */ + public static final int KEYBOARD_UNDEFINED = 0; + /** Constant for {@link #keyboard}, value corresponding to the + * nokeys + * resource qualifier. */ + public static final int KEYBOARD_NOKEYS = 1; + /** Constant for {@link #keyboard}, value corresponding to the + * qwerty + * resource qualifier. */ + public static final int KEYBOARD_QWERTY = 2; + /** Constant for {@link #keyboard}, value corresponding to the + * 12key + * resource qualifier. */ + public static final int KEYBOARD_12KEY = 3; + + /** + * The kind of keyboard attached to the device. + * One of: {@link #KEYBOARD_NOKEYS}, {@link #KEYBOARD_QWERTY}, + * {@link #KEYBOARD_12KEY}. + */ + public int keyboard; + + /** Constant for {@link #keyboardHidden}: a value indicating that no value has been set. */ + public static final int KEYBOARDHIDDEN_UNDEFINED = 0; + /** Constant for {@link #keyboardHidden}, value corresponding to the + * keysexposed + * resource qualifier. */ + public static final int KEYBOARDHIDDEN_NO = 1; + /** Constant for {@link #keyboardHidden}, value corresponding to the + * keyshidden + * resource qualifier. */ + public static final int KEYBOARDHIDDEN_YES = 2; + /** Constant matching actual resource implementation. {@hide} */ + public static final int KEYBOARDHIDDEN_SOFT = 3; + + /** + * A flag indicating whether any keyboard is available. Unlike + * {@link #hardKeyboardHidden}, this also takes into account a soft + * keyboard, so if the hard keyboard is hidden but there is soft + * keyboard available, it will be set to NO. Value is one of: + * {@link #KEYBOARDHIDDEN_NO}, {@link #KEYBOARDHIDDEN_YES}. + */ + public int keyboardHidden; + + /** Constant for {@link #hardKeyboardHidden}: a value indicating that no value has been set. */ + public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; + /** Constant for {@link #hardKeyboardHidden}, value corresponding to the + * physical keyboard being exposed. */ + public static final int HARDKEYBOARDHIDDEN_NO = 1; + /** Constant for {@link #hardKeyboardHidden}, value corresponding to the + * physical keyboard being hidden. */ + public static final int HARDKEYBOARDHIDDEN_YES = 2; + + /** + * A flag indicating whether the hard keyboard has been hidden. This will + * be set on a device with a mechanism to hide the keyboard from the + * user, when that mechanism is closed. One of: + * {@link #HARDKEYBOARDHIDDEN_NO}, {@link #HARDKEYBOARDHIDDEN_YES}. + */ + public int hardKeyboardHidden; + + /** Constant for {@link #navigation}: a value indicating that no value has been set. */ + public static final int NAVIGATION_UNDEFINED = 0; + /** Constant for {@link #navigation}, value corresponding to the + * nonav + * resource qualifier. */ + public static final int NAVIGATION_NONAV = 1; + /** Constant for {@link #navigation}, value corresponding to the + * dpad + * resource qualifier. */ + public static final int NAVIGATION_DPAD = 2; + /** Constant for {@link #navigation}, value corresponding to the + * trackball + * resource qualifier. */ + public static final int NAVIGATION_TRACKBALL = 3; + /** Constant for {@link #navigation}, value corresponding to the + * wheel + * resource qualifier. */ + public static final int NAVIGATION_WHEEL = 4; + + /** + * The kind of navigation method available on the device. + * One of: {@link #NAVIGATION_NONAV}, {@link #NAVIGATION_DPAD}, + * {@link #NAVIGATION_TRACKBALL}, {@link #NAVIGATION_WHEEL}. + */ + public int navigation; + + /** Constant for {@link #navigationHidden}: a value indicating that no value has been set. */ + public static final int NAVIGATIONHIDDEN_UNDEFINED = 0; + /** Constant for {@link #navigationHidden}, value corresponding to the + * navexposed + * resource qualifier. */ + public static final int NAVIGATIONHIDDEN_NO = 1; + /** Constant for {@link #navigationHidden}, value corresponding to the + * navhidden + * resource qualifier. */ + public static final int NAVIGATIONHIDDEN_YES = 2; + + /** + * A flag indicating whether any 5-way or DPAD navigation available. + * This will be set on a device with a mechanism to hide the navigation + * controls from the user, when that mechanism is closed. One of: + * {@link #NAVIGATIONHIDDEN_NO}, {@link #NAVIGATIONHIDDEN_YES}. + */ + public int navigationHidden; + + /** Constant for {@link #orientation}: a value indicating that no value has been set. */ + public static final int ORIENTATION_UNDEFINED = 0; + /** Constant for {@link #orientation}, value corresponding to the + * port + * resource qualifier. */ + public static final int ORIENTATION_PORTRAIT = 1; + /** Constant for {@link #orientation}, value corresponding to the + * land + * resource qualifier. */ + public static final int ORIENTATION_LANDSCAPE = 2; + /** @deprecated Not currently supported or used. */ + @Deprecated public static final int ORIENTATION_SQUARE = 3; + + /** + * Overall orientation of the screen. May be one of + * {@link #ORIENTATION_LANDSCAPE}, {@link #ORIENTATION_PORTRAIT}. + */ + public int orientation; + + /** Constant for {@link #uiMode}: bits that encode the mode type. */ + public static final int UI_MODE_TYPE_MASK = 0x0f; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value indicating that no mode type has been set. */ + public static final int UI_MODE_TYPE_UNDEFINED = 0x00; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value that corresponds to + * no + * UI mode resource qualifier specified. */ + public static final int UI_MODE_TYPE_NORMAL = 0x01; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value that corresponds to the + * desk + * resource qualifier. */ + public static final int UI_MODE_TYPE_DESK = 0x02; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value that corresponds to the + * car + * resource qualifier. */ + public static final int UI_MODE_TYPE_CAR = 0x03; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value that corresponds to the + * television + * resource qualifier. */ + public static final int UI_MODE_TYPE_TELEVISION = 0x04; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_TYPE_MASK} + * value that corresponds to the + * appliance + * resource qualifier. */ + public static final int UI_MODE_TYPE_APPLIANCE = 0x05; + + /** Constant for {@link #uiMode}: bits that encode the night mode. */ + public static final int UI_MODE_NIGHT_MASK = 0x30; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_NIGHT_MASK} + * value indicating that no mode type has been set. */ + public static final int UI_MODE_NIGHT_UNDEFINED = 0x00; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_NIGHT_MASK} + * value that corresponds to the + * notnight + * resource qualifier. */ + public static final int UI_MODE_NIGHT_NO = 0x10; + /** Constant for {@link #uiMode}: a {@link #UI_MODE_NIGHT_MASK} + * value that corresponds to the + * night + * resource qualifier. */ + public static final int UI_MODE_NIGHT_YES = 0x20; + + /** + * Bit mask of the ui mode. Currently there are two fields: + *

The {@link #UI_MODE_TYPE_MASK} bits define the overall ui mode of the + * device. They may be one of {@link #UI_MODE_TYPE_UNDEFINED}, + * {@link #UI_MODE_TYPE_NORMAL}, {@link #UI_MODE_TYPE_DESK}, + * {@link #UI_MODE_TYPE_CAR}, {@link #UI_MODE_TYPE_TELEVISION}, or + * {@link #UI_MODE_TYPE_APPLIANCE}. + * + *

The {@link #UI_MODE_NIGHT_MASK} defines whether the screen + * is in a special mode. They may be one of {@link #UI_MODE_NIGHT_UNDEFINED}, + * {@link #UI_MODE_NIGHT_NO} or {@link #UI_MODE_NIGHT_YES}. + */ + public int uiMode; + + /** + * Default value for {@link #screenWidthDp} indicating that no width + * has been specified. + */ + public static final int SCREEN_WIDTH_DP_UNDEFINED = 0; + + /** + * The current width of the available screen space, in dp units, + * corresponding to + * screen + * width resource qualifier. Set to + * {@link #SCREEN_WIDTH_DP_UNDEFINED} if no width is specified. + */ + public int screenWidthDp; + + /** + * Default value for {@link #screenHeightDp} indicating that no width + * has been specified. + */ + public static final int SCREEN_HEIGHT_DP_UNDEFINED = 0; + + /** + * The current height of the available screen space, in dp units, + * corresponding to + * screen + * height resource qualifier. Set to + * {@link #SCREEN_HEIGHT_DP_UNDEFINED} if no height is specified. + */ + public int screenHeightDp; + + /** + * Default value for {@link #smallestScreenWidthDp} indicating that no width + * has been specified. + */ + public static final int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED = 0; + + /** + * The smallest screen size an application will see in normal operation, + * corresponding to + * smallest + * screen width resource qualifier. + * This is the smallest value of both screenWidthDp and screenHeightDp + * in both portrait and landscape. Set to + * {@link #SMALLEST_SCREEN_WIDTH_DP_UNDEFINED} if no width is specified. + */ + public int smallestScreenWidthDp; + + /** + * Default value for {@link #densityDpi} indicating that no width + * has been specified. + */ + public static final int DENSITY_DPI_UNDEFINED = 0; + + /** + * The target screen density being rendered to, + * corresponding to + * density + * resource qualifier. Set to + * {@link #DENSITY_DPI_UNDEFINED} if no density is specified. + */ + public int densityDpi; + + /** @hide Hack to get this information from WM to app running in compat mode. */ + public int compatScreenWidthDp; + /** @hide Hack to get this information from WM to app running in compat mode. */ + public int compatScreenHeightDp; + /** @hide Hack to get this information from WM to app running in compat mode. */ + public int compatSmallestScreenWidthDp; + + /** + * @hide Internal book-keeping. + */ + public int seq; + + /** @hide Native-specific bit mask for MCC config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_MCC = 0x0001; + /** @hide Native-specific bit mask for MNC config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_MNC = 0x0002; + /** @hide Native-specific bit mask for LOCALE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_LOCALE = 0x0004; + /** @hide Native-specific bit mask for TOUCHSCREEN config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_TOUCHSCREEN = 0x0008; + /** @hide Native-specific bit mask for KEYBOARD config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_KEYBOARD = 0x0010; + /** @hide Native-specific bit mask for KEYBOARD_HIDDEN config; DO NOT USE UNLESS YOU + * ARE SURE. */ + public static final int NATIVE_CONFIG_KEYBOARD_HIDDEN = 0x0020; + /** @hide Native-specific bit mask for NAVIGATION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_NAVIGATION = 0x0040; + /** @hide Native-specific bit mask for ORIENTATION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_ORIENTATION = 0x0080; + /** @hide Native-specific bit mask for DENSITY config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_DENSITY = 0x0100; + /** @hide Native-specific bit mask for SCREEN_SIZE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_SCREEN_SIZE = 0x0200; + /** @hide Native-specific bit mask for VERSION config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_VERSION = 0x0400; + /** @hide Native-specific bit mask for SCREEN_LAYOUT config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_SCREEN_LAYOUT = 0x0800; + /** @hide Native-specific bit mask for UI_MODE config; DO NOT USE UNLESS YOU ARE SURE. */ + public static final int NATIVE_CONFIG_UI_MODE = 0x1000; + /** @hide Native-specific bit mask for SMALLEST_SCREEN_SIZE config; DO NOT USE UNLESS YOU + * ARE SURE. */ + public static final int NATIVE_CONFIG_SMALLEST_SCREEN_SIZE = 0x2000; + /** @hide Native-specific bit mask for LAYOUTDIR config ; DO NOT USE UNLESS YOU ARE SURE.*/ + public static final int NATIVE_CONFIG_LAYOUTDIR = 0x4000; + + /** + * Construct an invalid Configuration. You must call {@link #setToDefaults} + * for this object to be valid. {@more} + */ + public Configuration() { + setToDefaults(); + } + + /** + * Makes a deep copy suitable for modification. + */ + public Configuration(Configuration o) { + setTo(o); + } + + public void setTo(Configuration o) { + fontScale = o.fontScale; + mcc = o.mcc; + mnc = o.mnc; + if (o.locale != null) { + locale = (Locale) o.locale.clone(); + } + userSetLocale = o.userSetLocale; + touchscreen = o.touchscreen; + keyboard = o.keyboard; + keyboardHidden = o.keyboardHidden; + hardKeyboardHidden = o.hardKeyboardHidden; + navigation = o.navigation; + navigationHidden = o.navigationHidden; + orientation = o.orientation; + screenLayout = o.screenLayout; + uiMode = o.uiMode; + screenWidthDp = o.screenWidthDp; + screenHeightDp = o.screenHeightDp; + smallestScreenWidthDp = o.smallestScreenWidthDp; + densityDpi = o.densityDpi; + compatScreenWidthDp = o.compatScreenWidthDp; + compatScreenHeightDp = o.compatScreenHeightDp; + compatSmallestScreenWidthDp = o.compatSmallestScreenWidthDp; + seq = o.seq; + } + + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("{"); + sb.append(fontScale); + sb.append(" "); + if (mcc != 0) { + sb.append(mcc); + sb.append("mcc"); + } else { + sb.append("?mcc"); + } + if (mnc != 0) { + sb.append(mnc); + sb.append("mnc"); + } else { + sb.append("?mnc"); + } + if (locale != null) { + sb.append(" "); + sb.append(locale); + } else { + sb.append(" ?locale"); + } + int layoutDir = (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK); + switch (layoutDir) { + case SCREENLAYOUT_LAYOUTDIR_UNDEFINED: sb.append(" ?layoutDir"); break; + case SCREENLAYOUT_LAYOUTDIR_LTR: sb.append(" ldltr"); break; + case SCREENLAYOUT_LAYOUTDIR_RTL: sb.append(" ldrtl"); break; + default: sb.append(" layoutDir="); + sb.append(layoutDir >> SCREENLAYOUT_LAYOUTDIR_SHIFT); break; + } + if (smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { + sb.append(" sw"); sb.append(smallestScreenWidthDp); sb.append("dp"); + } else { + sb.append(" ?swdp"); + } + if (screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { + sb.append(" w"); sb.append(screenWidthDp); sb.append("dp"); + } else { + sb.append(" ?wdp"); + } + if (screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { + sb.append(" h"); sb.append(screenHeightDp); sb.append("dp"); + } else { + sb.append(" ?hdp"); + } + if (densityDpi != DENSITY_DPI_UNDEFINED) { + sb.append(" "); sb.append(densityDpi); sb.append("dpi"); + } else { + sb.append(" ?density"); + } + switch ((screenLayout&SCREENLAYOUT_SIZE_MASK)) { + case SCREENLAYOUT_SIZE_UNDEFINED: sb.append(" ?lsize"); break; + case SCREENLAYOUT_SIZE_SMALL: sb.append(" smll"); break; + case SCREENLAYOUT_SIZE_NORMAL: sb.append(" nrml"); break; + case SCREENLAYOUT_SIZE_LARGE: sb.append(" lrg"); break; + case SCREENLAYOUT_SIZE_XLARGE: sb.append(" xlrg"); break; + default: sb.append(" layoutSize="); + sb.append(screenLayout&SCREENLAYOUT_SIZE_MASK); break; + } + switch ((screenLayout&SCREENLAYOUT_LONG_MASK)) { + case SCREENLAYOUT_LONG_UNDEFINED: sb.append(" ?long"); break; + case SCREENLAYOUT_LONG_NO: /* not-long is not interesting to print */ break; + case SCREENLAYOUT_LONG_YES: sb.append(" long"); break; + default: sb.append(" layoutLong="); + sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; + } + switch (orientation) { + case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; + case ORIENTATION_LANDSCAPE: sb.append(" land"); break; + case ORIENTATION_PORTRAIT: sb.append(" port"); break; + default: sb.append(" orien="); sb.append(orientation); break; + } + switch ((uiMode&UI_MODE_TYPE_MASK)) { + case UI_MODE_TYPE_UNDEFINED: sb.append(" ?uimode"); break; + case UI_MODE_TYPE_NORMAL: /* normal is not interesting to print */ break; + case UI_MODE_TYPE_DESK: sb.append(" desk"); break; + case UI_MODE_TYPE_CAR: sb.append(" car"); break; + case UI_MODE_TYPE_TELEVISION: sb.append(" television"); break; + case UI_MODE_TYPE_APPLIANCE: sb.append(" appliance"); break; + default: sb.append(" uimode="); sb.append(uiMode&UI_MODE_TYPE_MASK); break; + } + switch ((uiMode&UI_MODE_NIGHT_MASK)) { + case UI_MODE_NIGHT_UNDEFINED: sb.append(" ?night"); break; + case UI_MODE_NIGHT_NO: /* not-night is not interesting to print */ break; + case UI_MODE_NIGHT_YES: sb.append(" night"); break; + default: sb.append(" night="); sb.append(uiMode&UI_MODE_NIGHT_MASK); break; + } + switch (touchscreen) { + case TOUCHSCREEN_UNDEFINED: sb.append(" ?touch"); break; + case TOUCHSCREEN_NOTOUCH: sb.append(" -touch"); break; + case TOUCHSCREEN_STYLUS: sb.append(" stylus"); break; + case TOUCHSCREEN_FINGER: sb.append(" finger"); break; + default: sb.append(" touch="); sb.append(touchscreen); break; + } + switch (keyboard) { + case KEYBOARD_UNDEFINED: sb.append(" ?keyb"); break; + case KEYBOARD_NOKEYS: sb.append(" -keyb"); break; + case KEYBOARD_QWERTY: sb.append(" qwerty"); break; + case KEYBOARD_12KEY: sb.append(" 12key"); break; + default: sb.append(" keys="); sb.append(keyboard); break; + } + switch (keyboardHidden) { + case KEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; + case KEYBOARDHIDDEN_NO: sb.append("/v"); break; + case KEYBOARDHIDDEN_YES: sb.append("/h"); break; + case KEYBOARDHIDDEN_SOFT: sb.append("/s"); break; + default: sb.append("/"); sb.append(keyboardHidden); break; + } + switch (hardKeyboardHidden) { + case HARDKEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; + case HARDKEYBOARDHIDDEN_NO: sb.append("/v"); break; + case HARDKEYBOARDHIDDEN_YES: sb.append("/h"); break; + default: sb.append("/"); sb.append(hardKeyboardHidden); break; + } + switch (navigation) { + case NAVIGATION_UNDEFINED: sb.append(" ?nav"); break; + case NAVIGATION_NONAV: sb.append(" -nav"); break; + case NAVIGATION_DPAD: sb.append(" dpad"); break; + case NAVIGATION_TRACKBALL: sb.append(" tball"); break; + case NAVIGATION_WHEEL: sb.append(" wheel"); break; + default: sb.append(" nav="); sb.append(navigation); break; + } + switch (navigationHidden) { + case NAVIGATIONHIDDEN_UNDEFINED: sb.append("/?"); break; + case NAVIGATIONHIDDEN_NO: sb.append("/v"); break; + case NAVIGATIONHIDDEN_YES: sb.append("/h"); break; + default: sb.append("/"); sb.append(navigationHidden); break; + } + if (seq != 0) { + sb.append(" s."); + sb.append(seq); + } + sb.append('}'); + return sb.toString(); + } + + /** + * Set this object to the system defaults. + */ + public void setToDefaults() { + fontScale = 1; + mcc = mnc = 0; + locale = null; + userSetLocale = false; + touchscreen = TOUCHSCREEN_UNDEFINED; + keyboard = KEYBOARD_UNDEFINED; + keyboardHidden = KEYBOARDHIDDEN_UNDEFINED; + hardKeyboardHidden = HARDKEYBOARDHIDDEN_UNDEFINED; + navigation = NAVIGATION_UNDEFINED; + navigationHidden = NAVIGATIONHIDDEN_UNDEFINED; + orientation = ORIENTATION_UNDEFINED; + screenLayout = SCREENLAYOUT_UNDEFINED; + uiMode = UI_MODE_TYPE_UNDEFINED; + screenWidthDp = compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED; + screenHeightDp = compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED; + smallestScreenWidthDp = compatSmallestScreenWidthDp = SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; + densityDpi = DENSITY_DPI_UNDEFINED; + seq = 0; + } + + /** {@hide} */ + @Deprecated public void makeDefault() { + setToDefaults(); + } + + /** + * Copy the fields from delta into this Configuration object, keeping + * track of which ones have changed. Any undefined fields in + * delta are ignored and not copied in to the current + * Configuration. + * @return Returns a bit mask of the changed fields, as per + * {@link #diff}. + */ + public int updateFrom(Configuration delta) { + int changed = 0; + if (delta.fontScale > 0 && fontScale != delta.fontScale) { + changed |= ActivityInfo.CONFIG_FONT_SCALE; + fontScale = delta.fontScale; + } + if (delta.mcc != 0 && mcc != delta.mcc) { + changed |= ActivityInfo.CONFIG_MCC; + mcc = delta.mcc; + } + if (delta.mnc != 0 && mnc != delta.mnc) { + changed |= ActivityInfo.CONFIG_MNC; + mnc = delta.mnc; + } + if (delta.locale != null + && (locale == null || !locale.equals(delta.locale))) { + changed |= ActivityInfo.CONFIG_LOCALE; + locale = delta.locale != null + ? (Locale) delta.locale.clone() : null; + // If locale has changed, then layout direction is also changed ... + changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION; + // ... and we need to update the layout direction (represented by the first + // 2 most significant bits in screenLayout). + setLayoutDirection(locale); + } + final int deltaScreenLayoutDir = delta.screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK; + if (deltaScreenLayoutDir != SCREENLAYOUT_LAYOUTDIR_UNDEFINED && + deltaScreenLayoutDir != (screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK)) { + screenLayout = (screenLayout & ~SCREENLAYOUT_LAYOUTDIR_MASK) | deltaScreenLayoutDir; + changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION; + } + if (delta.userSetLocale && (!userSetLocale || ((changed & ActivityInfo.CONFIG_LOCALE) != 0))) + { + changed |= ActivityInfo.CONFIG_LOCALE; + userSetLocale = true; + } + if (delta.touchscreen != TOUCHSCREEN_UNDEFINED + && touchscreen != delta.touchscreen) { + changed |= ActivityInfo.CONFIG_TOUCHSCREEN; + touchscreen = delta.touchscreen; + } + if (delta.keyboard != KEYBOARD_UNDEFINED + && keyboard != delta.keyboard) { + changed |= ActivityInfo.CONFIG_KEYBOARD; + keyboard = delta.keyboard; + } + if (delta.keyboardHidden != KEYBOARDHIDDEN_UNDEFINED + && keyboardHidden != delta.keyboardHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + keyboardHidden = delta.keyboardHidden; + } + if (delta.hardKeyboardHidden != HARDKEYBOARDHIDDEN_UNDEFINED + && hardKeyboardHidden != delta.hardKeyboardHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + hardKeyboardHidden = delta.hardKeyboardHidden; + } + if (delta.navigation != NAVIGATION_UNDEFINED + && navigation != delta.navigation) { + changed |= ActivityInfo.CONFIG_NAVIGATION; + navigation = delta.navigation; + } + if (delta.navigationHidden != NAVIGATIONHIDDEN_UNDEFINED + && navigationHidden != delta.navigationHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + navigationHidden = delta.navigationHidden; + } + if (delta.orientation != ORIENTATION_UNDEFINED + && orientation != delta.orientation) { + changed |= ActivityInfo.CONFIG_ORIENTATION; + orientation = delta.orientation; + } + if (getScreenLayoutNoDirection(delta.screenLayout) != + (SCREENLAYOUT_SIZE_UNDEFINED | SCREENLAYOUT_LONG_UNDEFINED) + && (getScreenLayoutNoDirection(screenLayout) != + getScreenLayoutNoDirection(delta.screenLayout))) { + changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; + // We need to preserve the previous layout dir bits if they were defined + if ((delta.screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK) == 0) { + screenLayout = (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK)|delta.screenLayout; + } else { + screenLayout = delta.screenLayout; + } + } + if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED) + && uiMode != delta.uiMode) { + changed |= ActivityInfo.CONFIG_UI_MODE; + if ((delta.uiMode&UI_MODE_TYPE_MASK) != UI_MODE_TYPE_UNDEFINED) { + uiMode = (uiMode&~UI_MODE_TYPE_MASK) + | (delta.uiMode&UI_MODE_TYPE_MASK); + } + if ((delta.uiMode&UI_MODE_NIGHT_MASK) != UI_MODE_NIGHT_UNDEFINED) { + uiMode = (uiMode&~UI_MODE_NIGHT_MASK) + | (delta.uiMode&UI_MODE_NIGHT_MASK); + } + } + if (delta.screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED + && screenWidthDp != delta.screenWidthDp) { + changed |= ActivityInfo.CONFIG_SCREEN_SIZE; + screenWidthDp = delta.screenWidthDp; + } + if (delta.screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED + && screenHeightDp != delta.screenHeightDp) { + changed |= ActivityInfo.CONFIG_SCREEN_SIZE; + screenHeightDp = delta.screenHeightDp; + } + if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED + && smallestScreenWidthDp != delta.smallestScreenWidthDp) { + changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; + smallestScreenWidthDp = delta.smallestScreenWidthDp; + } + if (delta.densityDpi != DENSITY_DPI_UNDEFINED && + densityDpi != delta.densityDpi) { + changed |= ActivityInfo.CONFIG_DENSITY; + densityDpi = delta.densityDpi; + } + if (delta.compatScreenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { + compatScreenWidthDp = delta.compatScreenWidthDp; + } + if (delta.compatScreenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { + compatScreenHeightDp = delta.compatScreenHeightDp; + } + if (delta.compatSmallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { + compatSmallestScreenWidthDp = delta.compatSmallestScreenWidthDp; + } + if (delta.seq != 0) { + seq = delta.seq; + } + + return changed; + } + + /** + * Return a bit mask of the differences between this Configuration + * object and the given one. Does not change the values of either. Any + * undefined fields in delta are ignored. + * @return Returns a bit mask indicating which configuration + * values has changed, containing any combination of + * {@link android.content.pm.ActivityInfo#CONFIG_FONT_SCALE + * PackageManager.ActivityInfo.CONFIG_FONT_SCALE}, + * {@link android.content.pm.ActivityInfo#CONFIG_MCC + * PackageManager.ActivityInfo.CONFIG_MCC}, + * {@link android.content.pm.ActivityInfo#CONFIG_MNC + * PackageManager.ActivityInfo.CONFIG_MNC}, + * {@link android.content.pm.ActivityInfo#CONFIG_LOCALE + * PackageManager.ActivityInfo.CONFIG_LOCALE}, + * {@link android.content.pm.ActivityInfo#CONFIG_TOUCHSCREEN + * PackageManager.ActivityInfo.CONFIG_TOUCHSCREEN}, + * {@link android.content.pm.ActivityInfo#CONFIG_KEYBOARD + * PackageManager.ActivityInfo.CONFIG_KEYBOARD}, + * {@link android.content.pm.ActivityInfo#CONFIG_NAVIGATION + * PackageManager.ActivityInfo.CONFIG_NAVIGATION}, + * {@link android.content.pm.ActivityInfo#CONFIG_ORIENTATION + * PackageManager.ActivityInfo.CONFIG_ORIENTATION}, + * {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_LAYOUT + * PackageManager.ActivityInfo.CONFIG_SCREEN_LAYOUT}, or + * {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_SIZE + * PackageManager.ActivityInfo.CONFIG_SCREEN_SIZE}, or + * {@link android.content.pm.ActivityInfo#CONFIG_SMALLEST_SCREEN_SIZE + * PackageManager.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE}. + * {@link android.content.pm.ActivityInfo#CONFIG_LAYOUT_DIRECTION + * PackageManager.ActivityInfo.CONFIG_LAYOUT_DIRECTION}. + */ + public int diff(Configuration delta) { + int changed = 0; + if (delta.fontScale > 0 && fontScale != delta.fontScale) { + changed |= ActivityInfo.CONFIG_FONT_SCALE; + } + if (delta.mcc != 0 && mcc != delta.mcc) { + changed |= ActivityInfo.CONFIG_MCC; + } + if (delta.mnc != 0 && mnc != delta.mnc) { + changed |= ActivityInfo.CONFIG_MNC; + } + if (delta.locale != null + && (locale == null || !locale.equals(delta.locale))) { + changed |= ActivityInfo.CONFIG_LOCALE; + changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION; + } + final int deltaScreenLayoutDir = delta.screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK; + if (deltaScreenLayoutDir != SCREENLAYOUT_LAYOUTDIR_UNDEFINED && + deltaScreenLayoutDir != (screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK)) { + changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION; + } + if (delta.touchscreen != TOUCHSCREEN_UNDEFINED + && touchscreen != delta.touchscreen) { + changed |= ActivityInfo.CONFIG_TOUCHSCREEN; + } + if (delta.keyboard != KEYBOARD_UNDEFINED + && keyboard != delta.keyboard) { + changed |= ActivityInfo.CONFIG_KEYBOARD; + } + if (delta.keyboardHidden != KEYBOARDHIDDEN_UNDEFINED + && keyboardHidden != delta.keyboardHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + } + if (delta.hardKeyboardHidden != HARDKEYBOARDHIDDEN_UNDEFINED + && hardKeyboardHidden != delta.hardKeyboardHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + } + if (delta.navigation != NAVIGATION_UNDEFINED + && navigation != delta.navigation) { + changed |= ActivityInfo.CONFIG_NAVIGATION; + } + if (delta.navigationHidden != NAVIGATIONHIDDEN_UNDEFINED + && navigationHidden != delta.navigationHidden) { + changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN; + } + if (delta.orientation != ORIENTATION_UNDEFINED + && orientation != delta.orientation) { + changed |= ActivityInfo.CONFIG_ORIENTATION; + } + if (getScreenLayoutNoDirection(delta.screenLayout) != + (SCREENLAYOUT_SIZE_UNDEFINED | SCREENLAYOUT_LONG_UNDEFINED) + && getScreenLayoutNoDirection(screenLayout) != + getScreenLayoutNoDirection(delta.screenLayout)) { + changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; + } + if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED) + && uiMode != delta.uiMode) { + changed |= ActivityInfo.CONFIG_UI_MODE; + } + if (delta.screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED + && screenWidthDp != delta.screenWidthDp) { + changed |= ActivityInfo.CONFIG_SCREEN_SIZE; + } + if (delta.screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED + && screenHeightDp != delta.screenHeightDp) { + changed |= ActivityInfo.CONFIG_SCREEN_SIZE; + } + if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED + && smallestScreenWidthDp != delta.smallestScreenWidthDp) { + changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; + } + if (delta.densityDpi != DENSITY_DPI_UNDEFINED + && densityDpi != delta.densityDpi) { + changed |= ActivityInfo.CONFIG_DENSITY; + } + + return changed; + } + + /** + * Determine if a new resource needs to be loaded from the bit set of + * configuration changes returned by {@link #updateFrom(Configuration)}. + * + * @param configChanges The mask of changes configurations as returned by + * {@link #updateFrom(Configuration)}. + * @param interestingChanges The configuration changes that the resource + * can handled, as given in {@link android.util.TypedValue#changingConfigurations}. + * + * @return Return true if the resource needs to be loaded, else false. + */ + public static boolean needNewResources(int configChanges, int interestingChanges) { + return (configChanges & (interestingChanges|ActivityInfo.CONFIG_FONT_SCALE)) != 0; + } + + /** + * @hide Return true if the sequence of 'other' is better than this. Assumes + * that 'this' is your current sequence and 'other' is a new one you have + * received some how and want to compare with what you have. + */ + public boolean isOtherSeqNewer(Configuration other) { + if (other == null) { + // Sanity check. + return false; + } + if (other.seq == 0) { + // If the other sequence is not specified, then we must assume + // it is newer since we don't know any better. + return true; + } + if (seq == 0) { + // If this sequence is not specified, then we also consider the + // other is better. Yes we have a preference for other. Sue us. + return true; + } + int diff = other.seq - seq; + if (diff > 0x10000) { + // If there has been a sufficiently large jump, assume the + // sequence has wrapped around. + return false; + } + return diff > 0; + } + + public int describeContents() { + return 0; + } + + public int compareTo(Configuration that) { + int n; + float a = this.fontScale; + float b = that.fontScale; + if (a < b) return -1; + if (a > b) return 1; + n = this.mcc - that.mcc; + if (n != 0) return n; + n = this.mnc - that.mnc; + if (n != 0) return n; + if (this.locale == null) { + if (that.locale != null) return 1; + } else if (that.locale == null) { + return -1; + } else { + n = this.locale.getLanguage().compareTo(that.locale.getLanguage()); + if (n != 0) return n; + n = this.locale.getCountry().compareTo(that.locale.getCountry()); + if (n != 0) return n; + n = this.locale.getVariant().compareTo(that.locale.getVariant()); + if (n != 0) return n; + } + n = this.touchscreen - that.touchscreen; + if (n != 0) return n; + n = this.keyboard - that.keyboard; + if (n != 0) return n; + n = this.keyboardHidden - that.keyboardHidden; + if (n != 0) return n; + n = this.hardKeyboardHidden - that.hardKeyboardHidden; + if (n != 0) return n; + n = this.navigation - that.navigation; + if (n != 0) return n; + n = this.navigationHidden - that.navigationHidden; + if (n != 0) return n; + n = this.orientation - that.orientation; + if (n != 0) return n; + n = this.screenLayout - that.screenLayout; + if (n != 0) return n; + n = this.uiMode - that.uiMode; + if (n != 0) return n; + n = this.screenWidthDp - that.screenWidthDp; + if (n != 0) return n; + n = this.screenHeightDp - that.screenHeightDp; + if (n != 0) return n; + n = this.smallestScreenWidthDp - that.smallestScreenWidthDp; + if (n != 0) return n; + n = this.densityDpi - that.densityDpi; + //if (n != 0) return n; + return n; + } + + public boolean equals(Configuration that) { + if (that == null) return false; + if (that == this) return true; + return this.compareTo(that) == 0; + } + + public boolean equals(Object that) { + try { + return equals((Configuration)that); + } catch (ClassCastException e) { + } + return false; + } + + public int hashCode() { + int result = 17; + result = 31 * result + Float.floatToIntBits(fontScale); + result = 31 * result + mcc; + result = 31 * result + mnc; + result = 31 * result + (locale != null ? locale.hashCode() : 0); + result = 31 * result + touchscreen; + result = 31 * result + keyboard; + result = 31 * result + keyboardHidden; + result = 31 * result + hardKeyboardHidden; + result = 31 * result + navigation; + result = 31 * result + navigationHidden; + result = 31 * result + orientation; + result = 31 * result + screenLayout; + result = 31 * result + uiMode; + result = 31 * result + screenWidthDp; + result = 31 * result + screenHeightDp; + result = 31 * result + smallestScreenWidthDp; + result = 31 * result + densityDpi; + return result; + } + + /** + * Set the locale. This is the preferred way for setting up the locale (instead of using the + * direct accessor). This will also set the userLocale and layout direction according to + * the locale. + * + * @param loc The locale. Can be null. + */ + public void setLocale(Locale loc) { + locale = loc; + userSetLocale = true; + setLayoutDirection(locale); + } + + /** + * Return the layout direction. Will be either {@link View#LAYOUT_DIRECTION_LTR} or + * {@link View#LAYOUT_DIRECTION_RTL}. + * + * @return Returns {@link View#LAYOUT_DIRECTION_RTL} if the configuration + * is {@link #SCREENLAYOUT_LAYOUTDIR_RTL}, otherwise {@link View#LAYOUT_DIRECTION_LTR}. + */ + public int getLayoutDirection() { + return (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK) == SCREENLAYOUT_LAYOUTDIR_RTL + ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR; + } + + /** + * Set the layout direction from the Locale. + * + * @param locale The Locale. If null will set the layout direction to + * {@link View#LAYOUT_DIRECTION_LTR}. If not null will set it to the layout direction + * corresponding to the Locale. + * + * @see {@link View#LAYOUT_DIRECTION_LTR} and {@link View#LAYOUT_DIRECTION_RTL} + */ + public void setLayoutDirection(Locale locale) { + // There is a "1" difference between the configuration values for + // layout direction and View constants for layout direction, just add "1". + final int layoutDirection = 1 /*+ TextUtils.getLayoutDirectionFromLocale(locale)*/; + screenLayout = (screenLayout&~SCREENLAYOUT_LAYOUTDIR_MASK)| + (layoutDirection << SCREENLAYOUT_LAYOUTDIR_SHIFT); + } + + private static int getScreenLayoutNoDirection(int screenLayout) { + return screenLayout&~SCREENLAYOUT_LAYOUTDIR_MASK; + } +} diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java new file mode 100644 index 00000000..3fb476b8 --- /dev/null +++ b/src/api-impl/android/content/res/Resources.java @@ -0,0 +1,2423 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import com.android.internal.util.XmlUtils; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import android.content.pm.ActivityInfo; +//import android.graphics.Movie; +//import android.graphics.drawable.Drawable; +//import android.graphics.drawable.ColorDrawable; +//import android.graphics.drawable.Drawable.ConstantState; +import android.os.Build; +import android.os.Bundle; +//import android.os.IBinder; +import android.os.Trace; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.Slog; +import android.util.TypedValue; +import android.util.LongSparseArray; +//import android.view.DisplayAdjustments; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.ref.WeakReference; +import java.util.Locale; + +import libcore.icu.NativePluralRules; + +class Movie {} +class Drawable { class ConstantState {} } +class ColorDrawable {} + +class ConstantState{} + +class IBinder {} + +/** + * Class for accessing an application's resources. This sits on top of the + * asset manager of the application (accessible through {@link #getAssets}) and + * provides a high-level API for getting typed data from the assets. + * + *

The Android resource system keeps track of all non-code assets associated with an + * application. You can use this class to access your application's resources. You can generally + * acquire the {@link android.content.res.Resources} instance associated with your application + * with {@link android.content.Context#getResources getResources()}.

+ * + *

The Android SDK tools compile your application's resources into the application binary + * at build time. To use a resource, you must install it correctly in the source tree (inside + * your project's {@code res/} directory) and build your application. As part of the build + * process, the SDK tools generate symbols for each resource, which you can use in your application + * code to access the resources.

+ * + *

Using application resources makes it easy to update various characteristics of your + * application without modifying code, and—by providing sets of alternative + * resources—enables you to optimize your application for a variety of device configurations + * (such as for different languages and screen sizes). This is an important aspect of developing + * Android applications that are compatible on different types of devices.

+ * + *

For more information about using resources, see the documentation about Application Resources.

+ */ +public class Resources { + static final String TAG = "Resources"; + private static final boolean DEBUG_LOAD = false; + private static final boolean DEBUG_CONFIG = false; + private static final boolean DEBUG_ATTRIBUTES_CACHE = false; + private static final boolean TRACE_FOR_PRELOAD = false; + private static final boolean TRACE_FOR_MISS_PRELOAD = false; + + private static final int ID_OTHER = 0x01000004; + + private static final Object sSync = new Object(); + /*package*/ static Resources mSystem = null; + + // Information about preloaded resources. Note that they are not + // protected by a lock, because while preloading in zygote we are all + // single-threaded, and after that these are immutable. + private static final LongSparseArray[] sPreloadedDrawables; + private static final LongSparseArray sPreloadedColorDrawables + = new LongSparseArray(); + private static final LongSparseArray sPreloadedColorStateLists + = new LongSparseArray(); + + private static boolean sPreloaded; + private static int sPreloadedDensity; + + // These are protected by mAccessLock. + + /*package*/ final Object mAccessLock = new Object(); + /*package*/ final Configuration mTmpConfig = new Configuration(); + /*package*/ TypedValue mTmpValue = new TypedValue(); + /*package*/ final LongSparseArray > mDrawableCache + = new LongSparseArray >(0); + /*package*/ final LongSparseArray > mColorStateListCache + = new LongSparseArray >(0); + /*package*/ final LongSparseArray > mColorDrawableCache + = new LongSparseArray >(0); + /*package*/ boolean mPreloading; + + /*package*/ TypedArray mCachedStyledAttributes = null; + RuntimeException mLastRetrievedAttrs = null; + + private int mLastCachedXmlBlockIndex = -1; + private final int[] mCachedXmlBlockIds = { 0, 0, 0, 0 }; + private final XmlBlock[] mCachedXmlBlocks = new XmlBlock[4]; + + /*package*/ final AssetManager mAssets; + private final Configuration mConfiguration = new Configuration(); + /*package*/ final DisplayMetrics mMetrics = new DisplayMetrics(); + private NativePluralRules mPluralRule; + + private CompatibilityInfo mCompatibilityInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; + private WeakReference mToken; + + static { + sPreloadedDrawables = new LongSparseArray[2]; + sPreloadedDrawables[0] = new LongSparseArray(); + sPreloadedDrawables[1] = new LongSparseArray(); + } + + /** @hide */ + public static int selectDefaultTheme(int curTheme, int targetSdkVersion) { + return selectSystemTheme(curTheme, targetSdkVersion, + com.android.internal.R.style.Theme, + com.android.internal.R.style.Theme_Holo, + com.android.internal.R.style.Theme_DeviceDefault); + } + + /** @hide */ + public static int selectSystemTheme(int curTheme, int targetSdkVersion, + int orig, int holo, int deviceDefault) { + if (curTheme != 0) { + return curTheme; + } + if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { + return orig; + } + if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + return holo; + } + return deviceDefault; + } + + /** + * This exception is thrown by the resource APIs when a requested resource + * can not be found. + */ + public static class NotFoundException extends RuntimeException { + public NotFoundException() { + } + + public NotFoundException(String name) { + super(name); + } + } + + /** + * Create a new Resources object on top of an existing set of assets in an + * AssetManager. + * + * @param assets Previously created AssetManager. + * @param metrics Current display metrics to consider when + * selecting/computing resource values. + * @param config Desired device configuration to consider when + * selecting/computing resource values (optional). + */ + public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) { + this(assets, metrics, config, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null); + } + + /** + * Creates a new Resources object with CompatibilityInfo. + * + * @param assets Previously created AssetManager. + * @param metrics Current display metrics to consider when + * selecting/computing resource values. + * @param config Desired device configuration to consider when + * selecting/computing resource values (optional). + * @param compatInfo this resource's compatibility info. Must not be null. + * @param token The Activity token for determining stack affiliation. Usually null. + * @hide + */ + public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config, + CompatibilityInfo compatInfo, IBinder token) { + mAssets = assets; + mMetrics.setToDefaults(); + if (compatInfo != null) { + mCompatibilityInfo = compatInfo; + } + mToken = new WeakReference(token); +// updateConfiguration(config, metrics); +// assets.ensureStringBlocks(); + } + + /** + * Return a global shared Resources object that provides access to only + * system resources (no application resources), and is not configured for + * the current screen (can not use dimension units, does not change based + * on orientation, etc). + */ + public static Resources getSystem() { + synchronized (sSync) { + Resources ret = mSystem; + if (ret == null) { + ret = new Resources(); + mSystem = ret; + } + + return ret; + } + } + + /** + * Return the string value associated with a particular resource ID. The + * returned object will be a String if this is a plain string; it will be + * some other type of CharSequence if it is styled. + * {@more} + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return CharSequence The string data associated with the resource, plus + * possibly styled text information. + */ + public CharSequence getText(int id) throws NotFoundException { + CharSequence res = mAssets.getResourceText(id); + if (res != null) { + return res; + } + throw new NotFoundException("String resource ID #0x" + + Integer.toHexString(id)); + } + + /** + * Returns the character sequence necessary for grammatically correct pluralization + * of the given resource ID for the given quantity. + * Note that the character sequence is selected based solely on grammatical necessity, + * and that such rules differ between languages. Do not assume you know which string + * will be returned for a given quantity. See + * String Resources + * for more detail. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @param quantity The number used to get the correct string for the current language's + * plural rules. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return CharSequence The string data associated with the resource, plus + * possibly styled text information. + */ + public CharSequence getQuantityText(int id, int quantity) throws NotFoundException { + NativePluralRules rule = getPluralRule(); + CharSequence res = mAssets.getResourceBagText(id, + attrForQuantityCode(rule.quantityForInt(quantity))); + if (res != null) { + return res; + } + res = mAssets.getResourceBagText(id, ID_OTHER); + if (res != null) { + return res; + } + throw new NotFoundException("Plural resource ID #0x" + Integer.toHexString(id) + + " quantity=" + quantity + + " item=" + stringForQuantityCode(rule.quantityForInt(quantity))); + } + + private NativePluralRules getPluralRule() { + synchronized (sSync) { + if (mPluralRule == null) { + mPluralRule = NativePluralRules.forLocale(mConfiguration.locale); + } + return mPluralRule; + } + } + + private static int attrForQuantityCode(int quantityCode) { + switch (quantityCode) { + case NativePluralRules.ZERO: return 0x01000005; + case NativePluralRules.ONE: return 0x01000006; + case NativePluralRules.TWO: return 0x01000007; + case NativePluralRules.FEW: return 0x01000008; + case NativePluralRules.MANY: return 0x01000009; + default: return ID_OTHER; + } + } + + private static String stringForQuantityCode(int quantityCode) { + switch (quantityCode) { + case NativePluralRules.ZERO: return "zero"; + case NativePluralRules.ONE: return "one"; + case NativePluralRules.TWO: return "two"; + case NativePluralRules.FEW: return "few"; + case NativePluralRules.MANY: return "many"; + default: return "other"; + } + } + + /** + * Return the string value associated with a particular resource ID. It + * will be stripped of any styled text information. + * {@more} + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return String The string data associated with the resource, + * stripped of styled text information. + */ + public String getString(int id) throws NotFoundException { + CharSequence res = getText(id); + if (res != null) { + return res.toString(); + } + throw new NotFoundException("String resource ID #0x" + + Integer.toHexString(id)); + } + + + /** + * Return the string value associated with a particular resource ID, + * substituting the format arguments as defined in {@link java.util.Formatter} + * and {@link java.lang.String#format}. It will be stripped of any styled text + * information. + * {@more} + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @param formatArgs The format arguments that will be used for substitution. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return String The string data associated with the resource, + * stripped of styled text information. + */ + public String getString(int id, Object... formatArgs) throws NotFoundException { + String raw = getString(id); + return String.format(mConfiguration.locale, raw, formatArgs); + } + + /** + * Formats the string necessary for grammatically correct pluralization + * of the given resource ID for the given quantity, using the given arguments. + * Note that the string is selected based solely on grammatical necessity, + * and that such rules differ between languages. Do not assume you know which string + * will be returned for a given quantity. See + * String Resources + * for more detail. + * + *

Substitution of format arguments works as if using + * {@link java.util.Formatter} and {@link java.lang.String#format}. + * The resulting string will be stripped of any styled text information. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @param quantity The number used to get the correct string for the current language's + * plural rules. + * @param formatArgs The format arguments that will be used for substitution. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return String The string data associated with the resource, + * stripped of styled text information. + */ + public String getQuantityString(int id, int quantity, Object... formatArgs) + throws NotFoundException { + String raw = getQuantityText(id, quantity).toString(); + return String.format(mConfiguration.locale, raw, formatArgs); + } + + /** + * Returns the string necessary for grammatically correct pluralization + * of the given resource ID for the given quantity. + * Note that the string is selected based solely on grammatical necessity, + * and that such rules differ between languages. Do not assume you know which string + * will be returned for a given quantity. See + * String Resources + * for more detail. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @param quantity The number used to get the correct string for the current language's + * plural rules. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return String The string data associated with the resource, + * stripped of styled text information. + */ + public String getQuantityString(int id, int quantity) throws NotFoundException { + return getQuantityText(id, quantity).toString(); + } + + /** + * Return the string value associated with a particular resource ID. The + * returned object will be a String if this is a plain string; it will be + * some other type of CharSequence if it is styled. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @param def The default CharSequence to return. + * + * @return CharSequence The string data associated with the resource, plus + * possibly styled text information, or def if id is 0 or not found. + */ + public CharSequence getText(int id, CharSequence def) { + CharSequence res = id != 0 ? mAssets.getResourceText(id) : null; + return res != null ? res : def; + } + + /** + * Return the styled text array associated with a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return The styled text array associated with the resource. + */ + public CharSequence[] getTextArray(int id) throws NotFoundException { + CharSequence[] res = mAssets.getResourceTextArray(id); + if (res != null) { + return res; + } + throw new NotFoundException("Text array resource ID #0x" + + Integer.toHexString(id)); + } + + /** + * Return the string array associated with a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return The string array associated with the resource. + */ + public String[] getStringArray(int id) throws NotFoundException { + String[] res = mAssets.getResourceStringArray(id); + if (res != null) { + return res; + } + throw new NotFoundException("String array resource ID #0x" + + Integer.toHexString(id)); + } + + /** + * Return the int array associated with a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return The int array associated with the resource. + */ + public int[] getIntArray(int id) throws NotFoundException { + int[] res = mAssets.getArrayIntResource(id); + if (res != null) { + return res; + } + throw new NotFoundException("Int array resource ID #0x" + + Integer.toHexString(id)); + } + + /** + * Return an array of heterogeneous values. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns a TypedArray holding an array of the array values. + * Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} + * when done with it. + */ + public TypedArray obtainTypedArray(int id) throws NotFoundException { + int len = mAssets.getArraySize(id); + if (len < 0) { + throw new NotFoundException("Array resource ID #0x" + + Integer.toHexString(id)); + } + + TypedArray array = getCachedStyledAttributes(len); + array.mLength = mAssets.retrieveArray(id, array.mData); + array.mIndices[0] = 0; + + return array; + } + + /** + * Retrieve a dimensional for a particular resource ID. Unit + * conversions are based on the current {@link DisplayMetrics} associated + * with the resources. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @return Resource dimension value multiplied by the appropriate + * metric. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getDimensionPixelOffset + * @see #getDimensionPixelSize + */ + public float getDimension(int id) throws NotFoundException { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimension(value.data, mMetrics); + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Retrieve a dimensional for a particular resource ID for use + * as an offset in raw pixels. This is the same as + * {@link #getDimension}, except the returned value is converted to + * integer pixels for you. An offset conversion involves simply + * truncating the base value to an integer. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @return Resource dimension value multiplied by the appropriate + * metric and truncated to integer pixels. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getDimension + * @see #getDimensionPixelSize + */ + public int getDimensionPixelOffset(int id) throws NotFoundException { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelOffset( + value.data, mMetrics); + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Retrieve a dimensional for a particular resource ID for use + * as a size in raw pixels. This is the same as + * {@link #getDimension}, except the returned value is converted to + * integer pixels for use as a size. A size conversion involves + * rounding the base value, and ensuring that a non-zero base value + * is at least one pixel in size. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @return Resource dimension value multiplied by the appropriate + * metric and truncated to integer pixels. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getDimension + * @see #getDimensionPixelOffset + */ + public int getDimensionPixelSize(int id) throws NotFoundException { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelSize( + value.data, mMetrics); + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Retrieve a fractional unit for a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @param base The base value of this fraction. In other words, a + * standard fraction is multiplied by this value. + * @param pbase The parent base value of this fraction. In other + * words, a parent fraction (nn%p) is multiplied by this + * value. + * + * @return Attribute fractional value multiplied by the appropriate + * base value. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + */ + public float getFraction(int id, int base, int pbase) { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type == TypedValue.TYPE_FRACTION) { + return TypedValue.complexToFraction(value.data, base, pbase); + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Return a drawable object associated with a particular resource ID. + * Various types of objects will be returned depending on the underlying + * resource -- for example, a solid color, PNG image, scalable image, etc. + * The Drawable API hides these implementation details. + * + *

Note: Prior to + * {@link android.os.Build.VERSION_CODES#JELLY_BEAN}, this function + * would not correctly retrieve the final configuration density when + * the resource ID passed here is an alias to another Drawable resource. + * This means that if the density configuration of the alias resource + * is different than the actual resource, the density of the returned + * Drawable would be incorrect, resulting in bad scaling. To work + * around this, you can instead retrieve the Drawable through + * {@link TypedArray#getDrawable TypedArray.getDrawable}. Use + * {@link android.content.Context#obtainStyledAttributes(int[]) + * Context.obtainStyledAttributes} with + * an array containing the resource ID of interest to create the TypedArray.

+ * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Drawable An object that can be used to draw this resource. + */ + public Drawable getDrawable(int id) throws NotFoundException { + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } else { + mTmpValue = null; + } + getValue(id, value, true); + } + Drawable res = loadDrawable(value, id); + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + return res; + } + + /** + * Return a drawable object associated with a particular resource ID for the + * given screen density in DPI. This will set the drawable's density to be + * the device's density multiplied by the ratio of actual drawable density + * to requested density. This allows the drawable to be scaled up to the + * correct size if needed. Various types of objects will be returned + * depending on the underlying resource -- for example, a solid color, PNG + * image, scalable image, etc. The Drawable API hides these implementation + * details. + * + * @param id The desired resource identifier, as generated by the aapt tool. + * This integer encodes the package, type, and resource entry. + * The value 0 is an invalid identifier. + * @param density the desired screen density indicated by the resource as + * found in {@link DisplayMetrics}. + * @throws NotFoundException Throws NotFoundException if the given ID does + * not exist. + * @return Drawable An object that can be used to draw this resource. + */ + public Drawable getDrawableForDensity(int id, int density) throws NotFoundException { + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } else { + mTmpValue = null; + } + getValueForDensity(id, density, value, true); + + /* + * Pretend the requested density is actually the display density. If + * the drawable returned is not the requested density, then force it + * to be scaled later by dividing its density by the ratio of + * requested density to actual device density. Drawables that have + * undefined density or no density don't need to be handled here. + */ + if (value.density > 0 && value.density != TypedValue.DENSITY_NONE) { + if (value.density == density) { + value.density = mMetrics.densityDpi; + } else { + value.density = (value.density * mMetrics.densityDpi) / density; + } + } + } + + Drawable res = loadDrawable(value, id); + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + return res; + } + + /** + * Return a movie object associated with the particular resource ID. + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + */ + public Movie getMovie(int id) throws NotFoundException {/* + InputStream is = openRawResource(id); + Movie movie = Movie.decodeStream(is); + try { + is.close(); + } + catch (java.io.IOException e) { + // don't care, since the return value is valid + } + return movie; + */return null;} + + /** + * Return a color integer associated with a particular resource ID. + * If the resource holds a complex + * {@link android.content.res.ColorStateList}, then the default color from + * the set is returned. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns a single color value in the form 0xAARRGGBB. + */ + public int getColor(int id) throws NotFoundException { + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } + getValue(id, value, true); + if (value.type >= TypedValue.TYPE_FIRST_INT + && value.type <= TypedValue.TYPE_LAST_INT) { + mTmpValue = value; + return value.data; + } else if (value.type != TypedValue.TYPE_STRING) { + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + mTmpValue = null; + } + ColorStateList csl = loadColorStateList(value, id); + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + return csl.getDefaultColor(); + } + + /** + * Return a color state list associated with a particular resource ID. The + * resource may contain either a single raw color value, or a complex + * {@link android.content.res.ColorStateList} holding multiple possible colors. + * + * @param id The desired resource identifier of a {@link ColorStateList}, + * as generated by the aapt tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns a ColorStateList object containing either a single + * solid color or multiple colors that can be selected based on a state. + */ + public ColorStateList getColorStateList(int id) throws NotFoundException {/* + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } else { + mTmpValue = null; + } + getValue(id, value, true); + } + ColorStateList res = loadColorStateList(value, id); + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + return res;*/ + return new ColorStateList(new int[][] { new int[0] }, new int[1]); + } + + /** + * Return a boolean associated with a particular resource ID. This can be + * used with any integral resource value, and will return true if it is + * non-zero. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns the boolean value contained in the resource. + */ + public boolean getBoolean(int id) throws NotFoundException { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type >= TypedValue.TYPE_FIRST_INT + && value.type <= TypedValue.TYPE_LAST_INT) { + return value.data != 0; + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Return an integer associated with a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns the integer value contained in the resource. + */ + public int getInteger(int id) throws NotFoundException { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type >= TypedValue.TYPE_FIRST_INT + && value.type <= TypedValue.TYPE_LAST_INT) { + return value.data; + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /** + * Return an XmlResourceParser through which you can read a view layout + * description for the given resource ID. This parser has limited + * functionality -- in particular, you can't change its input, and only + * the high-level events are available. + * + *

This function is really a simple wrapper for calling + * {@link #getXml} with a layout resource. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return A new parser object through which you can read + * the XML data. + * + * @see #getXml + */ + public XmlResourceParser getLayout(int id) throws /*NotFound*/Exception { + return loadXmlResourceParser(id, "layout"); + } + + /** + * Return an XmlResourceParser through which you can read an animation + * description for the given resource ID. This parser has limited + * functionality -- in particular, you can't change its input, and only + * the high-level events are available. + * + *

This function is really a simple wrapper for calling + * {@link #getXml} with an animation resource. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return A new parser object through which you can read + * the XML data. + * + * @see #getXml + */ + public XmlResourceParser getAnimation(int id) throws /*NotFound*/Exception { + return loadXmlResourceParser(id, "anim"); + } + + /** + * Return an XmlResourceParser through which you can read a generic XML + * resource for the given resource ID. + * + *

The XmlPullParser implementation returned here has some limited + * functionality. In particular, you can't change its input, and only + * high-level parsing events are available (since the document was + * pre-parsed for you at build time, which involved merging text and + * stripping comments). + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return A new parser object through which you can read + * the XML data. + * + * @see android.util.AttributeSet + */ + public XmlResourceParser getXml(int id) throws /*NotFound*/Exception { + return loadXmlResourceParser(id, "xml"); + } + + /** + * Open a data stream for reading a raw resource. This can only be used + * with resources whose value is the name of an asset files -- that is, it can be + * used to open drawable, sound, and raw resources; it will fail on string + * and color resources. + * + * @param id The resource identifier to open, as generated by the appt + * tool. + * + * @return InputStream Access to the resource data. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + */ + public InputStream openRawResource(int id) throws NotFoundException { + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } else { + mTmpValue = null; + } + } + InputStream res = openRawResource(id, value); + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + return res; + } + + /** + * Open a data stream for reading a raw resource. This can only be used + * with resources whose value is the name of an asset file -- that is, it can be + * used to open drawable, sound, and raw resources; it will fail on string + * and color resources. + * + * @param id The resource identifier to open, as generated by the appt tool. + * @param value The TypedValue object to hold the resource information. + * + * @return InputStream Access to the resource data. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + */ + public InputStream openRawResource(int id, TypedValue value) throws NotFoundException { + getValue(id, value, true); + + try { + return mAssets.openNonAsset(value.assetCookie, value.string.toString(), + AssetManager.ACCESS_STREAMING); + } catch (Exception e) { + NotFoundException rnf = new NotFoundException("File " + value.string.toString() + + " from drawable resource ID #0x" + Integer.toHexString(id)); + rnf.initCause(e); + throw rnf; + } + } + + /** + * Open a file descriptor for reading a raw resource. This can only be used + * with resources whose value is the name of an asset files -- that is, it can be + * used to open drawable, sound, and raw resources; it will fail on string + * and color resources. + * + *

This function only works for resources that are stored in the package + * as uncompressed data, which typically includes things like mp3 files + * and png images. + * + * @param id The resource identifier to open, as generated by the appt + * tool. + * + * @return AssetFileDescriptor A new file descriptor you can use to read + * the resource. This includes the file descriptor itself, as well as the + * offset and length of data where the resource appears in the file. A + * null is returned if the file exists but is compressed. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + */ + public AssetFileDescriptor openRawResourceFd(int id) throws NotFoundException { + TypedValue value; + synchronized (mAccessLock) { + value = mTmpValue; + if (value == null) { + value = new TypedValue(); + } else { + mTmpValue = null; + } + getValue(id, value, true); + } + try { + return mAssets.openNonAssetFd( + value.assetCookie, value.string.toString()); + } catch (Exception e) { + NotFoundException rnf = new NotFoundException( + "File " + value.string.toString() + + " from drawable resource ID #0x" + + Integer.toHexString(id)); + rnf.initCause(e); + throw rnf; + } finally { + synchronized (mAccessLock) { + if (mTmpValue == null) { + mTmpValue = value; + } + } + } + } + + /** + * Return the raw data associated with a particular resource ID. + * + * @param id The desired resource identifier, as generated by the aapt + * tool. This integer encodes the package, type, and resource + * entry. The value 0 is an invalid identifier. + * @param outValue Object in which to place the resource data. + * @param resolveRefs If true, a resource that is a reference to another + * resource will be followed so that you receive the + * actual final resource data. If false, the TypedValue + * will be filled in with the reference itself. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + */ + public void getValue(int id, TypedValue outValue, boolean resolveRefs) + throws NotFoundException { + boolean found = mAssets.getResourceValue(id, 0, outValue, resolveRefs); + if (found) { + return; + } + throw new NotFoundException("Resource ID #0x" + + Integer.toHexString(id)); + } + + /** + * Get the raw value associated with a resource with associated density. + * + * @param id resource identifier + * @param density density in DPI + * @param resolveRefs If true, a resource that is a reference to another + * resource will be followed so that you receive the actual final + * resource data. If false, the TypedValue will be filled in with + * the reference itself. + * @throws NotFoundException Throws NotFoundException if the given ID does + * not exist. + * @see #getValue(String, TypedValue, boolean) + */ + public void getValueForDensity(int id, int density, TypedValue outValue, boolean resolveRefs) + throws NotFoundException { + boolean found = mAssets.getResourceValue(id, density, outValue, resolveRefs); + if (found) { + return; + } + throw new NotFoundException("Resource ID #0x" + Integer.toHexString(id)); + } + + /** + * Return the raw data associated with a particular resource ID. + * See getIdentifier() for information on how names are mapped to resource + * IDs, and getString(int) for information on how string resources are + * retrieved. + * + *

Note: use of this function is discouraged. It is much more + * efficient to retrieve resources by identifier than by name. + * + * @param name The name of the desired resource. This is passed to + * getIdentifier() with a default type of "string". + * @param outValue Object in which to place the resource data. + * @param resolveRefs If true, a resource that is a reference to another + * resource will be followed so that you receive the + * actual final resource data. If false, the TypedValue + * will be filled in with the reference itself. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + */ + public void getValue(String name, TypedValue outValue, boolean resolveRefs) + throws NotFoundException { + int id = getIdentifier(name, "string", null); + if (id != 0) { + getValue(id, outValue, resolveRefs); + return; + } + throw new NotFoundException("String resource name " + name); + } + + /** + * This class holds the current attribute values for a particular theme. + * In other words, a Theme is a set of values for resource attributes; + * these are used in conjunction with {@link TypedArray} + * to resolve the final value for an attribute. + * + *

The Theme's attributes come into play in two ways: (1) a styled + * attribute can explicit reference a value in the theme through the + * "?themeAttribute" syntax; (2) if no value has been defined for a + * particular styled attribute, as a last resort we will try to find that + * attribute's value in the Theme. + * + *

You will normally use the {@link #obtainStyledAttributes} APIs to + * retrieve XML attributes with style and theme information applied. + */ + public final class Theme { + /** + * Place new attribute values into the theme. The style resource + * specified by resid will be retrieved from this Theme's + * resources, its values placed into the Theme object. + * + *

The semantics of this function depends on the force + * argument: If false, only values that are not already defined in + * the theme will be copied from the system resource; otherwise, if + * any of the style's attributes are already defined in the theme, the + * current values in the theme will be overwritten. + * + * @param resid The resource ID of a style resource from which to + * obtain attribute values. + * @param force If true, values in the style resource will always be + * used in the theme; otherwise, they will only be used + * if not already defined in the theme. + */ + public void applyStyle(int resid, boolean force) { + AssetManager.applyThemeStyle(mTheme, resid, force); + } + + /** + * Set this theme to hold the same contents as the theme + * other. If both of these themes are from the same + * Resources object, they will be identical after this function + * returns. If they are from different Resources, only the resources + * they have in common will be set in this theme. + * + * @param other The existing Theme to copy from. + */ + public void setTo(Theme other) { + AssetManager.copyTheme(mTheme, other.mTheme); + } + + /** + * Return a TypedArray holding the values defined by + * Theme which are listed in attrs. + * + *

Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done + * with the array. + * + * @param attrs The desired attributes. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns a TypedArray holding an array of the attribute values. + * Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} + * when done with it. + * + * @see Resources#obtainAttributes + * @see #obtainStyledAttributes(int, int[]) + * @see #obtainStyledAttributes(AttributeSet, int[], int, int) + */ + public TypedArray obtainStyledAttributes(int[] attrs) { + int len = attrs.length; + TypedArray array = getCachedStyledAttributes(len); + array.mRsrcs = attrs; + AssetManager.applyStyle(mTheme, 0, 0, 0, attrs, + array.mData, array.mIndices); + return array; + } + + /** + * Return a TypedArray holding the values defined by the style + * resource resid which are listed in attrs. + * + *

Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done + * with the array. + * + * @param resid The desired style resource. + * @param attrs The desired attributes in the style. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @return Returns a TypedArray holding an array of the attribute values. + * Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} + * when done with it. + * + * @see Resources#obtainAttributes + * @see #obtainStyledAttributes(int[]) + * @see #obtainStyledAttributes(AttributeSet, int[], int, int) + */ + public TypedArray obtainStyledAttributes(int resid, int[] attrs) + throws NotFoundException { + int len = attrs.length; + TypedArray array = getCachedStyledAttributes(len); + array.mRsrcs = attrs; + + AssetManager.applyStyle(mTheme, 0, resid, 0, attrs, + array.mData, array.mIndices); + if (false) { + int[] data = array.mData; + + System.out.println("**********************************************************"); + System.out.println("**********************************************************"); + System.out.println("**********************************************************"); + System.out.println("Attributes:"); + String s = " Attrs:"; + int i; + for (i=0; iBe sure to call {@link TypedArray#recycle() TypedArray.recycle()} when you are done + * with the array. + * + *

When determining the final value of a particular attribute, there + * are four inputs that come into play:

+ * + *
    + *
  1. Any attribute values in the given AttributeSet. + *
  2. The style resource specified in the AttributeSet (named + * "style"). + *
  3. The default style specified by defStyleAttr and + * defStyleRes + *
  4. The base values in this theme. + *
+ * + *

Each of these inputs is considered in-order, with the first listed + * taking precedence over the following ones. In other words, if in the + * AttributeSet you have supplied <Button + * textColor="#ff000000">, then the button's text will + * always be black, regardless of what is specified in any of + * the styles. + * + * @param set The base set of attribute values. May be null. + * @param attrs The desired attributes to be retrieved. + * @param defStyleAttr An attribute in the current theme that contains a + * reference to a style resource that supplies + * defaults values for the TypedArray. Can be + * 0 to not look for defaults. + * @param defStyleRes A resource identifier of a style resource that + * supplies default values for the TypedArray, + * used only if defStyleAttr is 0 or can not be found + * in the theme. Can be 0 to not look for defaults. + * + * @return Returns a TypedArray holding an array of the attribute values. + * Be sure to call {@link TypedArray#recycle() TypedArray.recycle()} + * when done with it. + * + * @see Resources#obtainAttributes + * @see #obtainStyledAttributes(int[]) + * @see #obtainStyledAttributes(int, int[]) + */ + public TypedArray obtainStyledAttributes(AttributeSet set, + int[] attrs, int defStyleAttr, int defStyleRes) { + int len = attrs.length; + TypedArray array = getCachedStyledAttributes(len); + + // XXX note that for now we only work with compiled XML files. + // To support generic XML files we will need to manually parse + // out the attributes from the XML file (applying type information + // contained in the resources and such). + XmlBlock.Parser parser = (XmlBlock.Parser)set; + AssetManager.applyStyle( + mTheme, defStyleAttr, defStyleRes, + parser != null ? parser.mParseState : 0, attrs, + array.mData, array.mIndices); + + array.mRsrcs = attrs; + array.mXml = parser; + + if (false) { + int[] data = array.mData; + + System.out.println("Attributes:"); + String s = " Attrs:"; + int i; + for (i=0; i= mMetrics.heightPixels) { + width = mMetrics.widthPixels; + height = mMetrics.heightPixels; + } else { + //noinspection SuspiciousNameCombination + width = mMetrics.heightPixels; + //noinspection SuspiciousNameCombination + height = mMetrics.widthPixels; + } + int keyboardHidden = mConfiguration.keyboardHidden; + if (keyboardHidden == Configuration.KEYBOARDHIDDEN_NO + && mConfiguration.hardKeyboardHidden + == Configuration.HARDKEYBOARDHIDDEN_YES) { + keyboardHidden = Configuration.KEYBOARDHIDDEN_SOFT; + } + mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc, + locale, mConfiguration.orientation, + mConfiguration.touchscreen, + mConfiguration.densityDpi, mConfiguration.keyboard, + keyboardHidden, mConfiguration.navigation, width, height, + mConfiguration.smallestScreenWidthDp, + mConfiguration.screenWidthDp, mConfiguration.screenHeightDp, + mConfiguration.screenLayout, mConfiguration.uiMode, + Build.VERSION.RESOURCES_SDK_INT); + + if (DEBUG_CONFIG) { + Slog.i(TAG, "**** Updating config of " + this + ": final config is " + mConfiguration + + " final compat is " + mCompatibilityInfo); + } + +// clearDrawableCacheLocked(mDrawableCache, configChanges); +// clearDrawableCacheLocked(mColorDrawableCache, configChanges); + + mColorStateListCache.clear(); + + flushLayoutCache(); + } + synchronized (sSync) { + if (mPluralRule != null) { + mPluralRule = NativePluralRules.forLocale(config.locale); + } + } + } + + private void clearDrawableCacheLocked( + LongSparseArray> cache, + int configChanges) {/* + int N = cache.size(); + if (DEBUG_CONFIG) { + Log.d(TAG, "Cleaning up drawables config changes: 0x" + + Integer.toHexString(configChanges)); + } + for (int i=0; i ref = cache.valueAt(i); + if (ref != null) { + Drawable.ConstantState cs = ref.get(); + if (cs != null) { + if (Configuration.needNewResources( + configChanges, cs.getChangingConfigurations())) { + if (DEBUG_CONFIG) { + Log.d(TAG, "FLUSHING #0x" + + Long.toHexString(mDrawableCache.keyAt(i)) + + " / " + cs + " with changes: 0x" + + Integer.toHexString(cs.getChangingConfigurations())); + } + cache.setValueAt(i, null); + } else if (DEBUG_CONFIG) { + Log.d(TAG, "(Keeping #0x" + + Long.toHexString(cache.keyAt(i)) + + " / " + cs + " with changes: 0x" + + Integer.toHexString(cs.getChangingConfigurations()) + + ")"); + } + } + } + } + */} + + /** + * Update the system resources configuration if they have previously + * been initialized. + * + * @hide + */ + public static void updateSystemConfiguration(Configuration config, DisplayMetrics metrics, + CompatibilityInfo compat) { + if (mSystem != null) { + mSystem.updateConfiguration(config, metrics, compat); + //Log.i(TAG, "Updated system resources " + mSystem + // + ": " + mSystem.getConfiguration()); + } + } + + /** + * Return the current display metrics that are in effect for this resource + * object. The returned object should be treated as read-only. + * + * @return The resource's current display metrics. + */ + public DisplayMetrics getDisplayMetrics() { + if (DEBUG_CONFIG) Slog.v(TAG, "Returning DisplayMetrics: " + mMetrics.widthPixels + + "x" + mMetrics.heightPixels + " " + mMetrics.density); + return mMetrics; + } + + /** + * Return the current configuration that is in effect for this resource + * object. The returned object should be treated as read-only. + * + * @return The resource's current configuration. + */ + public Configuration getConfiguration() { + return mConfiguration; + } + + /** + * Return the compatibility mode information for the application. + * The returned object should be treated as read-only. + * + * @return compatibility info. + * @hide + */ + public CompatibilityInfo getCompatibilityInfo() { + return mCompatibilityInfo; + } + + /** + * This is just for testing. + * @hide + */ + public void setCompatibilityInfo(CompatibilityInfo ci) { + if (ci != null) { + mCompatibilityInfo = ci; + updateConfiguration(mConfiguration, mMetrics); + } + } + + /** + * Return a resource identifier for the given resource name. A fully + * qualified resource name is of the form "package:type/entry". The first + * two components (package and type) are optional if defType and + * defPackage, respectively, are specified here. + * + *

Note: use of this function is discouraged. It is much more + * efficient to retrieve resources by identifier than by name. + * + * @param name The name of the desired resource. + * @param defType Optional default resource type to find, if "type/" is + * not included in the name. Can be null to require an + * explicit type. + * @param defPackage Optional default package to find, if "package:" is + * not included in the name. Can be null to require an + * explicit package. + * + * @return int The associated resource identifier. Returns 0 if no such + * resource was found. (0 is not a valid resource ID.) + */ + public int getIdentifier(String name, String defType, String defPackage) { + if (name == null) { + throw new NullPointerException("name is null"); + } + try { + return Integer.parseInt(name); + } catch (Exception e) { + // Ignore + } + return mAssets.getResourceIdentifier(name, defType, defPackage); + } + + /** + * Return true if given resource identifier includes a package. + * + * @hide + */ + public static boolean resourceHasPackage(int resid) { + return (resid >>> 24) != 0; + } + + /** + * Return the full name for a given resource identifier. This name is + * a single string of the form "package:type/entry". + * + * @param resid The resource identifier whose name is to be retrieved. + * + * @return A string holding the name of the resource. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getResourcePackageName + * @see #getResourceTypeName + * @see #getResourceEntryName + */ + public String getResourceName(int resid) throws NotFoundException { + String str = mAssets.getResourceName(resid); + if (str != null) return str; + throw new NotFoundException("Unable to find resource ID #0x" + + Integer.toHexString(resid)); + } + + /** + * Return the package name for a given resource identifier. + * + * @param resid The resource identifier whose package name is to be + * retrieved. + * + * @return A string holding the package name of the resource. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getResourceName + */ + public String getResourcePackageName(int resid) throws NotFoundException { + String str = mAssets.getResourcePackageName(resid); + if (str != null) return str; + throw new NotFoundException("Unable to find resource ID #0x" + + Integer.toHexString(resid)); + } + + /** + * Return the type name for a given resource identifier. + * + * @param resid The resource identifier whose type name is to be + * retrieved. + * + * @return A string holding the type name of the resource. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getResourceName + */ + public String getResourceTypeName(int resid) throws NotFoundException { + String str = mAssets.getResourceTypeName(resid); + if (str != null) return str; + throw new NotFoundException("Unable to find resource ID #0x" + + Integer.toHexString(resid)); + } + + /** + * Return the entry name for a given resource identifier. + * + * @param resid The resource identifier whose entry name is to be + * retrieved. + * + * @return A string holding the entry name of the resource. + * + * @throws NotFoundException Throws NotFoundException if the given ID does not exist. + * + * @see #getResourceName + */ + public String getResourceEntryName(int resid) throws NotFoundException { + String str = mAssets.getResourceEntryName(resid); + if (str != null) return str; + throw new NotFoundException("Unable to find resource ID #0x" + + Integer.toHexString(resid)); + } + + /** + * Parse a series of {@link android.R.styleable#Extra <extra>} tags from + * an XML file. You call this when you are at the parent tag of the + * extra tags, and it will return once all of the child tags have been parsed. + * This will call {@link #parseBundleExtra} for each extra tag encountered. + * + * @param parser The parser from which to retrieve the extras. + * @param outBundle A Bundle in which to place all parsed extras. + * @throws XmlPullParserException + * @throws IOException + */ + public void parseBundleExtras(XmlResourceParser parser, Bundle outBundle) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + String nodeName = parser.getName(); + if (nodeName.equals("extra")) { + parseBundleExtra("extra", parser, outBundle); + XmlUtils.skipCurrentTag(parser); + + } else { + XmlUtils.skipCurrentTag(parser); + } + } + } + + /** + * Parse a name/value pair out of an XML tag holding that data. The + * AttributeSet must be holding the data defined by + * {@link android.R.styleable#Extra}. The following value types are supported: + *

    + *
  • {@link TypedValue#TYPE_STRING}: + * {@link Bundle#putCharSequence Bundle.putCharSequence()} + *
  • {@link TypedValue#TYPE_INT_BOOLEAN}: + * {@link Bundle#putCharSequence Bundle.putBoolean()} + *
  • {@link TypedValue#TYPE_FIRST_INT}-{@link TypedValue#TYPE_LAST_INT}: + * {@link Bundle#putCharSequence Bundle.putBoolean()} + *
  • {@link TypedValue#TYPE_FLOAT}: + * {@link Bundle#putCharSequence Bundle.putFloat()} + *
+ * + * @param tagName The name of the tag these attributes come from; this is + * only used for reporting error messages. + * @param attrs The attributes from which to retrieve the name/value pair. + * @param outBundle The Bundle in which to place the parsed value. + * @throws XmlPullParserException If the attributes are not valid. + */ + public void parseBundleExtra(String tagName, AttributeSet attrs, + Bundle outBundle) throws XmlPullParserException { + TypedArray sa = obtainAttributes(attrs, + com.android.internal.R.styleable.Extra); + + String name = sa.getString( + com.android.internal.R.styleable.Extra_name); + if (name == null) { + sa.recycle(); + throw new XmlPullParserException("<" + tagName + + "> requires an android:name attribute at " + + attrs.getPositionDescription()); + } + + TypedValue v = sa.peekValue( + com.android.internal.R.styleable.Extra_value); + if (v != null) { + if (v.type == TypedValue.TYPE_STRING) { + CharSequence cs = v.coerceToString(); + outBundle.putCharSequence(name, cs); + } else if (v.type == TypedValue.TYPE_INT_BOOLEAN) { + outBundle.putBoolean(name, v.data != 0); + } else if (v.type >= TypedValue.TYPE_FIRST_INT + && v.type <= TypedValue.TYPE_LAST_INT) { + outBundle.putInt(name, v.data); + } else if (v.type == TypedValue.TYPE_FLOAT) { + outBundle.putFloat(name, v.getFloat()); + } else { + sa.recycle(); + throw new XmlPullParserException("<" + tagName + + "> only supports string, integer, float, color, and boolean at " + + attrs.getPositionDescription()); + } + } else { + sa.recycle(); + throw new XmlPullParserException("<" + tagName + + "> requires an android:value or android:resource attribute at " + + attrs.getPositionDescription()); + } + + sa.recycle(); + } + + /** + * Retrieve underlying AssetManager storage for these resources. + */ + public final AssetManager getAssets() { + return mAssets; + } + + /** + * Call this to remove all cached loaded layout resources from the + * Resources object. Only intended for use with performance testing + * tools. + */ + public final void flushLayoutCache() { + synchronized (mCachedXmlBlockIds) { + // First see if this block is in our cache. + final int num = mCachedXmlBlockIds.length; + for (int i=0; i getPreloadedDrawables() { + return sPreloadedDrawables[0]; + } + + private boolean verifyPreloadConfig(int changingConfigurations, int allowVarying, + int resourceId, String name) { + // We allow preloading of resources even if they vary by font scale (which + // doesn't impact resource selection) or density (which we handle specially by + // simply turning off all preloading), as well as any other configs specified + // by the caller. + if (((changingConfigurations&~(ActivityInfo.CONFIG_FONT_SCALE | + ActivityInfo.CONFIG_DENSITY)) & ~allowVarying) != 0) { + String resName; + try { + resName = getResourceName(resourceId); + } catch (NotFoundException e) { + resName = "?"; + } + Log.w(TAG, "Preloaded " + name + " resource #0x" + + Integer.toHexString(resourceId) + + " (" + resName + ") that varies with configuration!!"); + return false; + } + if (TRACE_FOR_PRELOAD) { + String resName; + try { + resName = getResourceName(resourceId); + } catch (NotFoundException e) { + resName = "?"; + } + Log.w(TAG, "Preloading " + name + " resource #0x" + + Integer.toHexString(resourceId) + + " (" + resName + ")"); + } + return true; + } + + static private final int LAYOUT_DIR_CONFIG = ActivityInfo.activityInfoConfigToNative( + ActivityInfo.CONFIG_LAYOUT_DIRECTION); + + /*package*/ Drawable loadDrawable(TypedValue value, int id) + throws NotFoundException {/* + + if (TRACE_FOR_PRELOAD) { + // Log only framework resources + if ((id >>> 24) == 0x1) { + final String name = getResourceName(id); + if (name != null) android.util.Log.d("PreloadDrawable", name); + } + } + + boolean isColorDrawable = false; + if (value.type >= TypedValue.TYPE_FIRST_COLOR_INT && + value.type <= TypedValue.TYPE_LAST_COLOR_INT) { + isColorDrawable = true; + } + final long key = isColorDrawable ? value.data : + (((long) value.assetCookie) << 32) | value.data; + + Drawable dr = getCachedDrawable(isColorDrawable ? mColorDrawableCache : mDrawableCache, key); + + if (dr != null) { + return dr; + } + Drawable.ConstantState cs; + if (isColorDrawable) { + cs = sPreloadedColorDrawables.get(key); + } else { + cs = sPreloadedDrawables[mConfiguration.getLayoutDirection()].get(key); + } + if (cs != null) { + dr = cs.newDrawable(this); + } else { + if (isColorDrawable) { + dr = new ColorDrawable(value.data); + } + + if (dr == null) { + if (value.string == null) { + throw new NotFoundException( + "Resource is not a Drawable (color or path): " + value); + } + + String file = value.string.toString(); + + if (TRACE_FOR_MISS_PRELOAD) { + // Log only framework resources + if ((id >>> 24) == 0x1) { + final String name = getResourceName(id); + if (name != null) android.util.Log.d(TAG, "Loading framework drawable #" + + Integer.toHexString(id) + ": " + name + + " at " + file); + } + } + + if (DEBUG_LOAD) Log.v(TAG, "Loading drawable for cookie " + + value.assetCookie + ": " + file); + + if (file.endsWith(".xml")) { + Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, file); + try { + XmlResourceParser rp = loadXmlResourceParser( + file, id, value.assetCookie, "drawable"); + dr = Drawable.createFromXml(this, rp); + rp.close(); + } catch (Exception e) { + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + NotFoundException rnf = new NotFoundException( + "File " + file + " from drawable resource ID #0x" + + Integer.toHexString(id)); + rnf.initCause(e); + throw rnf; + } + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + + } else { + Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, file); + try { + InputStream is = mAssets.openNonAsset( + value.assetCookie, file, AssetManager.ACCESS_STREAMING); + // System.out.println("Opened file " + file + ": " + is); + dr = null/*Drawable.createFromResourceStream(this, value, is, + file, null)* /; + is.close(); + // System.out.println("Created stream: " + dr); + } catch (Exception e) { + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + NotFoundException rnf = new NotFoundException( + "File " + file + " from drawable resource ID #0x" + + Integer.toHexString(id)); + rnf.initCause(e); + throw rnf; + } + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + } + } + } + + if (dr != null) { + dr.setChangingConfigurations(value.changingConfigurations); + cs = dr.getConstantState(); + if (cs != null) { + if (mPreloading) { + final int changingConfigs = cs.getChangingConfigurations(); + if (isColorDrawable) { + if (verifyPreloadConfig(changingConfigs, 0, value.resourceId, + "drawable")) { + sPreloadedColorDrawables.put(key, cs); + } + } else { + if (verifyPreloadConfig(changingConfigs, + LAYOUT_DIR_CONFIG, value.resourceId, "drawable")) { + if ((changingConfigs&LAYOUT_DIR_CONFIG) == 0) { + // If this resource does not vary based on layout direction, + // we can put it in all of the preload maps. + sPreloadedDrawables[0].put(key, cs); + sPreloadedDrawables[1].put(key, cs); + } else { + // Otherwise, only in the layout dir we loaded it for. + final LongSparseArray preloads + = sPreloadedDrawables[mConfiguration.getLayoutDirection()]; + preloads.put(key, cs); + } + } + } + } else { + synchronized (mAccessLock) { + //Log.i(TAG, "Saving cached drawable @ #" + + // Integer.toHexString(key.intValue()) + // + " in " + this + ": " + cs); + if (isColorDrawable) { + mColorDrawableCache.put(key, new WeakReference(cs)); + } else { + mDrawableCache.put(key, new WeakReference(cs)); + } + } + } + } + } + + return dr; + */return null;} + + private Drawable getCachedDrawable( + LongSparseArray> drawableCache, + long key) {/* + synchronized (mAccessLock) { + WeakReference wr = drawableCache.get(key); + if (wr != null) { // we have the key + Drawable.ConstantState entry = wr.get(); + if (entry != null) { + //Log.i(TAG, "Returning cached drawable @ #" + + // Integer.toHexString(((Integer)key).intValue()) + // + " in " + this + ": " + entry); + return entry.newDrawable(this); + } + else { // our entry has been purged + drawableCache.delete(key); + } + } + }*/ + return null; + } + + /*package*/ ColorStateList loadColorStateList(TypedValue value, int id) + throws NotFoundException { + if (TRACE_FOR_PRELOAD) { + // Log only framework resources + if ((id >>> 24) == 0x1) { + final String name = getResourceName(id); + if (name != null) android.util.Log.d("PreloadColorStateList", name); + } + } + + final long key = (((long) value.assetCookie) << 32) | value.data; + + ColorStateList csl; + + if (value.type >= TypedValue.TYPE_FIRST_COLOR_INT && + value.type <= TypedValue.TYPE_LAST_COLOR_INT) { + + csl = sPreloadedColorStateLists.get(key); + if (csl != null) { + return csl; + } + + csl = ColorStateList.valueOf(value.data); + if (mPreloading) { + if (verifyPreloadConfig(value.changingConfigurations, 0, value.resourceId, + "color")) { + sPreloadedColorStateLists.put(key, csl); + } + } + + return csl; + } + + csl = getCachedColorStateList(key); + if (csl != null) { + return csl; + } + + csl = sPreloadedColorStateLists.get(key); + if (csl != null) { + return csl; + } + + if (value.string == null) { + throw new NotFoundException( + "Resource is not a ColorStateList (color or path): " + value); + } + + String file = value.string.toString(); + + if (file.endsWith(".xml")) { + Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, file); + try { + XmlResourceParser rp = loadXmlResourceParser( + file, id, value.assetCookie, "colorstatelist"); + csl = ColorStateList.createFromXml(this, rp); + rp.close(); + } catch (Exception e) { + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + NotFoundException rnf = new NotFoundException( + "File " + file + " from color state list resource ID #0x" + + Integer.toHexString(id)); + rnf.initCause(e); + throw rnf; + } + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + } else { + throw new NotFoundException( + "File " + file + " from drawable resource ID #0x" + + Integer.toHexString(id) + ": .xml extension required"); + } + + if (csl != null) { + if (mPreloading) { + if (verifyPreloadConfig(value.changingConfigurations, 0, value.resourceId, + "color")) { + sPreloadedColorStateLists.put(key, csl); + } + } else { + synchronized (mAccessLock) { + //Log.i(TAG, "Saving cached color state list @ #" + + // Integer.toHexString(key.intValue()) + // + " in " + this + ": " + csl); + mColorStateListCache.put(key, new WeakReference(csl)); + } + } + } + + return csl; + } + + private ColorStateList getCachedColorStateList(long key) { + synchronized (mAccessLock) { + WeakReference wr = mColorStateListCache.get(key); + if (wr != null) { // we have the key + ColorStateList entry = wr.get(); + if (entry != null) { + //Log.i(TAG, "Returning cached color state list @ #" + + // Integer.toHexString(((Integer)key).intValue()) + // + " in " + this + ": " + entry); + return entry; + } else { // our entry has been purged + mColorStateListCache.delete(key); + } + } + } + return null; + } + + /*package*/ XmlResourceParser loadXmlResourceParser(int id, String type) + throws /*NotFound*/Exception { + synchronized (mAccessLock) { + TypedValue value = mTmpValue; + if (value == null) { + mTmpValue = value = new TypedValue(); + } + getValue(id, value, true); + if (value.type == TypedValue.TYPE_STRING) { + return loadXmlResourceParser(value.string.toString(), id, + value.assetCookie, type); + } + throw new NotFoundException( + "Resource ID #0x" + Integer.toHexString(id) + " type #0x" + + Integer.toHexString(value.type) + " is not valid"); + } + } + + /*package*/ XmlResourceParser loadXmlResourceParser(String file, int id, + int assetCookie, String type) throws /*NotFound*/Exception { + return mAssets.openXmlResourceParser(assetCookie, file); +/* if (id != 0) { + try { + // These may be compiled... + synchronized (mCachedXmlBlockIds) { + // First see if this block is in our cache. + final int num = mCachedXmlBlockIds.length; + for (int i=0; i= fullLen) { + return attrs; + } + attrs.mData = new int[fullLen]; + attrs.mIndices = new int[1+len]; + return attrs; + } + if (DEBUG_ATTRIBUTES_CACHE) { + RuntimeException here = new RuntimeException("here"); + here.fillInStackTrace(); + if (mLastRetrievedAttrs != null) { + Log.i(TAG, "Allocated new TypedArray of " + len + " in " + this, here); + Log.i(TAG, "Last retrieved attributes here", mLastRetrievedAttrs); + } + mLastRetrievedAttrs = here; + } + return new TypedArray(this, + new int[len*AssetManager.STYLE_NUM_ENTRIES], + new int[1+len], len); + } + } + + private Resources() { + mAssets = AssetManager.getSystem(); + // NOTE: Intentionally leaving this uninitialized (all values set + // to zero), so that anyone who tries to do something that requires + // metrics will get a very wrong value. + mConfiguration.setToDefaults(); + mMetrics.setToDefaults(); + updateConfiguration(null, null); + mAssets.ensureStringBlocks(); + } +} diff --git a/src/api-impl/android/content/res/StringBlock.java b/src/api-impl/android/content/res/StringBlock.java new file mode 100644 index 00000000..1a6eb124 --- /dev/null +++ b/src/api-impl/android/content/res/StringBlock.java @@ -0,0 +1,492 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +//import android.graphics.Color; +//import android.text.*; +//import android.text.style.*; +import android.util.Log; +import android.util.SparseArray; +//import android.graphics.Paint; +//import android.graphics.Rect; +//import android.graphics.Typeface; + +import java.util.Arrays; + +/** + * Conveniences for retrieving data out of a compiled string resource. + * + * {@hide} + */ +final class StringBlock { + private static final String TAG = "AssetManager"; + private static final boolean localLOGV = false; + + private final int mNative; + private final boolean mUseSparse; + private final boolean mOwnsNative; + private CharSequence[] mStrings; + private SparseArray mSparseStrings; +// StyleIDs mStyleIDs = null; + + public StringBlock(byte[] data, boolean useSparse) { + mNative = nativeCreate(data, 0, data.length); + mUseSparse = useSparse; + mOwnsNative = true; + if (localLOGV) Log.v(TAG, "Created string block " + this + + ": " + nativeGetSize(mNative)); + } + + public StringBlock(byte[] data, int offset, int size, boolean useSparse) { + mNative = nativeCreate(data, offset, size); + mUseSparse = useSparse; + mOwnsNative = true; + if (localLOGV) Log.v(TAG, "Created string block " + this + + ": " + nativeGetSize(mNative)); + } + + public CharSequence get(int idx) {/* + synchronized (this) { + if (mStrings != null) { + CharSequence res = mStrings[idx]; + if (res != null) { + return res; + } + } else if (mSparseStrings != null) { + CharSequence res = mSparseStrings.get(idx); + if (res != null) { + return res; + } + } else { + final int num = nativeGetSize(mNative); + if (mUseSparse && num > 250) { + mSparseStrings = new SparseArray(); + } else { + mStrings = new CharSequence[num]; + } + } + String str = nativeGetString(mNative, idx); + CharSequence res = str; + int[] style = nativeGetStyle(mNative, idx); + if (localLOGV) Log.v(TAG, "Got string: " + str); + if (localLOGV) Log.v(TAG, "Got styles: " + Arrays.toString(style)); + if (style != null) { + if (mStyleIDs == null) { + mStyleIDs = new StyleIDs(); + } + + // the style array is a flat array of hence + // the magic constant 3. + for (int styleIndex = 0; styleIndex < style.length; styleIndex += 3) { + int styleId = style[styleIndex]; + + if (styleId == mStyleIDs.boldId || styleId == mStyleIDs.italicId + || styleId == mStyleIDs.underlineId || styleId == mStyleIDs.ttId + || styleId == mStyleIDs.bigId || styleId == mStyleIDs.smallId + || styleId == mStyleIDs.subId || styleId == mStyleIDs.supId + || styleId == mStyleIDs.strikeId || styleId == mStyleIDs.listItemId + || styleId == mStyleIDs.marqueeId) { + // id already found skip to next style + continue; + } + + String styleTag = nativeGetString(mNative, styleId); + + if (styleTag.equals("b")) { + mStyleIDs.boldId = styleId; + } else if (styleTag.equals("i")) { + mStyleIDs.italicId = styleId; + } else if (styleTag.equals("u")) { + mStyleIDs.underlineId = styleId; + } else if (styleTag.equals("tt")) { + mStyleIDs.ttId = styleId; + } else if (styleTag.equals("big")) { + mStyleIDs.bigId = styleId; + } else if (styleTag.equals("small")) { + mStyleIDs.smallId = styleId; + } else if (styleTag.equals("sup")) { + mStyleIDs.supId = styleId; + } else if (styleTag.equals("sub")) { + mStyleIDs.subId = styleId; + } else if (styleTag.equals("strike")) { + mStyleIDs.strikeId = styleId; + } else if (styleTag.equals("li")) { + mStyleIDs.listItemId = styleId; + } else if (styleTag.equals("marquee")) { + mStyleIDs.marqueeId = styleId; + } + } + + res = applyStyles(str, style, mStyleIDs); + } + if (mStrings != null) mStrings[idx] = res; + else mSparseStrings.put(idx, res); + return res; + } + */return null;} +/* + protected void finalize() throws Throwable { + try { + super.finalize(); + } finally { + if (mOwnsNative) { + nativeDestroy(mNative); + } + } + } + + static final class StyleIDs { + private int boldId = -1; + private int italicId = -1; + private int underlineId = -1; + private int ttId = -1; + private int bigId = -1; + private int smallId = -1; + private int subId = -1; + private int supId = -1; + private int strikeId = -1; + private int listItemId = -1; + private int marqueeId = -1; + } + + private CharSequence applyStyles(String str, int[] style, StyleIDs ids) { + if (style.length == 0) + return str; + + SpannableString buffer = new SpannableString(str); + int i=0; + while (i < style.length) { + int type = style[i]; + if (localLOGV) Log.v(TAG, "Applying style span id=" + type + + ", start=" + style[i+1] + ", end=" + style[i+2]); + + + if (type == ids.boldId) { + buffer.setSpan(new StyleSpan(Typeface.BOLD), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.italicId) { + buffer.setSpan(new StyleSpan(Typeface.ITALIC), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.underlineId) { + buffer.setSpan(new UnderlineSpan(), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.ttId) { + buffer.setSpan(new TypefaceSpan("monospace"), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.bigId) { + buffer.setSpan(new RelativeSizeSpan(1.25f), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.smallId) { + buffer.setSpan(new RelativeSizeSpan(0.8f), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.subId) { + buffer.setSpan(new SubscriptSpan(), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.supId) { + buffer.setSpan(new SuperscriptSpan(), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.strikeId) { + buffer.setSpan(new StrikethroughSpan(), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else if (type == ids.listItemId) { + addParagraphSpan(buffer, new BulletSpan(10), + style[i+1], style[i+2]+1); + } else if (type == ids.marqueeId) { + buffer.setSpan(TextUtils.TruncateAt.MARQUEE, + style[i+1], style[i+2]+1, + Spannable.SPAN_INCLUSIVE_INCLUSIVE); + } else { + String tag = nativeGetString(mNative, type); + + if (tag.startsWith("font;")) { + String sub; + + sub = subtag(tag, ";height="); + if (sub != null) { + int size = Integer.parseInt(sub); + addParagraphSpan(buffer, new Height(size), + style[i+1], style[i+2]+1); + } + + sub = subtag(tag, ";size="); + if (sub != null) { + int size = Integer.parseInt(sub); + buffer.setSpan(new AbsoluteSizeSpan(size, true), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + sub = subtag(tag, ";fgcolor="); + if (sub != null) { + buffer.setSpan(getColor(sub, true), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + sub = subtag(tag, ";color="); + if (sub != null) { + buffer.setSpan(getColor(sub, true), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + sub = subtag(tag, ";bgcolor="); + if (sub != null) { + buffer.setSpan(getColor(sub, false), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + sub = subtag(tag, ";face="); + if (sub != null) { + buffer.setSpan(new TypefaceSpan(sub), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } else if (tag.startsWith("a;")) { + String sub; + + sub = subtag(tag, ";href="); + if (sub != null) { + buffer.setSpan(new URLSpan(sub), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } else if (tag.startsWith("annotation;")) { + int len = tag.length(); + int next; + + for (int t = tag.indexOf(';'); t < len; t = next) { + int eq = tag.indexOf('=', t); + if (eq < 0) { + break; + } + + next = tag.indexOf(';', eq); + if (next < 0) { + next = len; + } + + String key = tag.substring(t + 1, eq); + String value = tag.substring(eq + 1, next); + + buffer.setSpan(new Annotation(key, value), + style[i+1], style[i+2]+1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + } + } + + i += 3; + } + return new SpannedString(buffer); + } + + /** + * Returns a span for the specified color string representation. + * If the specified string does not represent a color (null, empty, etc.) + * the color black is returned instead. + * + * @param color The color as a string. Can be a resource reference, + * HTML hexadecimal, octal or a name + * @param foreground True if the color will be used as the foreground color, + * false otherwise + * + * @return A CharacterStyle + * + * @see Color#getHtmlColor(String) + * / + private static CharacterStyle getColor(String color, boolean foreground) { + int c = 0xff000000; + + if (!TextUtils.isEmpty(color)) { + if (color.startsWith("@")) { + Resources res = Resources.getSystem(); + String name = color.substring(1); + int colorRes = res.getIdentifier(name, "color", "android"); + if (colorRes != 0) { + ColorStateList colors = res.getColorStateList(colorRes); + if (foreground) { + return new TextAppearanceSpan(null, 0, 0, colors, null); + } else { + c = colors.getDefaultColor(); + } + } + } else { + c = Color.getHtmlColor(color); + } + } + + if (foreground) { + return new ForegroundColorSpan(c); + } else { + return new BackgroundColorSpan(c); + } + } + + /** + * If a translator has messed up the edges of paragraph-level markup, + * fix it to actually cover the entire paragraph that it is attached to + * instead of just whatever range they put it on. + * / + private static void addParagraphSpan(Spannable buffer, Object what, + int start, int end) { + int len = buffer.length(); + + if (start != 0 && start != len && buffer.charAt(start - 1) != '\n') { + for (start--; start > 0; start--) { + if (buffer.charAt(start - 1) == '\n') { + break; + } + } + } + + if (end != 0 && end != len && buffer.charAt(end - 1) != '\n') { + for (end++; end < len; end++) { + if (buffer.charAt(end - 1) == '\n') { + break; + } + } + } + + buffer.setSpan(what, start, end, Spannable.SPAN_PARAGRAPH); + } + + private static String subtag(String full, String attribute) { + int start = full.indexOf(attribute); + if (start < 0) { + return null; + } + + start += attribute.length(); + int end = full.indexOf(';', start); + + if (end < 0) { + return full.substring(start); + } else { + return full.substring(start, end); + } + } + + /** + * Forces the text line to be the specified height, shrinking/stretching + * the ascent if possible, or the descent if shrinking the ascent further + * will make the text unreadable. + * / + private static class Height implements LineHeightSpan.WithDensity { + private int mSize; + private static float sProportion = 0; + + public Height(int size) { + mSize = size; + } + + public void chooseHeight(CharSequence text, int start, int end, + int spanstartv, int v, + Paint.FontMetricsInt fm) { + // Should not get called, at least not by StaticLayout. + chooseHeight(text, start, end, spanstartv, v, fm, null); + } + + public void chooseHeight(CharSequence text, int start, int end, + int spanstartv, int v, + Paint.FontMetricsInt fm, TextPaint paint) { + int size = mSize; + if (paint != null) { + size *= paint.density; + } + + if (fm.bottom - fm.top < size) { + fm.top = fm.bottom - size; + fm.ascent = fm.ascent - size; + } else { + if (sProportion == 0) { + /* + * Calculate what fraction of the nominal ascent + * the height of a capital letter actually is, + * so that we won't reduce the ascent to less than + * that unless we absolutely have to. + * / + + Paint p = new Paint(); + p.setTextSize(100); + Rect r = new Rect(); + p.getTextBounds("ABCDEFG", 0, 7, r); + + sProportion = (r.top) / p.ascent(); + } + + int need = (int) Math.ceil(-fm.top * sProportion); + + if (size - fm.descent >= need) { + /* + * It is safe to shrink the ascent this much. + * / + + fm.top = fm.bottom - size; + fm.ascent = fm.descent - size; + } else if (size >= need) { + /* + * We can't show all the descent, but we can at least + * show all the ascent. + * / + + fm.top = fm.ascent = -need; + fm.bottom = fm.descent = fm.top + size; + } else { + /* + * Show as much of the ascent as we can, and no descent. + * / + + fm.top = fm.ascent = -size; + fm.bottom = fm.descent = 0; + } + } + } + } +*/ + /** + * Create from an existing string block native object. This is + * -extremely- dangerous -- only use it if you absolutely know what you + * are doing! The given native object must exist for the entire lifetime + * of this newly creating StringBlock. + */ + StringBlock(int obj, boolean useSparse) { + mNative = obj; + mUseSparse = useSparse; + mOwnsNative = false; + if (localLOGV) Log.v(TAG, "Created string block " + this + + ": " + nativeGetSize(mNative)); + } + + private static native int nativeCreate(byte[] data, + int offset, + int size); + private static native int nativeGetSize(int obj); + private static native String nativeGetString(int obj, int idx); + private static native int[] nativeGetStyle(int obj, int idx); + private static native void nativeDestroy(int obj); +} diff --git a/src/api-impl/android/content/res/TypedArray.java b/src/api-impl/android/content/res/TypedArray.java new file mode 100644 index 00000000..5cc2a8e8 --- /dev/null +++ b/src/api-impl/android/content/res/TypedArray.java @@ -0,0 +1,742 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import android.content.pm.ActivityInfo; +//import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; + +import com.android.internal.util.XmlUtils; + +import java.util.Arrays; + +/** + * Container for an array of values that were retrieved with + * {@link Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int)} + * or {@link Resources#obtainAttributes}. Be + * sure to call {@link #recycle} when done with them. + * + * The indices used to retrieve values from this structure correspond to + * the positions of the attributes given to obtainStyledAttributes. + */ +public class TypedArray { + private final Resources mResources; + /*package*/ XmlBlock.Parser mXml; + /*package*/ int[] mRsrcs; + /*package*/ int[] mData; + /*package*/ int[] mIndices; + /*package*/ int mLength; + /*package*/ TypedValue mValue = new TypedValue(); + + /** + * Return the number of values in this array. + */ + public int length() { + return mLength; + } + + /** + * Return the number of indices in the array that actually have data. + */ + public int getIndexCount() { + return mIndices[0]; + } + + /** + * Return an index in the array that has data. + * + * @param at The index you would like to returned, ranging from 0 to + * {@link #getIndexCount()}. + * + * @return The index at the given offset, which can be used with + * {@link #getValue} and related APIs. + */ + public int getIndex(int at) { + return mIndices[1+at]; + } + + /** + * Return the Resources object this array was loaded from. + */ + public Resources getResources() { + return mResources; + } + + /** + * Retrieve the styled string value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * + * @return CharSequence holding string data. May be styled. Returns + * null if the attribute is not defined. + */ + public CharSequence getText(int index) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return null; + } else if (type == TypedValue.TYPE_STRING) { + return loadStringValueAt(index); + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to string: " + v); + return v.coerceToString(); + } + Log.w(Resources.TAG, "getString of bad type: 0x" + + Integer.toHexString(type)); + return null; + } + + /** + * Retrieve the string value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * + * @return String holding string data. Any styling information is + * removed. Returns null if the attribute is not defined. + */ + public String getString(int index) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return null; + } else if (type == TypedValue.TYPE_STRING) { + return loadStringValueAt(index).toString(); + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to string: " + v); + CharSequence cs = v.coerceToString(); + return cs != null ? cs.toString() : null; + } + Log.w(Resources.TAG, "getString of bad type: 0x" + + Integer.toHexString(type)); + return null; + } + + /** + * Retrieve the string value for the attribute at index, but + * only if that string comes from an immediate value in an XML file. That + * is, this does not allow references to string resources, string + * attributes, or conversions from other types. As such, this method + * will only return strings for TypedArray objects that come from + * attributes in an XML file. + * + * @param index Index of attribute to retrieve. + * + * @return String holding string data. Any styling information is + * removed. Returns null if the attribute is not defined or is not + * an immediate string value. + */ + public String getNonResourceString(int index) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_STRING) { + final int cookie = data[index+AssetManager.STYLE_ASSET_COOKIE]; + if (cookie < 0) { + return mXml.getPooledString( + data[index+AssetManager.STYLE_DATA]).toString(); + } + } + return null; + } + + /** + * @hide + * Retrieve the string value for the attribute at index that is + * not allowed to change with the given configurations. + * + * @param index Index of attribute to retrieve. + * @param allowedChangingConfigs Bit mask of configurations from + * {@link Configuration}.NATIVE_CONFIG_* that are allowed to change. + * + * @return String holding string data. Any styling information is + * removed. Returns null if the attribute is not defined. + */ + public String getNonConfigurationString(int index, int allowedChangingConfigs) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if ((data[index+AssetManager.STYLE_CHANGING_CONFIGURATIONS]&~allowedChangingConfigs) != 0) { + return null; + } + if (type == TypedValue.TYPE_NULL) { + return null; + } else if (type == TypedValue.TYPE_STRING) { + return loadStringValueAt(index).toString(); + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to string: " + v); + CharSequence cs = v.coerceToString(); + return cs != null ? cs.toString() : null; + } + Log.w(Resources.TAG, "getString of bad type: 0x" + + Integer.toHexString(type)); + return null; + } + + /** + * Retrieve the boolean value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined. + * + * @return Attribute boolean value, or defValue if not defined. + */ + public boolean getBoolean(int index, boolean defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA] != 0; + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to boolean: " + v); + return XmlUtils.convertValueToBoolean( + v.coerceToString(), defValue); + } + Log.w(Resources.TAG, "getBoolean of bad type: 0x" + + Integer.toHexString(type)); + return defValue; + } + + /** + * Retrieve the integer value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined. + * + * @return Attribute int value, or defValue if not defined. + */ + public int getInt(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to int: " + v); + return XmlUtils.convertValueToInt( + v.coerceToString(), defValue); + } + Log.w(Resources.TAG, "getInt of bad type: 0x" + + Integer.toHexString(type)); + return defValue; + } + + /** + * Retrieve the float value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * + * @return Attribute float value, or defValue if not defined.. + */ + public float getFloat(int index, float defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type == TypedValue.TYPE_FLOAT) { + return Float.intBitsToFloat(data[index+AssetManager.STYLE_DATA]); + } else if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } + + TypedValue v = mValue; + if (getValueAt(index, v)) { + Log.w(Resources.TAG, "Converting to float: " + v); + CharSequence str = v.coerceToString(); + if (str != null) { + return Float.parseFloat(str.toString()); + } + } + Log.w(Resources.TAG, "getFloat of bad type: 0x" + + Integer.toHexString(type)); + return defValue; + } + + /** + * Retrieve the color value for the attribute at index. If + * the attribute references a color resource holding a complex + * {@link android.content.res.ColorStateList}, then the default color from + * the set is returned. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute color value, or defValue if not defined. + */ + public int getColor(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } else if (type == TypedValue.TYPE_STRING) { + final TypedValue value = mValue; + if (getValueAt(index, value)) { + ColorStateList csl = mResources.loadColorStateList( + value, value.resourceId); + return csl.getDefaultColor(); + } + return defValue; + } + + throw new UnsupportedOperationException("Can't convert to color: type=0x" + + Integer.toHexString(type)); + } + + /** + * Retrieve the ColorStateList for the attribute at index. + * The value may be either a single solid color or a reference to + * a color or complex {@link android.content.res.ColorStateList} description. + * + * @param index Index of attribute to retrieve. + * + * @return ColorStateList for the attribute, or null if not defined. + */ + public ColorStateList getColorStateList(int index) { + final TypedValue value = mValue; + if (getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, value)) { + return mResources.loadColorStateList(value, value.resourceId); + } + return null; + } + + /** + * Retrieve the integer value for the attribute at index. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute integer value, or defValue if not defined. + */ + public int getInteger(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } + + throw new UnsupportedOperationException("Can't convert to integer: type=0x" + + Integer.toHexString(type)); + } + + /** + * Retrieve a dimensional unit attribute at index. Unit + * conversions are based on the current {@link DisplayMetrics} + * associated with the resources this {@link TypedArray} object + * came from. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute dimension value multiplied by the appropriate + * metric, or defValue if not defined. + * + * @see #getDimensionPixelOffset + * @see #getDimensionPixelSize + */ + public float getDimension(int index, float defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimension( + data[index+AssetManager.STYLE_DATA], mResources.mMetrics); + } + + throw new UnsupportedOperationException("Can't convert to dimension: type=0x" + + Integer.toHexString(type)); + } + + /** + * Retrieve a dimensional unit attribute at index for use + * as an offset in raw pixels. This is the same as + * {@link #getDimension}, except the returned value is converted to + * integer pixels for you. An offset conversion involves simply + * truncating the base value to an integer. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute dimension value multiplied by the appropriate + * metric and truncated to integer pixels, or defValue if not defined. + * + * @see #getDimension + * @see #getDimensionPixelSize + */ + public int getDimensionPixelOffset(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelOffset( + data[index+AssetManager.STYLE_DATA], mResources.mMetrics); + } + + throw new UnsupportedOperationException("Can't convert to dimension: type=0x" + + Integer.toHexString(type)); + } + + /** + * Retrieve a dimensional unit attribute at index for use + * as a size in raw pixels. This is the same as + * {@link #getDimension}, except the returned value is converted to + * integer pixels for use as a size. A size conversion involves + * rounding the base value, and ensuring that a non-zero base value + * is at least one pixel in size. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute dimension value multiplied by the appropriate + * metric and truncated to integer pixels, or defValue if not defined. + * + * @see #getDimension + * @see #getDimensionPixelOffset + */ + public int getDimensionPixelSize(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelSize( + data[index+AssetManager.STYLE_DATA], mResources.mMetrics); + } + + throw new UnsupportedOperationException("Can't convert to dimension: type=0x" + + Integer.toHexString(type)); + } + + /** + * Special version of {@link #getDimensionPixelSize} for retrieving + * {@link android.view.ViewGroup}'s layout_width and layout_height + * attributes. This is only here for performance reasons; applications + * should use {@link #getDimensionPixelSize}. + * + * @param index Index of the attribute to retrieve. + * @param name Textual name of attribute for error reporting. + * + * @return Attribute dimension value multiplied by the appropriate + * metric and truncated to integer pixels. + */ + public int getLayoutDimension(int index, String name) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } else if (type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelSize( + data[index+AssetManager.STYLE_DATA], mResources.mMetrics); + } + + throw new RuntimeException(getPositionDescription() + + ": You must supply a " + name + " attribute."); + } + + /** + * Special version of {@link #getDimensionPixelSize} for retrieving + * {@link android.view.ViewGroup}'s layout_width and layout_height + * attributes. This is only here for performance reasons; applications + * should use {@link #getDimensionPixelSize}. + * + * @param index Index of the attribute to retrieve. + * @param defValue The default value to return if this attribute is not + * default or contains the wrong type of data. + * + * @return Attribute dimension value multiplied by the appropriate + * metric and truncated to integer pixels. + */ + public int getLayoutDimension(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type >= TypedValue.TYPE_FIRST_INT + && type <= TypedValue.TYPE_LAST_INT) { + return data[index+AssetManager.STYLE_DATA]; + } else if (type == TypedValue.TYPE_DIMENSION) { + return TypedValue.complexToDimensionPixelSize( + data[index+AssetManager.STYLE_DATA], mResources.mMetrics); + } + + return defValue; + } + + /** + * Retrieve a fractional unit attribute at index. + * + * @param index Index of attribute to retrieve. + * @param base The base value of this fraction. In other words, a + * standard fraction is multiplied by this value. + * @param pbase The parent base value of this fraction. In other + * words, a parent fraction (nn%p) is multiplied by this + * value. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute fractional value multiplied by the appropriate + * base value, or defValue if not defined. + */ + public float getFraction(int index, int base, int pbase, float defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return defValue; + } else if (type == TypedValue.TYPE_FRACTION) { + return TypedValue.complexToFraction( + data[index+AssetManager.STYLE_DATA], base, pbase); + } + + throw new UnsupportedOperationException("Can't convert to fraction: type=0x" + + Integer.toHexString(type)); + } + + /** + * Retrieve the resource identifier for the attribute at + * index. Note that attribute resource as resolved when + * the overall {@link TypedArray} object is retrieved. As a + * result, this function will return the resource identifier of the + * final resource value that was found, not necessarily the + * original resource that was specified by the attribute. + * + * @param index Index of attribute to retrieve. + * @param defValue Value to return if the attribute is not defined or + * not a resource. + * + * @return Attribute resource identifier, or defValue if not defined. + */ + public int getResourceId(int index, int defValue) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + if (data[index+AssetManager.STYLE_TYPE] != TypedValue.TYPE_NULL) { + final int resid = data[index+AssetManager.STYLE_RESOURCE_ID]; + if (resid != 0) { + return resid; + } + } + return defValue; + } + + /** + * Retrieve the Drawable for the attribute at index. This + * gets the resource ID of the selected attribute, and uses + * {@link Resources#getDrawable Resources.getDrawable} of the owning + * Resources object to retrieve its Drawable. + * + * @param index Index of attribute to retrieve. + * + * @return Drawable for the attribute, or null if not defined. + */ + public Drawable getDrawable(int index) { + final TypedValue value = mValue; + if (getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, value)) { + if (false) { + System.out.println("******************************************************************"); + System.out.println("Got drawable resource: type=" + + value.type + + " str=" + value.string + + " int=0x" + Integer.toHexString(value.data) + + " cookie=" + value.assetCookie); + System.out.println("******************************************************************"); + } + return mResources.loadDrawable(value, value.resourceId); + } + return null; + } + + /** + * Retrieve the CharSequence[] for the attribute at index. + * This gets the resource ID of the selected attribute, and uses + * {@link Resources#getTextArray Resources.getTextArray} of the owning + * Resources object to retrieve its String[]. + * + * @param index Index of attribute to retrieve. + * + * @return CharSequence[] for the attribute, or null if not defined. + */ + public CharSequence[] getTextArray(int index) { + final TypedValue value = mValue; + if (getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, value)) { + if (false) { + System.out.println("******************************************************************"); + System.out.println("Got drawable resource: type=" + + value.type + + " str=" + value.string + + " int=0x" + Integer.toHexString(value.data) + + " cookie=" + value.assetCookie); + System.out.println("******************************************************************"); + } + return mResources.getTextArray(value.resourceId); + } + return null; + } + + /** + * Retrieve the raw TypedValue for the attribute at index. + * + * @param index Index of attribute to retrieve. + * @param outValue TypedValue object in which to place the attribute's + * data. + * + * @return Returns true if the value was retrieved, else false. + */ + public boolean getValue(int index, TypedValue outValue) { + return getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, outValue); + } + + /** + * Determines whether there is an attribute at index. + * + * @param index Index of attribute to retrieve. + * + * @return True if the attribute has a value, false otherwise. + */ + public boolean hasValue(int index) { + index *= AssetManager.STYLE_NUM_ENTRIES; + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + return type != TypedValue.TYPE_NULL; + } + + /** + * Retrieve the raw TypedValue for the attribute at index + * and return a temporary object holding its data. This object is only + * valid until the next call on to {@link TypedArray}. + * + * @param index Index of attribute to retrieve. + * + * @return Returns a TypedValue object if the attribute is defined, + * containing its data; otherwise returns null. (You will not + * receive a TypedValue whose type is TYPE_NULL.) + */ + public TypedValue peekValue(int index) { + final TypedValue value = mValue; + if (getValueAt(index*AssetManager.STYLE_NUM_ENTRIES, value)) { + return value; + } + return null; + } + + /** + * Returns a message about the parser state suitable for printing error messages. + */ + public String getPositionDescription() { + return mXml != null ? mXml.getPositionDescription() : ""; + } + + /** + * Give back a previously retrieved array, for later re-use. + */ + public void recycle() { + synchronized (mResources.mAccessLock) { + TypedArray cached = mResources.mCachedStyledAttributes; + if (cached == null || cached.mData.length < mData.length) { + mXml = null; + mResources.mCachedStyledAttributes = this; + } + } + } + + private boolean getValueAt(int index, TypedValue outValue) { + final int[] data = mData; + final int type = data[index+AssetManager.STYLE_TYPE]; + if (type == TypedValue.TYPE_NULL) { + return false; + } + outValue.type = type; + outValue.data = data[index+AssetManager.STYLE_DATA]; + outValue.assetCookie = data[index+AssetManager.STYLE_ASSET_COOKIE]; + outValue.resourceId = data[index+AssetManager.STYLE_RESOURCE_ID]; + outValue.changingConfigurations = data[index+AssetManager.STYLE_CHANGING_CONFIGURATIONS]; + outValue.density = data[index+AssetManager.STYLE_DENSITY]; + outValue.string = (type == TypedValue.TYPE_STRING) ? loadStringValueAt(index) : null; + return true; + } + + private CharSequence loadStringValueAt(int index) { + final int[] data = mData; + final int cookie = data[index+AssetManager.STYLE_ASSET_COOKIE]; + if (cookie < 0) { + if (mXml != null) { + return mXml.getPooledString( + data[index+AssetManager.STYLE_DATA]); + } + return null; + } + //System.out.println("Getting pooled from: " + v); + return mResources.mAssets.getPooledString( + cookie, data[index+AssetManager.STYLE_DATA]); + } + + // FIXME + public/*package*/ TypedArray(Resources resources, int[] data, int[] indices, int len) { + mResources = resources; + mData = data; + mIndices = indices; + mLength = len; + } + + public String toString() { + return Arrays.toString(mData); + } +} diff --git a/src/api-impl/android/content/res/XmlBlock.java b/src/api-impl/android/content/res/XmlBlock.java new file mode 100644 index 00000000..bea65291 --- /dev/null +++ b/src/api-impl/android/content/res/XmlBlock.java @@ -0,0 +1,516 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import android.util.TypedValue; + +import com.android.internal.util.XmlUtils; + +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; + +/** + * Wrapper around a compiled XML file. + * + * {@hide} + */ +final class XmlBlock { + private static final boolean DEBUG=false; + + public XmlBlock(byte[] data) { + mAssets = null; + mNative = nativeCreate(data, 0, data.length); + mStrings = new StringBlock(nativeGetStringBlock(mNative), false); + } + + public XmlBlock(byte[] data, int offset, int size) { + mAssets = null; + mNative = nativeCreate(data, offset, size); + mStrings = new StringBlock(nativeGetStringBlock(mNative), false); + } + + public void close() { + synchronized (this) { + if (mOpen) { + mOpen = false; + decOpenCountLocked(); + } + } + } + + private void decOpenCountLocked() { + mOpenCount--; + if (mOpenCount == 0) { + nativeDestroy(mNative); + if (mAssets != null) { + mAssets.xmlBlockGone(hashCode()); + } + } + } + + public XmlResourceParser newParser() { + synchronized (this) { + if (mNative != 0) { + return new Parser(nativeCreateParseState(mNative), this); + } + return null; + } + } + + /*package*/ final class Parser implements XmlResourceParser { + Parser(int parseState, XmlBlock block) { + mParseState = parseState; + mBlock = block; + block.mOpenCount++; + } + + public void setFeature(String name, boolean state) throws XmlPullParserException { + if (FEATURE_PROCESS_NAMESPACES.equals(name) && state) { + return; + } + if (FEATURE_REPORT_NAMESPACE_ATTRIBUTES.equals(name) && state) { + return; + } + throw new XmlPullParserException("Unsupported feature: " + name); + } + public boolean getFeature(String name) { + if (FEATURE_PROCESS_NAMESPACES.equals(name)) { + return true; + } + if (FEATURE_REPORT_NAMESPACE_ATTRIBUTES.equals(name)) { + return true; + } + return false; + } + public void setProperty(String name, Object value) throws XmlPullParserException { + throw new XmlPullParserException("setProperty() not supported"); + } + public Object getProperty(String name) { + return null; + } + public void setInput(Reader in) throws XmlPullParserException { + throw new XmlPullParserException("setInput() not supported"); + } + public void setInput(InputStream inputStream, String inputEncoding) throws XmlPullParserException { + throw new XmlPullParserException("setInput() not supported"); + } + public void defineEntityReplacementText(String entityName, String replacementText) throws XmlPullParserException { + throw new XmlPullParserException("defineEntityReplacementText() not supported"); + } + public String getNamespacePrefix(int pos) throws XmlPullParserException { + throw new XmlPullParserException("getNamespacePrefix() not supported"); + } + public String getInputEncoding() { + return null; + } + public String getNamespace(String prefix) { + throw new RuntimeException("getNamespace() not supported"); + } + public int getNamespaceCount(int depth) throws XmlPullParserException { + throw new XmlPullParserException("getNamespaceCount() not supported"); + } + public String getPositionDescription() { + return "Binary XML file line #" + getLineNumber(); + } + public String getNamespaceUri(int pos) throws XmlPullParserException { + throw new XmlPullParserException("getNamespaceUri() not supported"); + } + public int getColumnNumber() { + return -1; + } + public int getDepth() { + return mDepth; + } + public String getText() { + int id = nativeGetText(mParseState); + return id >= 0 ? mStrings.get(id).toString() : null; + } + public int getLineNumber() { + return nativeGetLineNumber(mParseState); + } + public int getEventType() throws XmlPullParserException { + return mEventType; + } + public boolean isWhitespace() throws XmlPullParserException { + // whitespace was stripped by aapt. + return false; + } + public String getPrefix() { + throw new RuntimeException("getPrefix not supported"); + } + public char[] getTextCharacters(int[] holderForStartAndLength) { + String txt = getText(); + char[] chars = null; + if (txt != null) { + holderForStartAndLength[0] = 0; + holderForStartAndLength[1] = txt.length(); + chars = new char[txt.length()]; + txt.getChars(0, txt.length(), chars, 0); + } + return chars; + } + public String getNamespace() { + int id = nativeGetNamespace(mParseState); + return id >= 0 ? mStrings.get(id).toString() : ""; + } + public String getName() { + int id = nativeGetName(mParseState); + return id >= 0 ? mStrings.get(id).toString() : null; + } + public String getAttributeNamespace(int index) { + int id = nativeGetAttributeNamespace(mParseState, index); + if (DEBUG) System.out.println("getAttributeNamespace of " + index + " = " + id); + if (id >= 0) return mStrings.get(id).toString(); + else if (id == -1) return ""; + throw new IndexOutOfBoundsException(String.valueOf(index)); + } + public String getAttributeName(int index) { + int id = nativeGetAttributeName(mParseState, index); + if (DEBUG) System.out.println("getAttributeName of " + index + " = " + id); + if (id >= 0) return mStrings.get(id).toString(); + throw new IndexOutOfBoundsException(String.valueOf(index)); + } + public String getAttributePrefix(int index) { + throw new RuntimeException("getAttributePrefix not supported"); + } + public boolean isEmptyElementTag() throws XmlPullParserException { + // XXX Need to detect this. + return false; + } + public int getAttributeCount() { + return mEventType == START_TAG ? nativeGetAttributeCount(mParseState) : -1; + } + public String getAttributeValue(int index) { + int id = nativeGetAttributeStringValue(mParseState, index); + if (DEBUG) System.out.println("getAttributeValue of " + index + " = " + id); + if (id >= 0) return mStrings.get(id).toString(); + + // May be some other type... check and try to convert if so. + int t = nativeGetAttributeDataType(mParseState, index); + if (t == TypedValue.TYPE_NULL) { + throw new IndexOutOfBoundsException(String.valueOf(index)); + } + + int v = nativeGetAttributeData(mParseState, index); + return TypedValue.coerceToString(t, v); + } + public String getAttributeType(int index) { + return "CDATA"; + } + public boolean isAttributeDefault(int index) { + return false; + } + public int nextToken() throws XmlPullParserException,IOException { + return next(); + } + public String getAttributeValue(String namespace, String name) { + int idx = nativeGetAttributeIndex(mParseState, namespace, name); + if (idx >= 0) { + if (DEBUG) System.out.println("getAttributeName of " + + namespace + ":" + name + " index = " + idx); + if (DEBUG) System.out.println( + "Namespace=" + getAttributeNamespace(idx) + + "Name=" + getAttributeName(idx) + + ", Value=" + getAttributeValue(idx)); + return getAttributeValue(idx); + } + return null; + } + public int next() throws XmlPullParserException,IOException { + if (!mStarted) { + mStarted = true; + return START_DOCUMENT; + } + if (mParseState == 0) { + return END_DOCUMENT; + } + int ev = nativeNext(mParseState); + if (mDecNextDepth) { + mDepth--; + mDecNextDepth = false; + } + switch (ev) { + case START_TAG: + mDepth++; + break; + case END_TAG: + mDecNextDepth = true; + break; + } + mEventType = ev; + if (ev == END_DOCUMENT) { + // Automatically close the parse when we reach the end of + // a document, since the standard XmlPullParser interface + // doesn't have such an API so most clients will leave us + // dangling. + close(); + } + return ev; + } + public void require(int type, String namespace, String name) throws XmlPullParserException,IOException { + if (type != getEventType() + || (namespace != null && !namespace.equals( getNamespace () ) ) + || (name != null && !name.equals( getName() ) ) ) + throw new XmlPullParserException( "expected "+ TYPES[ type ]+getPositionDescription()); + } + public String nextText() throws XmlPullParserException,IOException { + if(getEventType() != START_TAG) { + throw new XmlPullParserException( + getPositionDescription() + + ": parser must be on START_TAG to read next text", this, null); + } + int eventType = next(); + if(eventType == TEXT) { + String result = getText(); + eventType = next(); + if(eventType != END_TAG) { + throw new XmlPullParserException( + getPositionDescription() + + ": event TEXT it must be immediately followed by END_TAG", this, null); + } + return result; + } else if(eventType == END_TAG) { + return ""; + } else { + throw new XmlPullParserException( + getPositionDescription() + + ": parser must be on START_TAG or TEXT to read text", this, null); + } + } + public int nextTag() throws XmlPullParserException,IOException { + int eventType = next(); + if(eventType == TEXT && isWhitespace()) { // skip whitespace + eventType = next(); + } + if (eventType != START_TAG && eventType != END_TAG) { + throw new XmlPullParserException( + getPositionDescription() + + ": expected start or end tag", this, null); + } + return eventType; + } + + public int getAttributeNameResource(int index) { + return nativeGetAttributeResource(mParseState, index); + } + + public int getAttributeListValue(String namespace, String attribute, + String[] options, int defaultValue) { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeListValue(idx, options, defaultValue); + } + return defaultValue; + } + public boolean getAttributeBooleanValue(String namespace, String attribute, + boolean defaultValue) { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeBooleanValue(idx, defaultValue); + } + return defaultValue; + } + public int getAttributeResourceValue(String namespace, String attribute, + int defaultValue) { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeResourceValue(idx, defaultValue); + } + return defaultValue; + } + public int getAttributeIntValue(String namespace, String attribute, + int defaultValue) { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeIntValue(idx, defaultValue); + } + return defaultValue; + } + public int getAttributeUnsignedIntValue(String namespace, String attribute, + int defaultValue) + { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeUnsignedIntValue(idx, defaultValue); + } + return defaultValue; + } + public float getAttributeFloatValue(String namespace, String attribute, + float defaultValue) { + int idx = nativeGetAttributeIndex(mParseState, namespace, attribute); + if (idx >= 0) { + return getAttributeFloatValue(idx, defaultValue); + } + return defaultValue; + } + + public int getAttributeListValue(int idx, + String[] options, int defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + int v = nativeGetAttributeData(mParseState, idx); + if (t == TypedValue.TYPE_STRING) { + return XmlUtils.convertValueToList( + mStrings.get(v), options, defaultValue); + } + return v; + } + public boolean getAttributeBooleanValue(int idx, + boolean defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + // Note: don't attempt to convert any other types, because + // we want to count on appt doing the conversion for us. + if (t >= TypedValue.TYPE_FIRST_INT && + t <= TypedValue.TYPE_LAST_INT) { + return nativeGetAttributeData(mParseState, idx) != 0; + } + return defaultValue; + } + public int getAttributeResourceValue(int idx, int defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + // Note: don't attempt to convert any other types, because + // we want to count on appt doing the conversion for us. + if (t == TypedValue.TYPE_REFERENCE) { + return nativeGetAttributeData(mParseState, idx); + } + return defaultValue; + } + public int getAttributeIntValue(int idx, int defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + // Note: don't attempt to convert any other types, because + // we want to count on appt doing the conversion for us. + if (t >= TypedValue.TYPE_FIRST_INT && + t <= TypedValue.TYPE_LAST_INT) { + return nativeGetAttributeData(mParseState, idx); + } + return defaultValue; + } + public int getAttributeUnsignedIntValue(int idx, int defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + // Note: don't attempt to convert any other types, because + // we want to count on appt doing the conversion for us. + if (t >= TypedValue.TYPE_FIRST_INT && + t <= TypedValue.TYPE_LAST_INT) { + return nativeGetAttributeData(mParseState, idx); + } + return defaultValue; + } + public float getAttributeFloatValue(int idx, float defaultValue) { + int t = nativeGetAttributeDataType(mParseState, idx); + // Note: don't attempt to convert any other types, because + // we want to count on appt doing the conversion for us. + if (t == TypedValue.TYPE_FLOAT) { + return Float.intBitsToFloat( + nativeGetAttributeData(mParseState, idx)); + } + throw new RuntimeException("not a float!"); + } + + public String getIdAttribute() { + int id = nativeGetIdAttribute(mParseState); + return id >= 0 ? mStrings.get(id).toString() : null; + } + public String getClassAttribute() { + int id = nativeGetClassAttribute(mParseState); + return id >= 0 ? mStrings.get(id).toString() : null; + } + + public int getIdAttributeResourceValue(int defaultValue) { + //todo: create and use native method + return getAttributeResourceValue(null, "id", defaultValue); + } + + public int getStyleAttribute() { + return nativeGetStyleAttribute(mParseState); + } + + public void close() { + synchronized (mBlock) { + if (mParseState != 0) { + nativeDestroyParseState(mParseState); + mParseState = 0; + mBlock.decOpenCountLocked(); + } + } + } + + protected void finalize() throws Throwable { + close(); + } + + /*package*/ final CharSequence getPooledString(int id) { + return mStrings.get(id); + } + + /*package*/ int mParseState; + private final XmlBlock mBlock; + private boolean mStarted = false; + private boolean mDecNextDepth = false; + private int mDepth = 0; + private int mEventType = START_DOCUMENT; + } + + protected void finalize() throws Throwable { + close(); + } + + /** + * Create from an existing xml block native object. This is + * -extremely- dangerous -- only use it if you absolutely know what you + * are doing! The given native object must exist for the entire lifetime + * of this newly creating XmlBlock. + */ + XmlBlock(AssetManager assets, int xmlBlock) { + mAssets = assets; + mNative = xmlBlock; + mStrings = new StringBlock(nativeGetStringBlock(xmlBlock), false); + } + + private final AssetManager mAssets; + private final int mNative; + /*package*/ final StringBlock mStrings; + private boolean mOpen = true; + private int mOpenCount = 1; + + private static final native int nativeCreate(byte[] data, + int offset, + int size); + private static final native int nativeGetStringBlock(int obj); + + private static final native int nativeCreateParseState(int obj); + /*package*/ static final native int nativeNext(int state); + private static final native int nativeGetNamespace(int state); + /*package*/ static final native int nativeGetName(int state); + private static final native int nativeGetText(int state); + private static final native int nativeGetLineNumber(int state); + private static final native int nativeGetAttributeCount(int state); + private static final native int nativeGetAttributeNamespace(int state, int idx); + private static final native int nativeGetAttributeName(int state, int idx); + private static final native int nativeGetAttributeResource(int state, int idx); + private static final native int nativeGetAttributeDataType(int state, int idx); + private static final native int nativeGetAttributeData(int state, int idx); + private static final native int nativeGetAttributeStringValue(int state, int idx); + private static final native int nativeGetIdAttribute(int state); + private static final native int nativeGetClassAttribute(int state); + private static final native int nativeGetStyleAttribute(int state); + private static final native int nativeGetAttributeIndex(int state, String namespace, String name); + private static final native void nativeDestroyParseState(int state); + + private static final native void nativeDestroy(int obj); +} diff --git a/src/api-impl/android/content/res/XmlResourceParser.java b/src/api-impl/android/content/res/XmlResourceParser.java new file mode 100644 index 00000000..5af49d4d --- /dev/null +++ b/src/api-impl/android/content/res/XmlResourceParser.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.res; + +import org.xmlpull.v1.XmlPullParser; + +import android.util.AttributeSet; + +/** + * The XML parsing interface returned for an XML resource. This is a standard + * XmlPullParser interface, as well as an extended AttributeSet interface and + * an additional close() method on this interface for the client to indicate + * when it is done reading the resource. + */ +public interface XmlResourceParser extends XmlPullParser, AttributeSet, AutoCloseable { + /** + * Close this interface to the resource. Calls on the interface are no + * longer value after this call. + */ + public void close(); +} + diff --git a/src/api-impl/android/database/Cursor.java b/src/api-impl/android/database/Cursor.java new file mode 100644 index 00000000..3f9285c3 --- /dev/null +++ b/src/api-impl/android/database/Cursor.java @@ -0,0 +1,476 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database; + +//import android.content.ContentResolver; +//import android.net.Uri; +import android.os.Bundle; + +import java.io.Closeable; + +class Uri {} +class ContentResolver {} + +class CharArrayBuffer {} +class ContentObserver {} +class DataSetObserver {} + +/** + * This interface provides random read-write access to the result set returned + * by a database query. + *

+ * Cursor implementations are not required to be synchronized so code using a Cursor from multiple + * threads should perform its own synchronization when using the Cursor. + *

+ * Implementations should subclass {@link AbstractCursor}. + *

+ */ +public interface Cursor extends Closeable { + /* + * Values returned by {@link #getType(int)}. + * These should be consistent with the corresponding types defined in CursorWindow.h + */ + /** Value returned by {@link #getType(int)} if the specified column is null */ + static final int FIELD_TYPE_NULL = 0; + + /** Value returned by {@link #getType(int)} if the specified column type is integer */ + static final int FIELD_TYPE_INTEGER = 1; + + /** Value returned by {@link #getType(int)} if the specified column type is float */ + static final int FIELD_TYPE_FLOAT = 2; + + /** Value returned by {@link #getType(int)} if the specified column type is string */ + static final int FIELD_TYPE_STRING = 3; + + /** Value returned by {@link #getType(int)} if the specified column type is blob */ + static final int FIELD_TYPE_BLOB = 4; + + /** + * Returns the numbers of rows in the cursor. + * + * @return the number of rows in the cursor. + */ + int getCount(); + + /** + * Returns the current position of the cursor in the row set. + * The value is zero-based. When the row set is first returned the cursor + * will be at positon -1, which is before the first row. After the + * last row is returned another call to next() will leave the cursor past + * the last entry, at a position of count(). + * + * @return the current cursor position. + */ +// int getPosition(); + + /** + * Move the cursor by a relative amount, forward or backward, from the + * current position. Positive offsets move forwards, negative offsets move + * backwards. If the final position is outside of the bounds of the result + * set then the resultant position will be pinned to -1 or count() depending + * on whether the value is off the front or end of the set, respectively. + * + *

This method will return true if the requested destination was + * reachable, otherwise, it returns false. For example, if the cursor is at + * currently on the second entry in the result set and move(-5) is called, + * the position will be pinned at -1, and false will be returned. + * + * @param offset the offset to be applied from the current position. + * @return whether the requested move fully succeeded. + */ +// boolean move(int offset); + + /** + * Move the cursor to an absolute position. The valid + * range of values is -1 <= position <= count. + * + *

This method will return true if the request destination was reachable, + * otherwise, it returns false. + * + * @param position the zero-based position to move to. + * @return whether the requested move fully succeeded. + */ +// boolean moveToPosition(int position); + + /** + * Move the cursor to the first row. + * + *

This method will return false if the cursor is empty. + * + * @return whether the move succeeded. + */ + boolean moveToFirst(); + + /** + * Move the cursor to the last row. + * + *

This method will return false if the cursor is empty. + * + * @return whether the move succeeded. + */ +// boolean moveToLast(); + + /** + * Move the cursor to the next row. + * + *

This method will return false if the cursor is already past the + * last entry in the result set. + * + * @return whether the move succeeded. + */ + boolean moveToNext(); + + /** + * Move the cursor to the previous row. + * + *

This method will return false if the cursor is already before the + * first entry in the result set. + * + * @return whether the move succeeded. + */ +// boolean moveToPrevious(); + + /** + * Returns whether the cursor is pointing to the first row. + * + * @return whether the cursor is pointing at the first entry. + */ +// boolean isFirst(); + + /** + * Returns whether the cursor is pointing to the last row. + * + * @return whether the cursor is pointing at the last entry. + */ +// boolean isLast(); + + /** + * Returns whether the cursor is pointing to the position before the first + * row. + * + * @return whether the cursor is before the first result. + */ +// boolean isBeforeFirst(); + + /** + * Returns whether the cursor is pointing to the position after the last + * row. + * + * @return whether the cursor is after the last result. + */ + boolean isAfterLast(); + + /** + * Returns the zero-based index for the given column name, or -1 if the column doesn't exist. + * If you expect the column to exist use {@link #getColumnIndexOrThrow(String)} instead, which + * will make the error more clear. + * + * @param columnName the name of the target column. + * @return the zero-based column index for the given column name, or -1 if + * the column name does not exist. + * @see #getColumnIndexOrThrow(String) + */ + int getColumnIndex(String columnName); + + /** + * Returns the zero-based index for the given column name, or throws + * {@link IllegalArgumentException} if the column doesn't exist. If you're not sure if + * a column will exist or not use {@link #getColumnIndex(String)} and check for -1, which + * is more efficient than catching the exceptions. + * + * @param columnName the name of the target column. + * @return the zero-based column index for the given column name + * @see #getColumnIndex(String) + * @throws IllegalArgumentException if the column does not exist + */ +// int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException; + + /** + * Returns the column name at the given zero-based column index. + * + * @param columnIndex the zero-based index of the target column. + * @return the column name for the given column index. + */ +// String getColumnName(int columnIndex); + + /** + * Returns a string array holding the names of all of the columns in the + * result set in the order in which they were listed in the result. + * + * @return the names of the columns returned in this query. + */ +// String[] getColumnNames(); + + /** + * Return total number of columns + * @return number of columns + */ +// int getColumnCount(); + + /** + * Returns the value of the requested column as a byte array. + * + *

The result and whether this method throws an exception when the + * column value is null or the column type is not a blob type is + * implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a byte array. + */ +// byte[] getBlob(int columnIndex); + + /** + * Returns the value of the requested column as a String. + * + *

The result and whether this method throws an exception when the + * column value is null or the column type is not a string type is + * implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a String. + */ + String getString(int columnIndex); + + /** + * Retrieves the requested column text and stores it in the buffer provided. + * If the buffer size is not sufficient, a new char buffer will be allocated + * and assigned to CharArrayBuffer.data + * @param columnIndex the zero-based index of the target column. + * if the target column is null, return buffer + * @param buffer the buffer to copy the text into. + */ +// void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer); + + /** + * Returns the value of the requested column as a short. + * + *

The result and whether this method throws an exception when the + * column value is null, the column type is not an integral type, or the + * integer value is outside the range [Short.MIN_VALUE, + * Short.MAX_VALUE] is implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a short. + */ +// short getShort(int columnIndex); + + /** + * Returns the value of the requested column as an int. + * + *

The result and whether this method throws an exception when the + * column value is null, the column type is not an integral type, or the + * integer value is outside the range [Integer.MIN_VALUE, + * Integer.MAX_VALUE] is implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as an int. + */ + int getInt(int columnIndex); + + /** + * Returns the value of the requested column as a long. + * + *

The result and whether this method throws an exception when the + * column value is null, the column type is not an integral type, or the + * integer value is outside the range [Long.MIN_VALUE, + * Long.MAX_VALUE] is implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a long. + */ + long getLong(int columnIndex); + + /** + * Returns the value of the requested column as a float. + * + *

The result and whether this method throws an exception when the + * column value is null, the column type is not a floating-point type, or the + * floating-point value is not representable as a float value is + * implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a float. + */ +// float getFloat(int columnIndex); + + /** + * Returns the value of the requested column as a double. + * + *

The result and whether this method throws an exception when the + * column value is null, the column type is not a floating-point type, or the + * floating-point value is not representable as a double value is + * implementation-defined. + * + * @param columnIndex the zero-based index of the target column. + * @return the value of that column as a double. + */ +// double getDouble(int columnIndex); + + /** + * Returns data type of the given column's value. + * The preferred type of the column is returned but the data may be converted to other types + * as documented in the get-type methods such as {@link #getInt(int)}, {@link #getFloat(int)} + * etc. + *

+ * Returned column types are + *

    + *
  • {@link #FIELD_TYPE_NULL}
  • + *
  • {@link #FIELD_TYPE_INTEGER}
  • + *
  • {@link #FIELD_TYPE_FLOAT}
  • + *
  • {@link #FIELD_TYPE_STRING}
  • + *
  • {@link #FIELD_TYPE_BLOB}
  • + *
+ *

+ * + * @param columnIndex the zero-based index of the target column. + * @return column value type + */ +// int getType(int columnIndex); + + /** + * Returns true if the value in the indicated column is null. + * + * @param columnIndex the zero-based index of the target column. + * @return whether the column value is null. + */ +// boolean isNull(int columnIndex); + + /** + * Deactivates the Cursor, making all calls on it fail until {@link #requery} is called. + * Inactive Cursors use fewer resources than active Cursors. + * Calling {@link #requery} will make the cursor active again. + * @deprecated Since {@link #requery()} is deprecated, so too is this. + */ + void deactivate(); + + /** + * Performs the query that created the cursor again, refreshing its + * contents. This may be done at any time, including after a call to {@link + * #deactivate}. + * + * Since this method could execute a query on the database and potentially take + * a while, it could cause ANR if it is called on Main (UI) thread. + * A warning is printed if this method is being executed on Main thread. + * + * @return true if the requery succeeded, false if not, in which case the + * cursor becomes invalid. + * @deprecated Don't use this. Just request a new cursor, so you can do this + * asynchronously and update your list view once the new cursor comes back. + */ + @Deprecated + boolean requery(); + + /** + * Closes the Cursor, releasing all of its resources and making it completely invalid. + * Unlike {@link #deactivate()} a call to {@link #requery()} will not make the Cursor valid + * again. + */ + void close(); + + /** + * return true if the cursor is closed + * @return true if the cursor is closed. + */ +// boolean isClosed(); + + /** + * Register an observer that is called when changes happen to the content backing this cursor. + * Typically the data set won't change until {@link #requery()} is called. + * + * @param observer the object that gets notified when the content backing the cursor changes. + * @see #unregisterContentObserver(ContentObserver) + */ +// void registerContentObserver(ContentObserver observer); + + /** + * Unregister an observer that has previously been registered with this + * cursor via {@link #registerContentObserver}. + * + * @param observer the object to unregister. + * @see #registerContentObserver(ContentObserver) + */ +// void unregisterContentObserver(ContentObserver observer); + + /** + * Register an observer that is called when changes happen to the contents + * of the this cursors data set, for example, when the data set is changed via + * {@link #requery()}, {@link #deactivate()}, or {@link #close()}. + * + * @param observer the object that gets notified when the cursors data set changes. + * @see #unregisterDataSetObserver(DataSetObserver) + */ +// void registerDataSetObserver(DataSetObserver observer); + + /** + * Unregister an observer that has previously been registered with this + * cursor via {@link #registerContentObserver}. + * + * @param observer the object to unregister. + * @see #registerDataSetObserver(DataSetObserver) + */ +// void unregisterDataSetObserver(DataSetObserver observer); + + /** + * Register to watch a content URI for changes. This can be the URI of a specific data row (for + * example, "content://my_provider_type/23"), or a a generic URI for a content type. + * + * @param cr The content resolver from the caller's context. The listener attached to + * this resolver will be notified. + * @param uri The content URI to watch. + */ +// void setNotificationUri(ContentResolver cr, Uri uri); + + /** + * Return the URI at which notifications of changes in this Cursor's data + * will be delivered, as previously set by {@link #setNotificationUri}. + * @return Returns a URI that can be used with + * {@link ContentResolver#registerContentObserver(android.net.Uri, boolean, ContentObserver) + * ContentResolver.registerContentObserver} to find out about changes to this Cursor's + * data. May be null if no notification URI has been set. + */ +// Uri getNotificationUri(); + + /** + * onMove() will only be called across processes if this method returns true. + * @return whether all cursor movement should result in a call to onMove(). + */ +// boolean getWantsAllOnMoveCalls(); + + /** + * Returns a bundle of extra values. This is an optional way for cursors to provide out-of-band + * metadata to their users. One use of this is for reporting on the progress of network requests + * that are required to fetch data for the cursor. + * + *

These values may only change when requery is called. + * @return cursor-defined values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY} if there + * are no values. Never null. + */ +// Bundle getExtras(); + + /** + * This is an out-of-band way for the the user of a cursor to communicate with the cursor. The + * structure of each bundle is entirely defined by the cursor. + * + *

One use of this is to tell a cursor that it should retry its network request after it + * reported an error. + * @param extras extra values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY}. + * Never null. + * @return extra values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY}. + * Never null. + */ +// Bundle respond(Bundle extras); +} diff --git a/src/api-impl/android/database/sqlite/DatabaseErrorHandler.java b/src/api-impl/android/database/sqlite/DatabaseErrorHandler.java new file mode 100644 index 00000000..1869f81c --- /dev/null +++ b/src/api-impl/android/database/sqlite/DatabaseErrorHandler.java @@ -0,0 +1,5 @@ +package android.database.sqlite; + +class DatabaseErrorHandler { + +} diff --git a/src/api-impl/android/database/sqlite/SQLiteCursor.java b/src/api-impl/android/database/sqlite/SQLiteCursor.java new file mode 100644 index 00000000..9515fcaf --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteCursor.java @@ -0,0 +1,307 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database.sqlite; + +//import android.database.AbstractWindowedCursor; +//import android.database.CursorWindow; +//import android.database.DatabaseUtils; +//import android.os.StrictMode; +import android.util.Log; + +import java.util.HashMap; +import java.util.Map; + +import android.database.Cursor; +/** + * A Cursor implementation that exposes results from a query on a + * {@link SQLiteDatabase}. + * + * SQLiteCursor is not internally synchronized so code using a SQLiteCursor from multiple + * threads should perform its own synchronization when using the SQLiteCursor. + */ +public class SQLiteCursor /*extends AbstractWindowedCursor*/ implements Cursor { + static final String TAG = "SQLiteCursor"; + static final int NO_COUNT = -1; + + /** The name of the table to edit */ + private final String mEditTable = "ZZZ"; + + /** The names of the columns in the rows */ + private final String[] mColumns = {"AAA"}; + + /** The query object for the cursor */ + private final SQLiteQuery mQuery = null; + + /** The compiled query this cursor came from */ + private final SQLiteCursorDriver mDriver = null; + + /** The number of rows in the cursor */ + private int mCount = NO_COUNT; + + /** The number of rows that can fit in the cursor window, 0 if unknown */ + private int mCursorWindowCapacity = -1; + + /** A mapping of column names to column indices, to speed up lookups */ + private Map mColumnNameMap = null; + + /** Used to find out where a cursor was allocated in case it never got released. */ + private final Throwable mStackTrace = null; + + /** + * Execute a query and provide access to its result set through a Cursor + * interface. For a query such as: {@code SELECT name, birth, phone FROM + * myTable WHERE ... LIMIT 1,20 ORDER BY...} the column names (name, birth, + * phone) would be in the projection argument and everything from + * {@code FROM} onward would be in the params argument. + * + * @param db a reference to a Database object that is already constructed + * and opened. This param is not used any longer + * @param editTable the name of the table used for this query + * @param query the rest of the query terms + * cursor is finalized + * @deprecated use {@link #SQLiteCursor(SQLiteCursorDriver, String, SQLiteQuery)} instead + */ + @Deprecated + public SQLiteCursor(SQLiteDatabase db, SQLiteCursorDriver driver, + String editTable, SQLiteQuery query) { + this(driver, editTable, query); + } + + /** + * Execute a query and provide access to its result set through a Cursor + * interface. For a query such as: {@code SELECT name, birth, phone FROM + * myTable WHERE ... LIMIT 1,20 ORDER BY...} the column names (name, birth, + * phone) would be in the projection argument and everything from + * {@code FROM} onward would be in the params argument. + * + * @param editTable the name of the table used for this query + * @param query the {@link SQLiteQuery} object associated with this cursor object. + */ + public SQLiteCursor(SQLiteCursorDriver driver, String editTable, SQLiteQuery query) {/* + if (query == null) { + throw new IllegalArgumentException("query object cannot be null"); + } + if (StrictMode.vmSqliteObjectLeaksEnabled()) { + mStackTrace = new DatabaseObjectNotClosedException().fillInStackTrace(); + } else { + mStackTrace = null; + } + mDriver = driver; + mEditTable = editTable; + mColumnNameMap = null; + mQuery = query; + + mColumns = query.getColumnNames(); + mRowIdColumnIndex = DatabaseUtils.findRowIdColumnIndex(mColumns); + */} + + /** + * Get the database that this cursor is associated with. + * @return the SQLiteDatabase that this cursor is associated with. + */ + public SQLiteDatabase getDatabase() { + return mQuery.getDatabase(); + } + +// @Override + public boolean onMove(int oldPosition, int newPosition) {/* + // Make sure the row at newPosition is present in the window + if (mWindow == null || newPosition < mWindow.getStartPosition() || + newPosition >= (mWindow.getStartPosition() + mWindow.getNumRows())) { + fillWindow(newPosition); + } + + */return true; + } + +// @Override + public int getCount() {/* + if (mCount == NO_COUNT) { + fillWindow(0); + } + return mCount;*/ + return 1; + } + + private void fillWindow(int requiredPos) {/* + clearOrCreateWindow(getDatabase().getPath()); + + try { + if (mCount == NO_COUNT) { + int startPos = DatabaseUtils.cursorPickFillWindowStartPosition(requiredPos, 0); + mCount = mQuery.fillWindow(mWindow, startPos, requiredPos, true); + mCursorWindowCapacity = mWindow.getNumRows(); + if (Log.isLoggable(TAG, Log.DEBUG)) { + Log.d(TAG, "received count(*) from native_fill_window: " + mCount); + } + } else { + int startPos = DatabaseUtils.cursorPickFillWindowStartPosition(requiredPos, + mCursorWindowCapacity); + mQuery.fillWindow(mWindow, startPos, requiredPos, false); + } + } catch (RuntimeException ex) { + // Close the cursor window if the query failed and therefore will + // not produce any results. This helps to avoid accidentally leaking + // the cursor window if the client does not correctly handle exceptions + // and fails to close the cursor. + closeWindow(); + throw ex; + } + */} + +// @Override + public int getColumnIndex(String columnName) {/* + // Create mColumnNameMap on demand + if (mColumnNameMap == null) { + String[] columns = mColumns; + int columnCount = columns.length; + HashMap map = new HashMap(columnCount, 1); + for (int i = 0; i < columnCount; i++) { + map.put(columns[i], i); + } + mColumnNameMap = map; + } + + // Hack according to bug 903852 + final int periodIndex = columnName.lastIndexOf('.'); + if (periodIndex != -1) { + Exception e = new Exception(); + Log.e(TAG, "requesting column name with table name -- " + columnName, e); + columnName = columnName.substring(periodIndex + 1); + } + + Integer i = mColumnNameMap.get(columnName); + if (i != null) { + return i.intValue(); + } else { + return -1; + }*/ + return -1; + } + +// @Override + public String[] getColumnNames() { + return mColumns; + } + +// @Override + public void deactivate() { +// super.deactivate(); + mDriver.cursorDeactivated(); + } + +// @Override + public void close() {/* + super.close(); + synchronized (this) { + mQuery.close(); + mDriver.cursorClosed(); + } + */} + +// @Override + public boolean requery() {/* + if (isClosed()) { + return false; + } + + synchronized (this) { + if (!mQuery.getDatabase().isOpen()) { + return false; + } + + if (mWindow != null) { + mWindow.clear(); + } + mPos = -1; + mCount = NO_COUNT; + + mDriver.cursorRequeried(this); + } + + try { + return super.requery(); + } catch (IllegalStateException e) { + // for backwards compatibility, just return false + Log.w(TAG, "requery() failed " + e.getMessage(), e); + return false; + } + */return false;} + +// @Override + public void setWindow(CursorWindow window) {/* + super.setWindow(window); + mCount = NO_COUNT; + */} + + /** + * Changes the selection arguments. The new values take effect after a call to requery(). + */ + public void setSelectionArguments(String[] selectionArgs) { + mDriver.setBindArguments(selectionArgs); + } + + /** + * Release the native resources, if they haven't been released yet. + */ +// @Override + protected void finalize() {/* + try { + // if the cursor hasn't been closed yet, close it first + if (mWindow != null) { + if (mStackTrace != null) { + String sql = mQuery.getSql(); + int len = sql.length(); + StrictMode.onSqliteObjectLeaked( + "Finalizing a Cursor that has not been deactivated or closed. " + + "database = " + mQuery.getDatabase().getLabel() + + ", table = " + mEditTable + + ", query = " + sql.substring(0, (len > 1000) ? 1000 : len), + mStackTrace); + } + close(); + } + } finally { + super.finalize(); + } + */} +// --- + public boolean moveToFirst() { + return false; + } + + public boolean moveToNext () { + return false; + } + + public boolean isAfterLast() { + return true; + } + + public long getLong(int columnIndex) { + return 1; + } + + public String getString(int columnIndex) { + return "BBB"; + } + + public int getInt(int columnIndex) { + return 1; + } + +} diff --git a/src/api-impl/android/database/sqlite/SQLiteCursorDriver.java b/src/api-impl/android/database/sqlite/SQLiteCursorDriver.java new file mode 100644 index 00000000..ad2cdd22 --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteCursorDriver.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database.sqlite; + +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase.CursorFactory; + +/** + * A driver for SQLiteCursors that is used to create them and gets notified + * by the cursors it creates on significant events in their lifetimes. + */ +public interface SQLiteCursorDriver { + /** + * Executes the query returning a Cursor over the result set. + * + * @param factory The CursorFactory to use when creating the Cursors, or + * null if standard SQLiteCursors should be returned. + * @return a Cursor over the result set + */ + Cursor query(CursorFactory factory, String[] bindArgs); + + /** + * Called by a SQLiteCursor when it is released. + */ + void cursorDeactivated(); + + /** + * Called by a SQLiteCursor when it is requeried. + */ + void cursorRequeried(Cursor cursor); + + /** + * Called by a SQLiteCursor when it it closed to destroy this object as well. + */ + void cursorClosed(); + + /** + * Set new bind arguments. These will take effect in cursorRequeried(). + * @param bindArgs the new arguments + */ + public void setBindArguments(String[] bindArgs); +} diff --git a/src/api-impl/android/database/sqlite/SQLiteDatabase.java b/src/api-impl/android/database/sqlite/SQLiteDatabase.java new file mode 100644 index 00000000..675cec9c --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteDatabase.java @@ -0,0 +1,287 @@ +package android.database.sqlite; + +import android.content.ContentValues; +import android.os.CancellationSignal; +import android.database.Cursor; + +public final class SQLiteDatabase /*extends SQLiteClosable*/ { +// --- constants from android source + /** + * When a constraint violation occurs, an immediate ROLLBACK occurs, + * thus ending the current transaction, and the command aborts with a + * return code of SQLITE_CONSTRAINT. If no transaction is active + * (other than the implied transaction that is created on every command) + * then this algorithm works the same as ABORT. + */ + public static final int CONFLICT_ROLLBACK = 1; + + /** + * When a constraint violation occurs,no ROLLBACK is executed + * so changes from prior commands within the same transaction + * are preserved. This is the default behavior. + */ + public static final int CONFLICT_ABORT = 2; + + /** + * When a constraint violation occurs, the command aborts with a return + * code SQLITE_CONSTRAINT. But any changes to the database that + * the command made prior to encountering the constraint violation + * are preserved and are not backed out. + */ + public static final int CONFLICT_FAIL = 3; + + /** + * When a constraint violation occurs, the one row that contains + * the constraint violation is not inserted or changed. + * But the command continues executing normally. Other rows before and + * after the row that contained the constraint violation continue to be + * inserted or updated normally. No error is returned. + */ + public static final int CONFLICT_IGNORE = 4; + + /** + * When a UNIQUE constraint violation occurs, the pre-existing rows that + * are causing the constraint violation are removed prior to inserting + * or updating the current row. Thus the insert or update always occurs. + * The command continues executing normally. No error is returned. + * If a NOT NULL constraint violation occurs, the NULL value is replaced + * by the default value for that column. If the column has no default + * value, then the ABORT algorithm is used. If a CHECK constraint + * violation occurs then the IGNORE algorithm is used. When this conflict + * resolution strategy deletes rows in order to satisfy a constraint, + * it does not invoke delete triggers on those rows. + * This behavior might change in a future release. + */ + public static final int CONFLICT_REPLACE = 5; + + /** + * Use the following when no conflict action is specified. + */ + public static final int CONFLICT_NONE = 0; + + private static final String[] CONFLICT_VALUES = new String[] + {"", " OR ROLLBACK ", " OR ABORT ", " OR FAIL ", " OR IGNORE ", " OR REPLACE "}; + + /** + * Maximum Length Of A LIKE Or GLOB Pattern + * The pattern matching algorithm used in the default LIKE and GLOB implementation + * of SQLite can exhibit O(N^2) performance (where N is the number of characters in + * the pattern) for certain pathological cases. To avoid denial-of-service attacks + * the length of the LIKE or GLOB pattern is limited to SQLITE_MAX_LIKE_PATTERN_LENGTH bytes. + * The default value of this limit is 50000. A modern workstation can evaluate + * even a pathological LIKE or GLOB pattern of 50000 bytes relatively quickly. + * The denial of service problem only comes into play when the pattern length gets + * into millions of bytes. Nevertheless, since most useful LIKE or GLOB patterns + * are at most a few dozen bytes in length, paranoid application developers may + * want to reduce this parameter to something in the range of a few hundred + * if they know that external users are able to generate arbitrary patterns. + */ + public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH = 50000; + + /** + * Open flag: Flag for {@link #openDatabase} to open the database for reading and writing. + * If the disk is full, this may fail even before you actually write anything. + * + * {@more} Note that the value of this flag is 0, so it is the default. + */ + public static final int OPEN_READWRITE = 0x00000000; // update native code if changing + + /** + * Open flag: Flag for {@link #openDatabase} to open the database for reading only. + * This is the only reliable way to open a database if the disk may be full. + */ + public static final int OPEN_READONLY = 0x00000001; // update native code if changing + + private static final int OPEN_READ_MASK = 0x00000001; // update native code if changing + + /** + * Open flag: Flag for {@link #openDatabase} to open the database without support for + * localized collators. + * + * {@more} This causes the collator LOCALIZED not to be created. + * You must be consistent when using this flag to use the setting the database was + * created with. If this is set, {@link #setLocale} will do nothing. + */ + public static final int NO_LOCALIZED_COLLATORS = 0x00000010; // update native code if changing + + /** + * Open flag: Flag for {@link #openDatabase} to create the database file if it does not + * already exist. + */ + public static final int CREATE_IF_NECESSARY = 0x10000000; // update native code if changing + + /** + * Open flag: Flag for {@link #openDatabase} to open the database file with + * write-ahead logging enabled by default. Using this flag is more efficient + * than calling {@link #enableWriteAheadLogging}. + * + * Write-ahead logging cannot be used with read-only databases so the value of + * this flag is ignored if the database is opened read-only. + * + * @see #enableWriteAheadLogging + */ + public static final int ENABLE_WRITE_AHEAD_LOGGING = 0x20000000; + + /** + * Absolute max value that can be set by {@link #setMaxSqlCacheSize(int)}. + * + * Each prepared-statement is between 1K - 6K, depending on the complexity of the + * SQL statement & schema. A large SQL cache may use a significant amount of memory. + */ + public static final int MAX_SQL_CACHE_SIZE = 100; +// --- + + private SQLiteDatabase(String path, int openFlags, CursorFactory cursorFactory, DatabaseErrorHandler errorHandler) { +/* mCursorFactory = cursorFactory; + mErrorHandler = errorHandler != null ? errorHandler : new DefaultDatabaseErrorHandler(); + mConfigurationLocked = new SQLiteDatabaseConfiguration(path, openFlags);*/ + } + + public static SQLiteDatabase create(CursorFactory factory) { + // This is a magic string with special meaning for SQLite. + return openDatabase(":memory:", factory, CREATE_IF_NECESSARY); + } + + private void open() {/* + try { + try { + openInner(); + } catch (SQLiteDatabaseCorruptException ex) { + onCorruption(); + openInner(); + } + } catch (SQLiteException ex) { + Log.e(TAG, "Failed to open database '" + getLabel() + "'.", ex); + close(); + throw ex; + } + */} + + public long insert(String table, String nullColumnHack, ContentValues values) { +/* try { + return insertWithOnConflict(table, nullColumnHack, values, CONFLICT_NONE); + } catch (SQLException e) { + Log.e(TAG, "Error inserting " + values, e); + return -1; + }*/ + return -1; + } + +// --- + public Cursor query(boolean distinct, String table, String[] columns, + String selection, String[] selectionArgs, String groupBy, + String having, String orderBy, String limit) { + return queryWithFactory(null, distinct, table, columns, selection, selectionArgs, + groupBy, having, orderBy, limit, null); + } + + public Cursor query(boolean distinct, String table, String[] columns, + String selection, String[] selectionArgs, String groupBy, + String having, String orderBy, String limit, CancellationSignal cancellationSignal) { + return queryWithFactory(null, distinct, table, columns, selection, selectionArgs, + groupBy, having, orderBy, limit, cancellationSignal); + } + + public Cursor query(String table, String[] columns, String selection, + String[] selectionArgs, String groupBy, String having, + String orderBy) { + + return query(false, table, columns, selection, selectionArgs, groupBy, + having, orderBy, null /* limit */); + } + + public Cursor query(String table, String[] columns, String selection, + String[] selectionArgs, String groupBy, String having, + String orderBy, String limit) { + + return query(false, table, columns, selection, selectionArgs, groupBy, + having, orderBy, limit); + } +// --- + public Cursor queryWithFactory(CursorFactory cursorFactory, + boolean distinct, String table, String[] columns, + String selection, String[] selectionArgs, String groupBy, + String having, String orderBy, String limit) { + return queryWithFactory(cursorFactory, distinct, table, columns, selection, + selectionArgs, groupBy, having, orderBy, limit, null); + } + + public Cursor queryWithFactory(CursorFactory cursorFactory, + boolean distinct, String table, String[] columns, + String selection, String[] selectionArgs, String groupBy, + String having, String orderBy, String limit, CancellationSignal cancellationSignal) {/* + acquireReference(); + try { + String sql = SQLiteQueryBuilder.buildQueryString( + distinct, table, columns, selection, groupBy, having, orderBy, limit); + + return rawQueryWithFactory(cursorFactory, sql, selectionArgs, + findEditTable(table), cancellationSignal); + } finally { + releaseReference(); + }*/ + return rawQueryWithFactory(cursorFactory, "XXX", selectionArgs, table, cancellationSignal); + } +// --- + public Cursor rawQueryWithFactory( + CursorFactory cursorFactory, String sql, String[] selectionArgs, + String editTable) { + return rawQueryWithFactory(cursorFactory, sql, selectionArgs, editTable, null); + } + + public Cursor rawQueryWithFactory( + CursorFactory cursorFactory, String sql, String[] selectionArgs, + String editTable, CancellationSignal cancellationSignal) { +// acquireReference(); + try { + SQLiteCursorDriver driver = new SQLiteDirectCursorDriver(this, sql, editTable, + cancellationSignal); + return driver.query(cursorFactory/* != null ? cursorFactory : mCursorFactory*/, + selectionArgs); + } finally { +// releaseReference(); + } + } +// --- + public static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags) { + return openDatabase(path, factory, flags, null); + } + + public static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags, DatabaseErrorHandler errorHandler) { + SQLiteDatabase db = new SQLiteDatabase(path, flags, factory, errorHandler); + db.open(); + return db; + } +// --- + + public interface CursorFactory { + /** + * See {@link SQLiteCursor#SQLiteCursor(SQLiteCursorDriver, String, SQLiteQuery)}. + */ + public Cursor newCursor(SQLiteDatabase db, + SQLiteCursorDriver masterQuery, String editTable, + SQLiteQuery query); + } +// --- + + public int update(String table, ContentValues values, String whereClause, String[] whereArgs) { + return -1; + } + +// --- + + public int delete(String table, String whereClause, String[] whereArgs) { + return 0; + } + + // TODO: this belongs in SQLiteClosable + public void close() {} + + public Cursor rawQuery(String sql, String[] selectionArgs, CancellationSignal cancellationSignal) { + return null; + } + + public Cursor rawQuery(String sql, String[] selectionArgs) { + return null; + } +} diff --git a/src/api-impl/android/database/sqlite/SQLiteDirectCursorDriver.java b/src/api-impl/android/database/sqlite/SQLiteDirectCursorDriver.java new file mode 100644 index 00000000..c6516a13 --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteDirectCursorDriver.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database.sqlite; + +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.os.CancellationSignal; + +/** + * A cursor driver that uses the given query directly. + * + * @hide + */ +public final class SQLiteDirectCursorDriver implements SQLiteCursorDriver { + private final SQLiteDatabase mDatabase; + private final String mEditTable; + private final String mSql; + private final CancellationSignal mCancellationSignal; + private SQLiteQuery mQuery; + + public SQLiteDirectCursorDriver(SQLiteDatabase db, String sql, String editTable, + CancellationSignal cancellationSignal) { + mDatabase = db; + mEditTable = editTable; + mSql = sql; + mCancellationSignal = cancellationSignal; + } + + public Cursor query(CursorFactory factory, String[] selectionArgs) { + final SQLiteQuery query = new SQLiteQuery(mDatabase, mSql, mCancellationSignal); + final Cursor cursor; + try { + query.bindAllArgsAsStrings(selectionArgs); + + if (factory == null) { + cursor = new SQLiteCursor(this, mEditTable, query); + } else { + cursor = factory.newCursor(mDatabase, this, mEditTable, query); + } + } catch (RuntimeException ex) { +// query.close(); + throw ex; + } + + mQuery = query; + return cursor; + } + + public void cursorClosed() { + // Do nothing + } + + public void setBindArguments(String[] bindArgs) { + mQuery.bindAllArgsAsStrings(bindArgs); + } + + public void cursorDeactivated() { + // Do nothing + } + + public void cursorRequeried(Cursor cursor) { + // Do nothing + } + + @Override + public String toString() { + return "SQLiteDirectCursorDriver: " + mSql; + } +} diff --git a/src/api-impl/android/database/sqlite/SQLiteException.java b/src/api-impl/android/database/sqlite/SQLiteException.java new file mode 100644 index 00000000..674629b8 --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteException.java @@ -0,0 +1,5 @@ +package android.database.sqlite; + +public class SQLiteException extends Exception { + +} diff --git a/src/api-impl/android/database/sqlite/SQLiteOpenHelper.java b/src/api-impl/android/database/sqlite/SQLiteOpenHelper.java new file mode 100644 index 00000000..90882062 --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteOpenHelper.java @@ -0,0 +1,121 @@ +package android.database.sqlite; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase.CursorFactory; + +public abstract class SQLiteOpenHelper { + public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) { + this(context, name, factory, version, null); + } + + public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { + if (version < 1) throw new IllegalArgumentException("Version must be >= 1, was " + version); + +/* mContext = context; + mName = name; + mFactory = factory; + mNewVersion = version; + mErrorHandler = errorHandler;*/ + } + + public void close () {} + + public SQLiteDatabase getWritableDatabase() { + synchronized (this) { + return getDatabaseLocked(true); + } + } + + private SQLiteDatabase getDatabaseLocked(boolean writable) { + return SQLiteDatabase.create(null); // return an empty database, surely the app can handle that + /* + if (mDatabase != null) { + if (!mDatabase.isOpen()) { + // Darn! The user closed the database by calling mDatabase.close(). + mDatabase = null; + } else if (!writable || !mDatabase.isReadOnly()) { + // The database is already open for business. + return mDatabase; + } + } + + if (mIsInitializing) { + throw new IllegalStateException("getDatabase called recursively"); + } + + SQLiteDatabase db = mDatabase; + try { + mIsInitializing = true; + + if (db != null) { + if (writable && db.isReadOnly()) { + db.reopenReadWrite(); + } + } else if (mName == null) { + db = SQLiteDatabase.create(null); + } else { + try { + if (DEBUG_STRICT_READONLY && !writable) { + final String path = mContext.getDatabasePath(mName).getPath(); + db = SQLiteDatabase.openDatabase(path, mFactory, + SQLiteDatabase.OPEN_READONLY, mErrorHandler); + } else { + db = mContext.openOrCreateDatabase(mName, mEnableWriteAheadLogging ? + Context.MODE_ENABLE_WRITE_AHEAD_LOGGING : 0, + mFactory, mErrorHandler); + } + } catch (SQLiteException ex) { + if (writable) { + throw ex; + } + Log.e(TAG, "Couldn't open " + mName + + " for writing (will try read-only):", ex); + final String path = mContext.getDatabasePath(mName).getPath(); + db = SQLiteDatabase.openDatabase(path, mFactory, + SQLiteDatabase.OPEN_READONLY, mErrorHandler); + } + } + + onConfigure(db); + + final int version = db.getVersion(); + if (version != mNewVersion) { + if (db.isReadOnly()) { + throw new SQLiteException("Can't upgrade read-only database from version " + + db.getVersion() + " to " + mNewVersion + ": " + mName); + } + + db.beginTransaction(); + try { + if (version == 0) { + onCreate(db); + } else { + if (version > mNewVersion) { + onDowngrade(db, version, mNewVersion); + } else { + onUpgrade(db, version, mNewVersion); + } + } + db.setVersion(mNewVersion); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + } + + onOpen(db); + + if (db.isReadOnly()) { + Log.w(TAG, "Opened " + mName + " in read-only mode"); + } + + mDatabase = db; + return db; + } finally { + mIsInitializing = false; + if (db != null && db != mDatabase) { + db.close(); + } + } + */} +} diff --git a/src/api-impl/android/database/sqlite/SQLiteProgram.java b/src/api-impl/android/database/sqlite/SQLiteProgram.java new file mode 100644 index 00000000..3de89e6e --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteProgram.java @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database.sqlite; + +//import android.database.DatabaseUtils; +import android.os.CancellationSignal; + +import java.util.Arrays; + +class SQLiteSession {} + +/** + * A base class for compiled SQLite programs. + *

+ * This class is not thread-safe. + *

+ */ +public abstract class SQLiteProgram /*extends SQLiteClosable*/ { + private static final String[] EMPTY_STRING_ARRAY = new String[0]; + + private final SQLiteDatabase mDatabase; + private final String mSql; + private final boolean mReadOnly = false; + private final String[] mColumnNames = {"YYY"}; + private final int mNumParameters = -1; + private final Object[] mBindArgs = {}; + + SQLiteProgram(SQLiteDatabase db, String sql, Object[] bindArgs, + CancellationSignal cancellationSignalForPrepare) { + mDatabase = db; + mSql = sql.trim(); +/* + int n = DatabaseUtils.getSqlStatementType(mSql); + switch (n) { + case DatabaseUtils.STATEMENT_BEGIN: + case DatabaseUtils.STATEMENT_COMMIT: + case DatabaseUtils.STATEMENT_ABORT: + mReadOnly = false; + mColumnNames = EMPTY_STRING_ARRAY; + mNumParameters = 0; + break; + + default: + boolean assumeReadOnly = (n == DatabaseUtils.STATEMENT_SELECT); + SQLiteStatementInfo info = new SQLiteStatementInfo(); + db.getThreadSession().prepare(mSql, + db.getThreadDefaultConnectionFlags(assumeReadOnly), + cancellationSignalForPrepare, info); + mReadOnly = info.readOnly; + mColumnNames = info.columnNames; + mNumParameters = info.numParameters; + break; + } + + if (bindArgs != null && bindArgs.length > mNumParameters) { + throw new IllegalArgumentException("Too many bind arguments. " + + bindArgs.length + " arguments were provided but the statement needs " + + mNumParameters + " arguments."); + } + + if (mNumParameters != 0) { + mBindArgs = new Object[mNumParameters]; + if (bindArgs != null) { + System.arraycopy(bindArgs, 0, mBindArgs, 0, bindArgs.length); + } + } else { + mBindArgs = null; + } + */} + + final SQLiteDatabase getDatabase() { + return mDatabase; + } + + final String getSql() { + return mSql; + } + + final Object[] getBindArgs() { + return mBindArgs; + } + + final String[] getColumnNames() { + return mColumnNames; + } + + /** @hide */ + protected final SQLiteSession getSession() { + return null;/*mDatabase.getThreadSession();*/ + } + + /** @hide */ + protected final int getConnectionFlags() { + return -1;/*mDatabase.getThreadDefaultConnectionFlags(mReadOnly);*/ + } + + /** @hide */ + protected final void onCorruption() { +// mDatabase.onCorruption(); + } + + /** + * Unimplemented. + * @deprecated This method is deprecated and must not be used. + */ + @Deprecated + public final int getUniqueId() { + return -1; + } + + /** + * Bind a NULL value to this statement. The value remains bound until + * {@link #clearBindings} is called. + * + * @param index The 1-based index to the parameter to bind null to + */ + public void bindNull(int index) { + bind(index, null); + } + + /** + * Bind a long value to this statement. The value remains bound until + * {@link #clearBindings} is called. + *addToBindArgs + * @param index The 1-based index to the parameter to bind + * @param value The value to bind + */ + public void bindLong(int index, long value) { + bind(index, value); + } + + /** + * Bind a double value to this statement. The value remains bound until + * {@link #clearBindings} is called. + * + * @param index The 1-based index to the parameter to bind + * @param value The value to bind + */ + public void bindDouble(int index, double value) { + bind(index, value); + } + + /** + * Bind a String value to this statement. The value remains bound until + * {@link #clearBindings} is called. + * + * @param index The 1-based index to the parameter to bind + * @param value The value to bind, must not be null + */ + public void bindString(int index, String value) { + if (value == null) { + throw new IllegalArgumentException("the bind value at index " + index + " is null"); + } + bind(index, value); + } + + /** + * Bind a byte array value to this statement. The value remains bound until + * {@link #clearBindings} is called. + * + * @param index The 1-based index to the parameter to bind + * @param value The value to bind, must not be null + */ + public void bindBlob(int index, byte[] value) { + if (value == null) { + throw new IllegalArgumentException("the bind value at index " + index + " is null"); + } + bind(index, value); + } + + /** + * Clears all existing bindings. Unset bindings are treated as NULL. + */ + public void clearBindings() { + if (mBindArgs != null) { + Arrays.fill(mBindArgs, null); + } + } + + /** + * Given an array of String bindArgs, this method binds all of them in one single call. + * + * @param bindArgs the String array of bind args, none of which must be null. + */ + public void bindAllArgsAsStrings(String[] bindArgs) { + if (bindArgs != null) { + for (int i = bindArgs.length; i != 0; i--) { + bindString(i, bindArgs[i - 1]); + } + } + } + +// @Override + protected void onAllReferencesReleased() { + clearBindings(); + } + + private void bind(int index, Object value) { + if (index < 1 || index > mNumParameters) { + throw new IllegalArgumentException("Cannot bind argument at index " + + index + " because the index is out of range. " + + "The statement has " + mNumParameters + " parameters."); + } + mBindArgs[index - 1] = value; + } +} diff --git a/src/api-impl/android/database/sqlite/SQLiteQuery.java b/src/api-impl/android/database/sqlite/SQLiteQuery.java new file mode 100644 index 00000000..e8794065 --- /dev/null +++ b/src/api-impl/android/database/sqlite/SQLiteQuery.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.database.sqlite; + +//import android.database.CursorWindow; +import android.os.CancellationSignal; +//import android.os.OperationCanceledException; +import android.util.Log; + +class CursorWindow {} + +/** + * Represents a query that reads the resulting rows into a {@link SQLiteQuery}. + * This class is used by {@link SQLiteCursor} and isn't useful itself. + *

+ * This class is not thread-safe. + *

+ */ +public final class SQLiteQuery extends SQLiteProgram { + private static final String TAG = "SQLiteQuery"; + + private final CancellationSignal mCancellationSignal; + + SQLiteQuery(SQLiteDatabase db, String query, CancellationSignal cancellationSignal) { + super(db, query, null, cancellationSignal); + + mCancellationSignal = cancellationSignal; + } + + /** + * Reads rows into a buffer. + * + * @param window The window to fill into + * @param startPos The start position for filling the window. + * @param requiredPos The position of a row that MUST be in the window. + * If it won't fit, then the query should discard part of what it filled. + * @param countAllRows True to count all rows that the query would + * return regardless of whether they fit in the window. + * @return Number of rows that were enumerated. Might not be all rows + * unless countAllRows is true. + * + * @throws SQLiteException if an error occurs. + * @throws OperationCanceledException if the operation was canceled. + */ + int fillWindow(CursorWindow window, int startPos, int requiredPos, boolean countAllRows) {/* + acquireReference(); + try { + window.acquireReference(); + try { + int numRows = getSession().executeForCursorWindow(getSql(), getBindArgs(), + window, startPos, requiredPos, countAllRows, getConnectionFlags(), + mCancellationSignal); + return numRows; + } catch (SQLiteDatabaseCorruptException ex) { + onCorruption(); + throw ex; + } catch (SQLiteException ex) { + Log.e(TAG, "exception: " + ex.getMessage() + "; query: " + getSql()); + throw ex; + } finally { + window.releaseReference(); + } + } finally { + releaseReference(); + } + */return -1;} + + @Override + public String toString() { + return "SQLiteQuery: "/* + getSql()*/; + } +} diff --git a/src/api-impl/android/graphics/Bitmap.java b/src/api-impl/android/graphics/Bitmap.java new file mode 100644 index 00000000..f43ca376 --- /dev/null +++ b/src/api-impl/android/graphics/Bitmap.java @@ -0,0 +1,1617 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.graphics; + +import android.util.DisplayMetrics; + +import java.io.OutputStream; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.nio.ShortBuffer; + +public final class Bitmap { + /** + * Indicates that the bitmap was created for an unknown pixel density. + * + * @see Bitmap#getDensity() + * @see Bitmap#setDensity(int) + */ + public static final int DENSITY_NONE = 0; + + /** + * Note: mNativeBitmap is used by FaceDetector_jni.cpp + * Don't change/rename without updating FaceDetector_jni.cpp + * + * @hide + */ + public final int mNativeBitmap = 0; + + /** + * Backing buffer for the Bitmap. + * Made public for quick access from drawing methods -- do NOT modify + * from outside this class + * + * @hide + */ + @SuppressWarnings("UnusedDeclaration") // native code only + public byte[] mBuffer; + + @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) // Keep to finalize native resources + private final BitmapFinalizer mFinalizer; + + private final boolean mIsMutable; + + /** + * Represents whether the Bitmap's content is expected to be pre-multiplied. + * Note that isPremultiplied() does not directly return this value, because + * isPremultiplied() may never return true for a 565 Bitmap. + * + * setPremultiplied() does directly set the value so that setConfig() and + * setPremultiplied() aren't order dependent, despite being setters. + */ + private boolean mIsPremultiplied; + + private byte[] mNinePatchChunk; // may be null + private int[] mLayoutBounds; // may be null + private int mWidth = 10; + private int mHeight = 10; + private boolean mRecycled; + + // Package-scoped for fast access. + int mDensity = getDefaultDensity(); + + private static volatile Matrix sScaleMatrix; + + private static volatile int sDefaultDensity = -1; + + /** + * For backwards compatibility, allows the app layer to change the default + * density when running old apps. + * @hide + */ + public static void setDefaultDensity(int density) { + sDefaultDensity = density; + } + + static int getDefaultDensity() { + if (sDefaultDensity >= 0) { + return sDefaultDensity; + } + //noinspection deprecation + sDefaultDensity = DisplayMetrics.DENSITY_DEVICE; + return sDefaultDensity; + } + + public long pixbuf = 0; + + Bitmap() { + mIsMutable = false; + mIsPremultiplied = false; + mBuffer = null; + + mFinalizer = null; + + mNinePatchChunk = null; + mLayoutBounds = null; + } // FIXME + + Bitmap(String path) { + pixbuf = native_bitmap_from_path("data/"+path); + + mIsMutable = false; + mIsPremultiplied = false; + mBuffer = null; + mFinalizer = null; + mNinePatchChunk = null; + mLayoutBounds = null; + } + + private native long native_bitmap_from_path(CharSequence path); + + /** + * Private constructor that must received an already allocated native bitmap + * int (pointer). + */ + @SuppressWarnings({"UnusedDeclaration"}) // called from JNI + Bitmap(int nativeBitmap, byte[] buffer, int width, int height, int density, + boolean isMutable, boolean isPremultiplied, + byte[] ninePatchChunk, int[] layoutBounds) {/* + if (nativeBitmap == 0) { + throw new RuntimeException("internal error: native bitmap is 0"); + } + + mWidth = width; + mHeight = height; + mIsMutable = isMutable; + mIsPremultiplied = isPremultiplied; + mBuffer = buffer; + // we delete this in our finalizer + mNativeBitmap = nativeBitmap; + mFinalizer = new BitmapFinalizer(nativeBitmap); + + mNinePatchChunk = ninePatchChunk; + mLayoutBounds = layoutBounds; + if (density >= 0) { + mDensity = density; + }*/ + mIsMutable = false; + mIsPremultiplied = false; + mBuffer = null; + mFinalizer = null; + mNinePatchChunk = null; + mLayoutBounds = null; + } + + /** + * Native bitmap has been reconfigured, so set premult and cached + * width/height values + */ + @SuppressWarnings({"UnusedDeclaration"}) // called from JNI + void reinit(int width, int height, boolean isPremultiplied) { + mWidth = width; + mHeight = height; + mIsPremultiplied = isPremultiplied; + } + + /** + *

Returns the density for this bitmap.

+ * + *

The default density is the same density as the current display, + * unless the current application does not support different screen + * densities in which case it is + * {@link android.util.DisplayMetrics#DENSITY_DEFAULT}. Note that + * compatibility mode is determined by the application that was initially + * loaded into a process -- applications that share the same process should + * all have the same compatibility, or ensure they explicitly set the + * density of their bitmaps appropriately.

+ * + * @return A scaling factor of the default density or {@link #DENSITY_NONE} + * if the scaling factor is unknown. + * + * @see #setDensity(int) + * @see android.util.DisplayMetrics#DENSITY_DEFAULT + * @see android.util.DisplayMetrics#densityDpi + * @see #DENSITY_NONE + */ + public int getDensity() { + return mDensity; + } + + /** + *

Specifies the density for this bitmap. When the bitmap is + * drawn to a Canvas that also has a density, it will be scaled + * appropriately.

+ * + * @param density The density scaling factor to use with this bitmap or + * {@link #DENSITY_NONE} if the density is unknown. + * + * @see #getDensity() + * @see android.util.DisplayMetrics#DENSITY_DEFAULT + * @see android.util.DisplayMetrics#densityDpi + * @see #DENSITY_NONE + */ + public void setDensity(int density) { + mDensity = density; + } + + /** + *

Modifies the bitmap to have a specified width, height, and {@link + * Config}, without affecting the underlying allocation backing the bitmap. + * Bitmap pixel data is not re-initialized for the new configuration.

+ * + *

This method can be used to avoid allocating a new bitmap, instead + * reusing an existing bitmap's allocation for a new configuration of equal + * or lesser size. If the Bitmap's allocation isn't large enough to support + * the new configuration, an IllegalArgumentException will be thrown and the + * bitmap will not be modified.

+ * + *

The result of {@link #getByteCount()} will reflect the new configuration, + * while {@link #getAllocationByteCount()} will reflect that of the initial + * configuration.

+ * + *

WARNING: This method should NOT be called on a bitmap currently used + * by the view system. It does not make guarantees about how the underlying + * pixel buffer is remapped to the new config, just that the allocation is + * reused. Additionally, the view system does not account for bitmap + * properties being modifying during use, e.g. while attached to + * drawables.

+ * + * @see #setWidth(int) + * @see #setHeight(int) + * @see #setConfig(Config) + */ + public void reconfigure(int width, int height, Config config) { + checkRecycled("Can't call reconfigure() on a recycled bitmap"); + if (width <= 0 || height <= 0) { + throw new IllegalArgumentException("width and height must be > 0"); + } + if (!isMutable()) { + throw new IllegalStateException("only mutable bitmaps may be reconfigured"); + } + if (mBuffer == null) { + throw new IllegalStateException("native-backed bitmaps may not be reconfigured"); + } + + nativeReconfigure(mNativeBitmap, width, height, config.nativeInt, mBuffer.length); + mWidth = width; + mHeight = height; + } + + /** + *

Convenience method for calling {@link #reconfigure(int, int, Config)} + * with the current height and config.

+ * + *

WARNING: this method should not be used on bitmaps currently used by + * the view system, see {@link #reconfigure(int, int, Config)} for more + * details.

+ * + * @see #reconfigure(int, int, Config) + * @see #setHeight(int) + * @see #setConfig(Config) + */ + public void setWidth(int width) { + reconfigure(width, getHeight(), getConfig()); + } + + /** + *

Convenience method for calling {@link #reconfigure(int, int, Config)} + * with the current width and config.

+ * + *

WARNING: this method should not be used on bitmaps currently used by + * the view system, see {@link #reconfigure(int, int, Config)} for more + * details.

+ * + * @see #reconfigure(int, int, Config) + * @see #setWidth(int) + * @see #setConfig(Config) + */ + public void setHeight(int height) { + //reconfigure(getWidth(), height, getConfig()); + } + + /** + *

Convenience method for calling {@link #reconfigure(int, int, Config)} + * with the current height and width.

+ * + *

WARNING: this method should not be used on bitmaps currently used by + * the view system, see {@link #reconfigure(int, int, Config)} for more + * details.

+ * + * @see #reconfigure(int, int, Config) + * @see #setWidth(int) + * @see #setHeight(int) + */ + public void setConfig(Config config) { + //reconfigure(getWidth(), getHeight(), config); + } + + /** + * Sets the nine patch chunk. + * + * @param chunk The definition of the nine patch + * + * @hide + */ + public void setNinePatchChunk(byte[] chunk) { + mNinePatchChunk = chunk; + } + + /** + * Sets the layout bounds as an array of left, top, right, bottom integers + * @param bounds the array containing the padding values + * + * @hide + */ + public void setLayoutBounds(int[] bounds) { + mLayoutBounds = bounds; + } + + /** + * Free the native object associated with this bitmap, and clear the + * reference to the pixel data. This will not free the pixel data synchronously; + * it simply allows it to be garbage collected if there are no other references. + * The bitmap is marked as "dead", meaning it will throw an exception if + * getPixels() or setPixels() is called, and will draw nothing. This operation + * cannot be reversed, so it should only be called if you are sure there are no + * further uses for the bitmap. This is an advanced call, and normally need + * not be called, since the normal GC process will free up this memory when + * there are no more references to this bitmap. + */ + public void recycle() { + if (!mRecycled) { + if (nativeRecycle(mNativeBitmap)) { + // return value indicates whether native pixel object was actually recycled. + // false indicates that it is still in use at the native level and these + // objects should not be collected now. They will be collected later when the + // Bitmap itself is collected. + mBuffer = null; + mNinePatchChunk = null; + } + mRecycled = true; + } + } + + /** + * Returns true if this bitmap has been recycled. If so, then it is an error + * to try to access its pixels, and the bitmap will not draw. + * + * @return true if the bitmap has been recycled + */ + public final boolean isRecycled() { + return mRecycled; + } + + /** + * Returns the generation ID of this bitmap. The generation ID changes + * whenever the bitmap is modified. This can be used as an efficient way to + * check if a bitmap has changed. + * + * @return The current generation ID for this bitmap. + */ + public int getGenerationId() { + return nativeGenerationId(mNativeBitmap); + } + + /** + * This is called by methods that want to throw an exception if the bitmap + * has already been recycled. + */ + private void checkRecycled(String errorMessage) { + if (mRecycled) { + throw new IllegalStateException(errorMessage); + } + } + + /** + * Common code for checking that x and y are >= 0 + * + * @param x x coordinate to ensure is >= 0 + * @param y y coordinate to ensure is >= 0 + */ + private static void checkXYSign(int x, int y) { + if (x < 0) { + throw new IllegalArgumentException("x must be >= 0"); + } + if (y < 0) { + throw new IllegalArgumentException("y must be >= 0"); + } + } + + /** + * Common code for checking that width and height are > 0 + * + * @param width width to ensure is > 0 + * @param height height to ensure is > 0 + */ + private static void checkWidthHeight(int width, int height) { + if (width <= 0) { + throw new IllegalArgumentException("width must be > 0"); + } + if (height <= 0) { + throw new IllegalArgumentException("height must be > 0"); + } + } + + /** + * Possible bitmap configurations. A bitmap configuration describes + * how pixels are stored. This affects the quality (color depth) as + * well as the ability to display transparent/translucent colors. + */ + public enum Config { + // these native values must match up with the enum in SkBitmap.h + + /** + * Each pixel is stored as a single translucency (alpha) channel. + * This is very useful to efficiently store masks for instance. + * No color information is stored. + * With this configuration, each pixel requires 1 byte of memory. + */ + ALPHA_8 (1), + + /** + * Each pixel is stored on 2 bytes and only the RGB channels are + * encoded: red is stored with 5 bits of precision (32 possible + * values), green is stored with 6 bits of precision (64 possible + * values) and blue is stored with 5 bits of precision. + * + * This configuration can produce slight visual artifacts depending + * on the configuration of the source. For instance, without + * dithering, the result might show a greenish tint. To get better + * results dithering should be applied. + * + * This configuration may be useful when using opaque bitmaps + * that do not require high color fidelity. + */ + RGB_565 (3), + + /** + * Each pixel is stored on 2 bytes. The three RGB color channels + * and the alpha channel (translucency) are stored with a 4 bits + * precision (16 possible values.) + * + * This configuration is mostly useful if the application needs + * to store translucency information but also needs to save + * memory. + * + * It is recommended to use {@link #ARGB_8888} instead of this + * configuration. + * + * Note: as of {@link android.os.Build.VERSION_CODES#KITKAT}, + * any bitmap created with this configuration will be created + * using {@link #ARGB_8888} instead. + * + * @deprecated Because of the poor quality of this configuration, + * it is advised to use {@link #ARGB_8888} instead. + */ + @Deprecated + ARGB_4444 (4), + + /** + * Each pixel is stored on 4 bytes. Each channel (RGB and alpha + * for translucency) is stored with 8 bits of precision (256 + * possible values.) + * + * This configuration is very flexible and offers the best + * quality. It should be used whenever possible. + */ + ARGB_8888 (5); + + final int nativeInt; + + @SuppressWarnings({"deprecation"}) + private static Config sConfigs[] = { + null, ALPHA_8, null, RGB_565, ARGB_4444, ARGB_8888 + }; + + Config(int ni) { + this.nativeInt = ni; + } + + static Config nativeToConfig(int ni) { + return sConfigs[ni]; + } + } + + /** + *

Copy the bitmap's pixels into the specified buffer (allocated by the + * caller). An exception is thrown if the buffer is not large enough to + * hold all of the pixels (taking into account the number of bytes per + * pixel) or if the Buffer subclass is not one of the support types + * (ByteBuffer, ShortBuffer, IntBuffer).

+ *

The content of the bitmap is copied into the buffer as-is. This means + * that if this bitmap stores its pixels pre-multiplied + * (see {@link #isPremultiplied()}, the values in the buffer will also be + * pre-multiplied.

+ *

After this method returns, the current position of the buffer is + * updated: the position is incremented by the number of elements written + * in the buffer.

+ */ + public void copyPixelsToBuffer(Buffer dst) { + int elements = dst.remaining(); + int shift; + if (dst instanceof ByteBuffer) { + shift = 0; + } else if (dst instanceof ShortBuffer) { + shift = 1; + } else if (dst instanceof IntBuffer) { + shift = 2; + } else { + throw new RuntimeException("unsupported Buffer subclass"); + } + + long bufferSize = (long)elements << shift; + long pixelSize = getByteCount(); + + if (bufferSize < pixelSize) { + throw new RuntimeException("Buffer not large enough for pixels"); + } + + nativeCopyPixelsToBuffer(mNativeBitmap, dst); + + // now update the buffer's position + int position = dst.position(); + position += pixelSize >> shift; + dst.position(position); + } + + /** + *

Copy the pixels from the buffer, beginning at the current position, + * overwriting the bitmap's pixels. The data in the buffer is not changed + * in any way (unlike setPixels(), which converts from unpremultipled 32bit + * to whatever the bitmap's native format is.

+ *

After this method returns, the current position of the buffer is + * updated: the position is incremented by the number of elements read from + * the buffer. If you need to read the bitmap from the buffer again you must + * first rewind the buffer.

+ */ + public void copyPixelsFromBuffer(Buffer src) { + checkRecycled("copyPixelsFromBuffer called on recycled bitmap"); + + int elements = src.remaining(); + int shift; + if (src instanceof ByteBuffer) { + shift = 0; + } else if (src instanceof ShortBuffer) { + shift = 1; + } else if (src instanceof IntBuffer) { + shift = 2; + } else { + throw new RuntimeException("unsupported Buffer subclass"); + } + + long bufferBytes = (long) elements << shift; + long bitmapBytes = getByteCount(); + + if (bufferBytes < bitmapBytes) { + throw new RuntimeException("Buffer not large enough for pixels"); + } + + nativeCopyPixelsFromBuffer(mNativeBitmap, src); + + // now update the buffer's position + int position = src.position(); + position += bitmapBytes >> shift; + src.position(position); + } + + /** + * Tries to make a new bitmap based on the dimensions of this bitmap, + * setting the new bitmap's config to the one specified, and then copying + * this bitmap's pixels into the new bitmap. If the conversion is not + * supported, or the allocator fails, then this returns NULL. The returned + * bitmap initially has the same density as the original. + * + * @param config The desired config for the resulting bitmap + * @param isMutable True if the resulting bitmap should be mutable (i.e. + * its pixels can be modified) + * @return the new bitmap, or null if the copy could not be made. + */ + public Bitmap copy(Config config, boolean isMutable) { + checkRecycled("Can't copy a recycled bitmap"); + Bitmap b = nativeCopy(mNativeBitmap, config.nativeInt, isMutable); + if (b != null) { + b.setAlphaAndPremultiplied(hasAlpha(), mIsPremultiplied); + b.mDensity = mDensity; + } + return b; + } + + /** + * Creates a new bitmap, scaled from an existing bitmap, when possible. If the + * specified width and height are the same as the current width and height of + * the source bitmap, the source bitmap is returned and no new bitmap is + * created. + * + * @param src The source bitmap. + * @param dstWidth The new bitmap's desired width. + * @param dstHeight The new bitmap's desired height. + * @param filter true if the source should be filtered. + * @return The new scaled bitmap or the source bitmap if no scaling is required. + * @throws IllegalArgumentException if width is <= 0, or height is <= 0 + */ + public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, + boolean filter) { + Matrix m; + synchronized (Bitmap.class) { + // small pool of just 1 matrix + m = sScaleMatrix; + sScaleMatrix = null; + } + + if (m == null) { + m = new Matrix(); + } + + final int width = src.getWidth(); + final int height = src.getHeight(); + final float sx = dstWidth / (float)width; + final float sy = dstHeight / (float)height; + m.setScale(sx, sy); + Bitmap b = Bitmap.createBitmap(src, 0, 0, width, height, m, filter); + + synchronized (Bitmap.class) { + // do we need to check for null? why not just assign everytime? + if (sScaleMatrix == null) { + sScaleMatrix = m; + } + } + + return b; + } + + /** + * Returns an immutable bitmap from the source bitmap. The new bitmap may + * be the same object as source, or a copy may have been made. It is + * initialized with the same density as the original bitmap. + */ + public static Bitmap createBitmap(Bitmap src) { + return createBitmap(src, 0, 0, src.getWidth(), src.getHeight()); + } + + /** + * Returns an immutable bitmap from the specified subset of the source + * bitmap. The new bitmap may be the same object as source, or a copy may + * have been made. It is initialized with the same density as the original + * bitmap. + * + * @param source The bitmap we are subsetting + * @param x The x coordinate of the first pixel in source + * @param y The y coordinate of the first pixel in source + * @param width The number of pixels in each row + * @param height The number of rows + * @return A copy of a subset of the source bitmap or the source bitmap itself. + * @throws IllegalArgumentException if the x, y, width, height values are + * outside of the dimensions of the source bitmap, or width is <= 0, + * or height is <= 0 + */ + public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) { + return createBitmap(source, x, y, width, height, null, false); + } + + /** + * Returns an immutable bitmap from subset of the source bitmap, + * transformed by the optional matrix. The new bitmap may be the + * same object as source, or a copy may have been made. It is + * initialized with the same density as the original bitmap. + * + * If the source bitmap is immutable and the requested subset is the + * same as the source bitmap itself, then the source bitmap is + * returned and no new bitmap is created. + * + * @param source The bitmap we are subsetting + * @param x The x coordinate of the first pixel in source + * @param y The y coordinate of the first pixel in source + * @param width The number of pixels in each row + * @param height The number of rows + * @param m Optional matrix to be applied to the pixels + * @param filter true if the source should be filtered. + * Only applies if the matrix contains more than just + * translation. + * @return A bitmap that represents the specified subset of source + * @throws IllegalArgumentException if the x, y, width, height values are + * outside of the dimensions of the source bitmap, or width is <= 0, + * or height is <= 0 + */ + public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, + Matrix m, boolean filter) {/* + + checkXYSign(x, y); + checkWidthHeight(width, height); + if (x + width > source.getWidth()) { + throw new IllegalArgumentException("x + width must be <= bitmap.width()"); + } + if (y + height > source.getHeight()) { + throw new IllegalArgumentException("y + height must be <= bitmap.height()"); + } + + // check if we can just return our argument unchanged + if (!source.isMutable() && x == 0 && y == 0 && width == source.getWidth() && + height == source.getHeight() && (m == null || m.isIdentity())) { + return source; + } + + int neww = width; + int newh = height; + Canvas canvas = new Canvas(); + Bitmap bitmap; + Paint paint; + + Rect srcR = new Rect(x, y, x + width, y + height); + RectF dstR = new RectF(0, 0, width, height); + + Config newConfig = Config.ARGB_8888; + final Config config = source.getConfig(); + // GIF files generate null configs, assume ARGB_8888 + if (config != null) { + switch (config) { + case RGB_565: + newConfig = Config.RGB_565; + break; + case ALPHA_8: + newConfig = Config.ALPHA_8; + break; + //noinspection deprecation + case ARGB_4444: + case ARGB_8888: + default: + newConfig = Config.ARGB_8888; + break; + } + } + + if (m == null || m.isIdentity()) { + bitmap = createBitmap(neww, newh, newConfig, source.hasAlpha()); + paint = null; // not needed + } else { + final boolean transformed = !m.rectStaysRect(); + + RectF deviceR = new RectF(); + m.mapRect(deviceR, dstR); + + neww = Math.round(deviceR.width()); + newh = Math.round(deviceR.height()); + + bitmap = createBitmap(neww, newh, transformed ? Config.ARGB_8888 : newConfig, + transformed || source.hasAlpha()); + + canvas.translate(-deviceR.left, -deviceR.top); + canvas.concat(m); + + paint = new Paint(); + paint.setFilterBitmap(filter); + if (transformed) { + paint.setAntiAlias(true); + } + } + + // The new bitmap was created from a known bitmap source so assume that + // they use the same density + bitmap.mDensity = source.mDensity; + bitmap.setAlphaAndPremultiplied(source.hasAlpha(), source.mIsPremultiplied); + + canvas.setBitmap(bitmap); + canvas.drawBitmap(source, srcR, dstR, paint); + canvas.setBitmap(null); + + return bitmap; + */return new Bitmap();} + + /** + * Returns a mutable bitmap with the specified width and height. Its + * initial density is as per {@link #getDensity}. + * + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. + * @throws IllegalArgumentException if the width or height are <= 0 + */ + public static Bitmap createBitmap(int width, int height, Config config) { + return createBitmap(width, height, config, true); + } + + /** + * Returns a mutable bitmap with the specified width and height. Its + * initial density is determined from the given {@link DisplayMetrics}. + * + * @param display Display metrics for the display this bitmap will be + * drawn on. + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. + * @throws IllegalArgumentException if the width or height are <= 0 + */ + public static Bitmap createBitmap(DisplayMetrics display, int width, + int height, Config config) { + return createBitmap(display, width, height, config, true); + } + + /** + * Returns a mutable bitmap with the specified width and height. Its + * initial density is as per {@link #getDensity}. + * + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. + * @param hasAlpha If the bitmap is ARGB_8888 this flag can be used to mark the + * bitmap as opaque. Doing so will clear the bitmap in black + * instead of transparent. + * + * @throws IllegalArgumentException if the width or height are <= 0 + */ + private static Bitmap createBitmap(int width, int height, Config config, boolean hasAlpha) { + return createBitmap(null, width, height, config, hasAlpha); + } + + /** + * Returns a mutable bitmap with the specified width and height. Its + * initial density is determined from the given {@link DisplayMetrics}. + * + * @param display Display metrics for the display this bitmap will be + * drawn on. + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. + * @param hasAlpha If the bitmap is ARGB_8888 this flag can be used to mark the + * bitmap as opaque. Doing so will clear the bitmap in black + * instead of transparent. + * + * @throws IllegalArgumentException if the width or height are <= 0 + */ + private static Bitmap createBitmap(DisplayMetrics display, int width, int height, + Config config, boolean hasAlpha) { + if (width <= 0 || height <= 0) { + throw new IllegalArgumentException("width and height must be > 0"); + } + Bitmap bm = nativeCreate(null, 0, width, width, height, config.nativeInt, true); + if (display != null) { + bm.mDensity = display.densityDpi; + } + bm.setHasAlpha(hasAlpha); + if (config == Config.ARGB_8888 && !hasAlpha) { + nativeErase(bm.mNativeBitmap, 0xff000000); + } + // No need to initialize the bitmap to zeroes with other configs; + // it is backed by a VM byte array which is by definition preinitialized + // to all zeroes. + return bm; + } + + /** + * Returns a immutable bitmap with the specified width and height, with each + * pixel value set to the corresponding value in the colors array. Its + * initial density is as per {@link #getDensity}. + * + * @param colors Array of {@link Color} used to initialize the pixels. + * @param offset Number of values to skip before the first color in the + * array of colors. + * @param stride Number of colors in the array between rows (must be >= + * width or <= -width). + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. If the config does not + * support per-pixel alpha (e.g. RGB_565), then the alpha + * bytes in the colors[] will be ignored (assumed to be FF) + * @throws IllegalArgumentException if the width or height are <= 0, or if + * the color array's length is less than the number of pixels. + */ + public static Bitmap createBitmap(int colors[], int offset, int stride, + int width, int height, Config config) { + return createBitmap(null, colors, offset, stride, width, height, config); + } + + /** + * Returns a immutable bitmap with the specified width and height, with each + * pixel value set to the corresponding value in the colors array. Its + * initial density is determined from the given {@link DisplayMetrics}. + * + * @param display Display metrics for the display this bitmap will be + * drawn on. + * @param colors Array of {@link Color} used to initialize the pixels. + * @param offset Number of values to skip before the first color in the + * array of colors. + * @param stride Number of colors in the array between rows (must be >= + * width or <= -width). + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. If the config does not + * support per-pixel alpha (e.g. RGB_565), then the alpha + * bytes in the colors[] will be ignored (assumed to be FF) + * @throws IllegalArgumentException if the width or height are <= 0, or if + * the color array's length is less than the number of pixels. + */ + public static Bitmap createBitmap(DisplayMetrics display, int colors[], + int offset, int stride, int width, int height, Config config) { + + checkWidthHeight(width, height); + if (Math.abs(stride) < width) { + throw new IllegalArgumentException("abs(stride) must be >= width"); + } + int lastScanline = offset + (height - 1) * stride; + int length = colors.length; + if (offset < 0 || (offset + width > length) || lastScanline < 0 || + (lastScanline + width > length)) { + throw new ArrayIndexOutOfBoundsException(); + } + if (width <= 0 || height <= 0) { + throw new IllegalArgumentException("width and height must be > 0"); + } + Bitmap bm = nativeCreate(colors, offset, stride, width, height, + config.nativeInt, false); + if (display != null) { + bm.mDensity = display.densityDpi; + } + return bm; + } + + /** + * Returns a immutable bitmap with the specified width and height, with each + * pixel value set to the corresponding value in the colors array. Its + * initial density is as per {@link #getDensity}. + * + * @param colors Array of {@link Color} used to initialize the pixels. + * This array must be at least as large as width * height. + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. If the config does not + * support per-pixel alpha (e.g. RGB_565), then the alpha + * bytes in the colors[] will be ignored (assumed to be FF) + * @throws IllegalArgumentException if the width or height are <= 0, or if + * the color array's length is less than the number of pixels. + */ + public static Bitmap createBitmap(int colors[], int width, int height, Config config) { + return createBitmap(null, colors, 0, width, width, height, config); + } + + /** + * Returns a immutable bitmap with the specified width and height, with each + * pixel value set to the corresponding value in the colors array. Its + * initial density is determined from the given {@link DisplayMetrics}. + * + * @param display Display metrics for the display this bitmap will be + * drawn on. + * @param colors Array of {@link Color} used to initialize the pixels. + * This array must be at least as large as width * height. + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param config The bitmap config to create. If the config does not + * support per-pixel alpha (e.g. RGB_565), then the alpha + * bytes in the colors[] will be ignored (assumed to be FF) + * @throws IllegalArgumentException if the width or height are <= 0, or if + * the color array's length is less than the number of pixels. + */ + public static Bitmap createBitmap(DisplayMetrics display, int colors[], + int width, int height, Config config) { + return createBitmap(display, colors, 0, width, width, height, config); + } + + /** + * Returns an optional array of private data, used by the UI system for + * some bitmaps. Not intended to be called by applications. + */ + public byte[] getNinePatchChunk() { + return mNinePatchChunk; + } + + /** + * @hide + * @return the layout padding [left, right, top, bottom] + */ + public int[] getLayoutBounds() { + return mLayoutBounds; + } + + /** + * Specifies the known formats a bitmap can be compressed into + */ + public enum CompressFormat { + JPEG (0), + PNG (1), + WEBP (2); + + CompressFormat(int nativeInt) { + this.nativeInt = nativeInt; + } + final int nativeInt; + } + + /** + * Number of bytes of temp storage we use for communicating between the + * native compressor and the java OutputStream. + */ + private final static int WORKING_COMPRESS_STORAGE = 4096; + + /** + * Write a compressed version of the bitmap to the specified outputstream. + * If this returns true, the bitmap can be reconstructed by passing a + * corresponding inputstream to BitmapFactory.decodeStream(). Note: not + * all Formats support all bitmap configs directly, so it is possible that + * the returned bitmap from BitmapFactory could be in a different bitdepth, + * and/or may have lost per-pixel alpha (e.g. JPEG only supports opaque + * pixels). + * + * @param format The format of the compressed image + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @param stream The outputstream to write the compressed data. + * @return true if successfully compressed to the specified stream. + */ + public boolean compress(CompressFormat format, int quality, OutputStream stream) { + checkRecycled("Can't compress a recycled bitmap"); + // do explicit check before calling the native method + if (stream == null) { + throw new NullPointerException(); + } + if (quality < 0 || quality > 100) { + throw new IllegalArgumentException("quality must be 0..100"); + } + return nativeCompress(mNativeBitmap, format.nativeInt, quality, + stream, new byte[WORKING_COMPRESS_STORAGE]); + } + + /** + * Returns true if the bitmap is marked as mutable (i.e. can be drawn into) + */ + public final boolean isMutable() { + return mIsMutable; + } + + /** + *

Indicates whether pixels stored in this bitmaps are stored pre-multiplied. + * When a pixel is pre-multiplied, the RGB components have been multiplied by + * the alpha component. For instance, if the original color is a 50% + * translucent red (128, 255, 0, 0), the pre-multiplied form is + * (128, 128, 0, 0).

+ * + *

This method always returns false if {@link #getConfig()} is + * {@link Bitmap.Config#RGB_565}.

+ * + *

This method only returns true if {@link #hasAlpha()} returns true. + * A bitmap with no alpha channel can be used both as a pre-multiplied and + * as a non pre-multiplied bitmap.

+ * + *

Only pre-multiplied bitmaps may be drawn by the view system or + * {@link Canvas}. If a non-pre-multiplied bitmap with an alpha channel is + * drawn to a Canvas, a RuntimeException will be thrown.

+ * + * @return true if the underlying pixels have been pre-multiplied, false + * otherwise + * + * @see Bitmap#setPremultiplied(boolean) + * @see BitmapFactory.Options#inPremultiplied + */ + public final boolean isPremultiplied() { + return mIsPremultiplied && getConfig() != Config.RGB_565 && hasAlpha(); + } + + /** + * Sets whether the bitmap should treat its data as pre-multiplied. + * + *

Bitmaps are always treated as pre-multiplied by the view system and + * {@link Canvas} for performance reasons. Storing un-pre-multiplied data in + * a Bitmap (through {@link #setPixel}, {@link #setPixels}, or {@link + * BitmapFactory.Options#inPremultiplied BitmapFactory.Options.inPremultiplied}) + * can lead to incorrect blending if drawn by the framework.

+ * + *

This method will not affect the behavior of a bitmap without an alpha + * channel, or if {@link #hasAlpha()} returns false.

+ * + *

Calling createBitmap() or createScaledBitmap() with a source + * Bitmap whose colors are not pre-multiplied may result in a RuntimeException, + * since those functions require drawing the source, which is not supported for + * un-pre-multiplied Bitmaps.

+ * + * @see Bitmap#isPremultiplied() + * @see BitmapFactory.Options#inPremultiplied + */ + public final void setPremultiplied(boolean premultiplied) { + mIsPremultiplied = premultiplied; + nativeSetAlphaAndPremultiplied(mNativeBitmap, hasAlpha(), premultiplied); + } + + /** Helper function to set both alpha and premultiplied. **/ + private final void setAlphaAndPremultiplied(boolean hasAlpha, boolean premultiplied) { + mIsPremultiplied = premultiplied; + nativeSetAlphaAndPremultiplied(mNativeBitmap, hasAlpha, premultiplied); + } + + /** Returns the bitmap's width */ + public native final int getWidth(); + + /** Returns the bitmap's height */ + public native final int getHeight(); + + /** + * Convenience for calling {@link #getScaledWidth(int)} with the target + * density of the given {@link Canvas}. + */ + public int getScaledWidth(Canvas canvas) {/* + return scaleFromDensity(getWidth(), mDensity, canvas.mDensity); + */return -1;} + + /** + * Convenience for calling {@link #getScaledHeight(int)} with the target + * density of the given {@link Canvas}. + */ + public int getScaledHeight(Canvas canvas) {/* + return scaleFromDensity(getHeight(), mDensity, canvas.mDensity); + */return -1;} + + /** + * Convenience for calling {@link #getScaledWidth(int)} with the target + * density of the given {@link DisplayMetrics}. + */ + public int getScaledWidth(DisplayMetrics metrics) { + return scaleFromDensity(getWidth(), mDensity, metrics.densityDpi); + } + + /** + * Convenience for calling {@link #getScaledHeight(int)} with the target + * density of the given {@link DisplayMetrics}. + */ + public int getScaledHeight(DisplayMetrics metrics) { + return scaleFromDensity(getHeight(), mDensity, metrics.densityDpi); + } + + /** + * Convenience method that returns the width of this bitmap divided + * by the density scale factor. + * + * @param targetDensity The density of the target canvas of the bitmap. + * @return The scaled width of this bitmap, according to the density scale factor. + */ + public int getScaledWidth(int targetDensity) { + return scaleFromDensity(getWidth(), mDensity, targetDensity); + } + + /** + * Convenience method that returns the height of this bitmap divided + * by the density scale factor. + * + * @param targetDensity The density of the target canvas of the bitmap. + * @return The scaled height of this bitmap, according to the density scale factor. + */ + public int getScaledHeight(int targetDensity) { + return scaleFromDensity(getHeight(), mDensity, targetDensity); + } + + /** + * @hide + */ + static public int scaleFromDensity(int size, int sdensity, int tdensity) { + if (sdensity == DENSITY_NONE || tdensity == DENSITY_NONE || sdensity == tdensity) { + return size; + } + + // Scale by tdensity / sdensity, rounding up. + return ((size * tdensity) + (sdensity >> 1)) / sdensity; + } + + /** + * Return the number of bytes between rows in the bitmap's pixels. Note that + * this refers to the pixels as stored natively by the bitmap. If you call + * getPixels() or setPixels(), then the pixels are uniformly treated as + * 32bit values, packed according to the Color class. + * + *

As of {@link android.os.Build.VERSION_CODES#KITKAT}, this method + * should not be used to calculate the memory usage of the bitmap. Instead, + * see {@link #getAllocationByteCount()}. + * + * @return number of bytes between rows of the native bitmap pixels. + */ + public final int getRowBytes() { + return nativeRowBytes(mNativeBitmap); + } + + /** + * Returns the minimum number of bytes that can be used to store this bitmap's pixels. + * + *

As of {@link android.os.Build.VERSION_CODES#KITKAT}, the result of this method can + * no longer be used to determine memory usage of a bitmap. See {@link + * #getAllocationByteCount()}.

+ */ + public final int getByteCount() { + // int result permits bitmaps up to 46,340 x 46,340 + return getRowBytes() * getHeight(); + } + + /** + * Returns the size of the allocated memory used to store this bitmap's pixels. + * + *

This can be larger than the result of {@link #getByteCount()} if a bitmap is reused to + * decode other bitmaps of smaller size, or by manual reconfiguration. See {@link + * #reconfigure(int, int, Config)}, {@link #setWidth(int)}, {@link #setHeight(int)}, {@link + * #setConfig(Bitmap.Config)}, and {@link BitmapFactory.Options#inBitmap + * BitmapFactory.Options.inBitmap}. If a bitmap is not modified in this way, this value will be + * the same as that returned by {@link #getByteCount()}.

+ * + *

This value will not change over the lifetime of a Bitmap.

+ * + * @see #reconfigure(int, int, Config) + */ + public final int getAllocationByteCount() { + if (mBuffer == null) { + // native backed bitmaps don't support reconfiguration, + // so alloc size is always content size + return getByteCount(); + } + return mBuffer.length; + } + + /** + * If the bitmap's internal config is in one of the public formats, return + * that config, otherwise return null. + */ + public final Config getConfig() { + return Config.nativeToConfig(nativeConfig(mNativeBitmap)); + } + + /** Returns true if the bitmap's config supports per-pixel alpha, and + * if the pixels may contain non-opaque alpha values. For some configs, + * this is always false (e.g. RGB_565), since they do not support per-pixel + * alpha. However, for configs that do, the bitmap may be flagged to be + * known that all of its pixels are opaque. In this case hasAlpha() will + * also return false. If a config such as ARGB_8888 is not so flagged, + * it will return true by default. + */ + public final boolean hasAlpha() { + return nativeHasAlpha(mNativeBitmap); + } + + /** + * Tell the bitmap if all of the pixels are known to be opaque (false) + * or if some of the pixels may contain non-opaque alpha values (true). + * Note, for some configs (e.g. RGB_565) this call is ignored, since it + * does not support per-pixel alpha values. + * + * This is meant as a drawing hint, as in some cases a bitmap that is known + * to be opaque can take a faster drawing case than one that may have + * non-opaque per-pixel alpha values. + */ + public void setHasAlpha(boolean hasAlpha) { + //nativeSetAlphaAndPremultiplied(mNativeBitmap, hasAlpha, mIsPremultiplied); + } + + /** + * Indicates whether the renderer responsible for drawing this + * bitmap should attempt to use mipmaps when this bitmap is drawn + * scaled down. + * + * If you know that you are going to draw this bitmap at less than + * 50% of its original size, you may be able to obtain a higher + * quality + * + * This property is only a suggestion that can be ignored by the + * renderer. It is not guaranteed to have any effect. + * + * @return true if the renderer should attempt to use mipmaps, + * false otherwise + * + * @see #setHasMipMap(boolean) + */ + public final boolean hasMipMap() { + return nativeHasMipMap(mNativeBitmap); + } + + /** + * Set a hint for the renderer responsible for drawing this bitmap + * indicating that it should attempt to use mipmaps when this bitmap + * is drawn scaled down. + * + * If you know that you are going to draw this bitmap at less than + * 50% of its original size, you may be able to obtain a higher + * quality by turning this property on. + * + * Note that if the renderer respects this hint it might have to + * allocate extra memory to hold the mipmap levels for this bitmap. + * + * This property is only a suggestion that can be ignored by the + * renderer. It is not guaranteed to have any effect. + * + * @param hasMipMap indicates whether the renderer should attempt + * to use mipmaps + * + * @see #hasMipMap() + */ + public final void setHasMipMap(boolean hasMipMap) { + nativeSetHasMipMap(mNativeBitmap, hasMipMap); + } + + /** + * Fills the bitmap's pixels with the specified {@link Color}. + * + * @throws IllegalStateException if the bitmap is not mutable. + */ + public void eraseColor(int c) { + checkRecycled("Can't erase a recycled bitmap"); + if (!isMutable()) { + throw new IllegalStateException("cannot erase immutable bitmaps"); + } + nativeErase(mNativeBitmap, c); + } + + /** + * Returns the {@link Color} at the specified location. Throws an exception + * if x or y are out of bounds (negative or >= to the width or height + * respectively). The returned color is a non-premultiplied ARGB value. + * + * @param x The x coordinate (0...width-1) of the pixel to return + * @param y The y coordinate (0...height-1) of the pixel to return + * @return The argb {@link Color} at the specified coordinate + * @throws IllegalArgumentException if x, y exceed the bitmap's bounds + */ + public int getPixel(int x, int y) { + checkRecycled("Can't call getPixel() on a recycled bitmap"); + checkPixelAccess(x, y); + return nativeGetPixel(mNativeBitmap, x, y, mIsPremultiplied); + } + + /** + * Returns in pixels[] a copy of the data in the bitmap. Each value is + * a packed int representing a {@link Color}. The stride parameter allows + * the caller to allow for gaps in the returned pixels array between + * rows. For normal packed results, just pass width for the stride value. + * The returned colors are non-premultiplied ARGB values. + * + * @param pixels The array to receive the bitmap's colors + * @param offset The first index to write into pixels[] + * @param stride The number of entries in pixels[] to skip between + * rows (must be >= bitmap's width). Can be negative. + * @param x The x coordinate of the first pixel to read from + * the bitmap + * @param y The y coordinate of the first pixel to read from + * the bitmap + * @param width The number of pixels to read from each row + * @param height The number of rows to read + * + * @throws IllegalArgumentException if x, y, width, height exceed the + * bounds of the bitmap, or if abs(stride) < width. + * @throws ArrayIndexOutOfBoundsException if the pixels array is too small + * to receive the specified number of pixels. + */ + public void getPixels(int[] pixels, int offset, int stride, + int x, int y, int width, int height) { + checkRecycled("Can't call getPixels() on a recycled bitmap"); + if (width == 0 || height == 0) { + return; // nothing to do + } + checkPixelsAccess(x, y, width, height, offset, stride, pixels); + nativeGetPixels(mNativeBitmap, pixels, offset, stride, + x, y, width, height, mIsPremultiplied); + } + + /** + * Shared code to check for illegal arguments passed to getPixel() + * or setPixel() + * + * @param x x coordinate of the pixel + * @param y y coordinate of the pixel + */ + private void checkPixelAccess(int x, int y) { + checkXYSign(x, y); + if (x >= getWidth()) { + throw new IllegalArgumentException("x must be < bitmap.width()"); + } + if (y >= getHeight()) { + throw new IllegalArgumentException("y must be < bitmap.height()"); + } + } + + /** + * Shared code to check for illegal arguments passed to getPixels() + * or setPixels() + * + * @param x left edge of the area of pixels to access + * @param y top edge of the area of pixels to access + * @param width width of the area of pixels to access + * @param height height of the area of pixels to access + * @param offset offset into pixels[] array + * @param stride number of elements in pixels[] between each logical row + * @param pixels array to hold the area of pixels being accessed + */ + private void checkPixelsAccess(int x, int y, int width, int height, + int offset, int stride, int pixels[]) { + checkXYSign(x, y); + if (width < 0) { + throw new IllegalArgumentException("width must be >= 0"); + } + if (height < 0) { + throw new IllegalArgumentException("height must be >= 0"); + } + if (x + width > getWidth()) { + throw new IllegalArgumentException( + "x + width must be <= bitmap.width()"); + } + if (y + height > getHeight()) { + throw new IllegalArgumentException( + "y + height must be <= bitmap.height()"); + } + if (Math.abs(stride) < width) { + throw new IllegalArgumentException("abs(stride) must be >= width"); + } + int lastScanline = offset + (height - 1) * stride; + int length = pixels.length; + if (offset < 0 || (offset + width > length) + || lastScanline < 0 + || (lastScanline + width > length)) { + throw new ArrayIndexOutOfBoundsException(); + } + } + + /** + *

Write the specified {@link Color} into the bitmap (assuming it is + * mutable) at the x,y coordinate. The color must be a + * non-premultiplied ARGB value.

+ * + * @param x The x coordinate of the pixel to replace (0...width-1) + * @param y The y coordinate of the pixel to replace (0...height-1) + * @param color The ARGB color to write into the bitmap + * + * @throws IllegalStateException if the bitmap is not mutable + * @throws IllegalArgumentException if x, y are outside of the bitmap's + * bounds. + */ + public void setPixel(int x, int y, int color) { + checkRecycled("Can't call setPixel() on a recycled bitmap"); + if (!isMutable()) { + throw new IllegalStateException(); + } + checkPixelAccess(x, y); + nativeSetPixel(mNativeBitmap, x, y, color, mIsPremultiplied); + } + + /** + *

Replace pixels in the bitmap with the colors in the array. Each element + * in the array is a packed int prepresenting a non-premultiplied ARGB + * {@link Color}.

+ * + * @param pixels The colors to write to the bitmap + * @param offset The index of the first color to read from pixels[] + * @param stride The number of colors in pixels[] to skip between rows. + * Normally this value will be the same as the width of + * the bitmap, but it can be larger (or negative). + * @param x The x coordinate of the first pixel to write to in + * the bitmap. + * @param y The y coordinate of the first pixel to write to in + * the bitmap. + * @param width The number of colors to copy from pixels[] per row + * @param height The number of rows to write to the bitmap + * + * @throws IllegalStateException if the bitmap is not mutable + * @throws IllegalArgumentException if x, y, width, height are outside of + * the bitmap's bounds. + * @throws ArrayIndexOutOfBoundsException if the pixels array is too small + * to receive the specified number of pixels. + */ + public void setPixels(int[] pixels, int offset, int stride, + int x, int y, int width, int height) { + checkRecycled("Can't call setPixels() on a recycled bitmap"); + if (!isMutable()) { + throw new IllegalStateException(); + } + if (width == 0 || height == 0) { + return; // nothing to do + } + checkPixelsAccess(x, y, width, height, offset, stride, pixels); + nativeSetPixels(mNativeBitmap, pixels, offset, stride, + x, y, width, height, mIsPremultiplied); + } + + /** + * Returns a new bitmap that captures the alpha values of the original. + * This may be drawn with Canvas.drawBitmap(), where the color(s) will be + * taken from the paint that is passed to the draw call. + * + * @return new bitmap containing the alpha channel of the original bitmap. + */ + public Bitmap extractAlpha() { + return extractAlpha(null, null); + } + + /** + * Returns a new bitmap that captures the alpha values of the original. + * These values may be affected by the optional Paint parameter, which + * can contain its own alpha, and may also contain a MaskFilter which + * could change the actual dimensions of the resulting bitmap (e.g. + * a blur maskfilter might enlarge the resulting bitmap). If offsetXY + * is not null, it returns the amount to offset the returned bitmap so + * that it will logically align with the original. For example, if the + * paint contains a blur of radius 2, then offsetXY[] would contains + * -2, -2, so that drawing the alpha bitmap offset by (-2, -2) and then + * drawing the original would result in the blur visually aligning with + * the original. + * + *

The initial density of the returned bitmap is the same as the original's. + * + * @param paint Optional paint used to modify the alpha values in the + * resulting bitmap. Pass null for default behavior. + * @param offsetXY Optional array that returns the X (index 0) and Y + * (index 1) offset needed to position the returned bitmap + * so that it visually lines up with the original. + * @return new bitmap containing the (optionally modified by paint) alpha + * channel of the original bitmap. This may be drawn with + * Canvas.drawBitmap(), where the color(s) will be taken from the + * paint that is passed to the draw call. + */ + public Bitmap extractAlpha(Paint paint, int[] offsetXY) { + checkRecycled("Can't extractAlpha on a recycled bitmap"); + int nativePaint = /*paint != null ? paint.mNativePaint : */0; + Bitmap bm = nativeExtractAlpha(mNativeBitmap, nativePaint, offsetXY); + if (bm == null) { + throw new RuntimeException("Failed to extractAlpha on Bitmap"); + } + bm.mDensity = mDensity; + return bm; + } + + /** + * Given another bitmap, return true if it has the same dimensions, config, + * and pixel data as this bitmap. If any of those differ, return false. + * If other is null, return false. + */ + public boolean sameAs(Bitmap other) { + return this == other || (other != null && nativeSameAs(mNativeBitmap, other.mNativeBitmap)); + } + + /** + * Rebuilds any caches associated with the bitmap that are used for + * drawing it. In the case of purgeable bitmaps, this call will attempt to + * ensure that the pixels have been decoded. + * If this is called on more than one bitmap in sequence, the priority is + * given in LRU order (i.e. the last bitmap called will be given highest + * priority). + * + * For bitmaps with no associated caches, this call is effectively a no-op, + * and therefore is harmless. + */ + public void prepareToDraw() { + nativePrepareToDraw(mNativeBitmap); + } + + private static class BitmapFinalizer { + private final int mNativeBitmap; + + BitmapFinalizer(int nativeBitmap) { + mNativeBitmap = nativeBitmap; + } + + @Override + public void finalize() { + try { + super.finalize(); + } catch (Throwable t) { + // Ignore + } finally { + nativeDestructor(mNativeBitmap); + } + } + } + + //////////// native methods + + private static /*native*/ Bitmap nativeCreate(int[] colors, int offset, + int stride, int width, int height, + int nativeConfig, boolean mutable) { return new Bitmap(); } + private static native Bitmap nativeCopy(int srcBitmap, int nativeConfig, + boolean isMutable); + private static native void nativeDestructor(int nativeBitmap); + private static native boolean nativeRecycle(int nativeBitmap); + private static native void nativeReconfigure(int nativeBitmap, int width, int height, + int config, int allocSize); + + private static native boolean nativeCompress(int nativeBitmap, int format, + int quality, OutputStream stream, + byte[] tempStorage); + private static native void nativeErase(int nativeBitmap, int color); + private static native int nativeRowBytes(int nativeBitmap); + private static native int nativeConfig(int nativeBitmap); + + private static native int nativeGetPixel(int nativeBitmap, int x, int y, + boolean isPremultiplied); + private static native void nativeGetPixels(int nativeBitmap, int[] pixels, + int offset, int stride, int x, int y, + int width, int height, boolean isPremultiplied); + + private static native void nativeSetPixel(int nativeBitmap, int x, int y, + int color, boolean isPremultiplied); + private static native void nativeSetPixels(int nativeBitmap, int[] colors, + int offset, int stride, int x, int y, + int width, int height, boolean isPremultiplied); + private static native void nativeCopyPixelsToBuffer(int nativeBitmap, + Buffer dst); + private static native void nativeCopyPixelsFromBuffer(int nb, Buffer src); + private static native int nativeGenerationId(int nativeBitmap); + + // returns a new bitmap built from the native bitmap's alpha, and the paint + private static native Bitmap nativeExtractAlpha(int nativeBitmap, + int nativePaint, + int[] offsetXY); + + private static native void nativePrepareToDraw(int nativeBitmap); + private static native boolean nativeHasAlpha(int nativeBitmap); + private static native void nativeSetAlphaAndPremultiplied(int nBitmap, boolean hasAlpha, + boolean isPremul); + private static native boolean nativeHasMipMap(int nativeBitmap); + private static native void nativeSetHasMipMap(int nBitmap, boolean hasMipMap); + private static native boolean nativeSameAs(int nb0, int nb1); + + /* package */ final int ni() { + return mNativeBitmap; + } +} diff --git a/src/api-impl/android/graphics/BitmapFactory.java b/src/api-impl/android/graphics/BitmapFactory.java new file mode 100644 index 00000000..da49d2d1 --- /dev/null +++ b/src/api-impl/android/graphics/BitmapFactory.java @@ -0,0 +1,677 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.graphics; + +import android.content.res.AssetManager; +import android.content.res.Resources; +import android.os.Trace; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; + +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * Creates Bitmap objects from various sources, including files, streams, + * and byte-arrays. + */ +public class BitmapFactory { + private static final int DECODE_BUFFER_SIZE = 16 * 1024; + + public static class Options { + /** + * Create a default Options object, which if left unchanged will give + * the same result from the decoder as if null were passed. + */ + public Options() { + inDither = false; + inScaled = true; + inPremultiplied = true; + } + + /** + * If set, decode methods that take the Options object will attempt to + * reuse this bitmap when loading content. If the decode operation + * cannot use this bitmap, the decode method will return + * null and will throw an IllegalArgumentException. The + * current implementation necessitates that the reused bitmap be + * mutable, and the resulting reused bitmap will continue to remain + * mutable even when decoding a resource which would normally result in + * an immutable bitmap.

+ * + *

You should still always use the returned Bitmap of the decode + * method and not assume that reusing the bitmap worked, due to the + * constraints outlined above and failure situations that can occur. + * Checking whether the return value matches the value of the inBitmap + * set in the Options structure will indicate if the bitmap was reused, + * but in all cases you should use the Bitmap returned by the decoding + * function to ensure that you are using the bitmap that was used as the + * decode destination.

+ * + *

Usage with BitmapFactory

+ * + *

As of {@link android.os.Build.VERSION_CODES#KITKAT}, any + * mutable bitmap can be reused by {@link BitmapFactory} to decode any + * other bitmaps as long as the resulting {@link Bitmap#getByteCount() + * byte count} of the decoded bitmap is less than or equal to the {@link + * Bitmap#getAllocationByteCount() allocated byte count} of the reused + * bitmap. This can be because the intrinsic size is smaller, or its + * size post scaling (for density / sample size) is smaller.

+ * + *

Prior to {@link android.os.Build.VERSION_CODES#KITKAT} + * additional constraints apply: The image being decoded (whether as a + * resource or as a stream) must be in jpeg or png format. Only equal + * sized bitmaps are supported, with {@link #inSampleSize} set to 1. + * Additionally, the {@link android.graphics.Bitmap.Config + * configuration} of the reused bitmap will override the setting of + * {@link #inPreferredConfig}, if set.

+ * + *

Usage with BitmapRegionDecoder

+ * + *

BitmapRegionDecoder will draw its requested content into the Bitmap + * provided, clipping if the output content size (post scaling) is larger + * than the provided Bitmap. The provided Bitmap's width, height, and + * {@link Bitmap.Config} will not be changed. + * + *

BitmapRegionDecoder support for {@link #inBitmap} was + * introduced in {@link android.os.Build.VERSION_CODES#JELLY_BEAN}. All + * formats supported by BitmapRegionDecoder support Bitmap reuse via + * {@link #inBitmap}.

+ * + * @see Bitmap#reconfigure(int,int, android.graphics.Bitmap.Config) + */ + public Bitmap inBitmap; + + /** + * If set, decode methods will always return a mutable Bitmap instead of + * an immutable one. This can be used for instance to programmatically apply + * effects to a Bitmap loaded through BitmapFactory. + */ + @SuppressWarnings({"UnusedDeclaration"}) // used in native code + public boolean inMutable; + + /** + * If set to true, the decoder will return null (no bitmap), but + * the out... fields will still be set, allowing the caller to query + * the bitmap without having to allocate the memory for its pixels. + */ + public boolean inJustDecodeBounds; + + /** + * If set to a value > 1, requests the decoder to subsample the original + * image, returning a smaller image to save memory. The sample size is + * the number of pixels in either dimension that correspond to a single + * pixel in the decoded bitmap. For example, inSampleSize == 4 returns + * an image that is 1/4 the width/height of the original, and 1/16 the + * number of pixels. Any value <= 1 is treated the same as 1. Note: the + * decoder uses a final value based on powers of 2, any other value will + * be rounded down to the nearest power of 2. + */ + public int inSampleSize; + + /** + * If this is non-null, the decoder will try to decode into this + * internal configuration. If it is null, or the request cannot be met, + * the decoder will try to pick the best matching config based on the + * system's screen depth, and characteristics of the original image such + * as if it has per-pixel alpha (requiring a config that also does). + * + * Image are loaded with the {@link Bitmap.Config#ARGB_8888} config by + * default. + */ + public Bitmap.Config inPreferredConfig = Bitmap.Config.ARGB_8888; + + /** + * If true (which is the default), the resulting bitmap will have its + * color channels pre-multipled by the alpha channel. + * + *

This should NOT be set to false for images to be directly drawn by + * the view system or through a {@link Canvas}. The view system and + * {@link Canvas} assume all drawn images are pre-multiplied to simplify + * draw-time blending, and will throw a RuntimeException when + * un-premultiplied are drawn.

+ * + *

This is likely only useful if you want to manipulate raw encoded + * image data, e.g. with RenderScript or custom OpenGL.

+ * + *

This does not affect bitmaps without an alpha channel.

+ * + *

Setting this flag to false while setting {@link #inScaled} to true + * may result in incorrect colors.

+ * + * @see Bitmap#hasAlpha() + * @see Bitmap#isPremultiplied() + * @see #inScaled + */ + public boolean inPremultiplied; + + /** + * If dither is true, the decoder will attempt to dither the decoded + * image. + */ + public boolean inDither; + + /** + * The pixel density to use for the bitmap. This will always result + * in the returned bitmap having a density set for it (see + * {@link Bitmap#setDensity(int) Bitmap.setDensity(int)}). In addition, + * if {@link #inScaled} is set (which it is by default} and this + * density does not match {@link #inTargetDensity}, then the bitmap + * will be scaled to the target density before being returned. + * + *

If this is 0, + * {@link BitmapFactory#decodeResource(Resources, int)}, + * {@link BitmapFactory#decodeResource(Resources, int, android.graphics.BitmapFactory.Options)}, + * and {@link BitmapFactory#decodeResourceStream} + * will fill in the density associated with the resource. The other + * functions will leave it as-is and no density will be applied. + * + * @see #inTargetDensity + * @see #inScreenDensity + * @see #inScaled + * @see Bitmap#setDensity(int) + * @see android.util.DisplayMetrics#densityDpi + */ + public int inDensity; + + /** + * The pixel density of the destination this bitmap will be drawn to. + * This is used in conjunction with {@link #inDensity} and + * {@link #inScaled} to determine if and how to scale the bitmap before + * returning it. + * + *

If this is 0, + * {@link BitmapFactory#decodeResource(Resources, int)}, + * {@link BitmapFactory#decodeResource(Resources, int, android.graphics.BitmapFactory.Options)}, + * and {@link BitmapFactory#decodeResourceStream} + * will fill in the density associated the Resources object's + * DisplayMetrics. The other + * functions will leave it as-is and no scaling for density will be + * performed. + * + * @see #inDensity + * @see #inScreenDensity + * @see #inScaled + * @see android.util.DisplayMetrics#densityDpi + */ + public int inTargetDensity; + + /** + * The pixel density of the actual screen that is being used. This is + * purely for applications running in density compatibility code, where + * {@link #inTargetDensity} is actually the density the application + * sees rather than the real screen density. + * + *

By setting this, you + * allow the loading code to avoid scaling a bitmap that is currently + * in the screen density up/down to the compatibility density. Instead, + * if {@link #inDensity} is the same as {@link #inScreenDensity}, the + * bitmap will be left as-is. Anything using the resulting bitmap + * must also used {@link Bitmap#getScaledWidth(int) + * Bitmap.getScaledWidth} and {@link Bitmap#getScaledHeight + * Bitmap.getScaledHeight} to account for any different between the + * bitmap's density and the target's density. + * + *

This is never set automatically for the caller by + * {@link BitmapFactory} itself. It must be explicitly set, since the + * caller must deal with the resulting bitmap in a density-aware way. + * + * @see #inDensity + * @see #inTargetDensity + * @see #inScaled + * @see android.util.DisplayMetrics#densityDpi + */ + public int inScreenDensity; + + /** + * When this flag is set, if {@link #inDensity} and + * {@link #inTargetDensity} are not 0, the + * bitmap will be scaled to match {@link #inTargetDensity} when loaded, + * rather than relying on the graphics system scaling it each time it + * is drawn to a Canvas. + * + *

BitmapRegionDecoder ignores this flag, and will not scale output + * based on density. (though {@link #inSampleSize} is supported)

+ * + *

This flag is turned on by default and should be turned off if you need + * a non-scaled version of the bitmap. Nine-patch bitmaps ignore this + * flag and are always scaled. + * + *

If {@link #inPremultiplied} is set to false, and the image has alpha, + * setting this flag to true may result in incorrect colors. + */ + public boolean inScaled; + + /** + * If this is set to true, then the resulting bitmap will allocate its + * pixels such that they can be purged if the system needs to reclaim + * memory. In that instance, when the pixels need to be accessed again + * (e.g. the bitmap is drawn, getPixels() is called), they will be + * automatically re-decoded. + * + *

For the re-decode to happen, the bitmap must have access to the + * encoded data, either by sharing a reference to the input + * or by making a copy of it. This distinction is controlled by + * inInputShareable. If this is true, then the bitmap may keep a shallow + * reference to the input. If this is false, then the bitmap will + * explicitly make a copy of the input data, and keep that. Even if + * sharing is allowed, the implementation may still decide to make a + * deep copy of the input data.

+ * + *

While inPurgeable can help avoid big Dalvik heap allocations (from + * API level 11 onward), it sacrifices performance predictability since any + * image that the view system tries to draw may incur a decode delay which + * can lead to dropped frames. Therefore, most apps should avoid using + * inPurgeable to allow for a fast and fluid UI. To minimize Dalvik heap + * allocations use the {@link #inBitmap} flag instead.

+ * + *

Note: This flag is ignored when used + * with {@link #decodeResource(Resources, int, + * android.graphics.BitmapFactory.Options)} or {@link #decodeFile(String, + * android.graphics.BitmapFactory.Options)}.

+ */ + public boolean inPurgeable; + + /** + * This field works in conjuction with inPurgeable. If inPurgeable is + * false, then this field is ignored. If inPurgeable is true, then this + * field determines whether the bitmap can share a reference to the + * input data (inputstream, array, etc.) or if it must make a deep copy. + */ + public boolean inInputShareable; + + /** + * If inPreferQualityOverSpeed is set to true, the decoder will try to + * decode the reconstructed image to a higher quality even at the + * expense of the decoding speed. Currently the field only affects JPEG + * decode, in the case of which a more accurate, but slightly slower, + * IDCT method will be used instead. + */ + public boolean inPreferQualityOverSpeed; + + /** + * The resulting width of the bitmap, set independent of the state of + * inJustDecodeBounds. However, if there is an error trying to decode, + * outWidth will be set to -1. + */ + + public int outWidth; + + /** + * The resulting height of the bitmap, set independent of the state of + * inJustDecodeBounds. However, if there is an error trying to decode, + * outHeight will be set to -1. + */ + public int outHeight; + + /** + * If known, this string is set to the mimetype of the decoded image. + * If not know, or there is an error, it is set to null. + */ + public String outMimeType; + + /** + * Temp storage to use for decoding. Suggest 16K or so. + */ + public byte[] inTempStorage; + + private native void requestCancel(); + + /** + * Flag to indicate that cancel has been called on this object. This + * is useful if there's an intermediary that wants to first decode the + * bounds and then decode the image. In that case the intermediary + * can check, inbetween the bounds decode and the image decode, to see + * if the operation is canceled. + */ + public boolean mCancel; + + /** + * This can be called from another thread while this options object is + * inside a decode... call. Calling this will notify the decoder that + * it should cancel its operation. This is not guaranteed to cancel + * the decode, but if it does, the decoder... operation will return + * null, or if inJustDecodeBounds is true, will set outWidth/outHeight + * to -1 + */ + public void requestCancelDecode() { + mCancel = true; + requestCancel(); + } + } + + /** + * Decode a file path into a bitmap. If the specified file name is null, + * or cannot be decoded into a bitmap, the function returns null. + * + * @param pathName complete path name for the file to be decoded. + * @param opts null-ok; Options that control downsampling and whether the + * image should be completely decoded, or just is size returned. + * @return The decoded bitmap, or null if the image data could not be + * decoded, or, if opts is non-null, if opts requested only the + * size be returned (in opts.outWidth and opts.outHeight) + */ + public static Bitmap decodeFile(String pathName, Options opts) { + Bitmap bm = null; + InputStream stream = null; + try { + stream = new FileInputStream(pathName); + bm = decodeStream(stream, null, opts); + } catch (Exception e) { + /* do nothing. + If the exception happened on open, bm will be null. + */ + Log.e("BitmapFactory", "Unable to decode stream: " + e); + } finally { + if (stream != null) { + try { + stream.close(); + } catch (IOException e) { + // do nothing here + } + } + } + return bm; + } + + /** + * Decode a file path into a bitmap. If the specified file name is null, + * or cannot be decoded into a bitmap, the function returns null. + * + * @param pathName complete path name for the file to be decoded. + * @return the resulting decoded bitmap, or null if it could not be decoded. + */ + public static Bitmap decodeFile(String pathName) { + return decodeFile(pathName, null); + } + + /** + * Decode a new Bitmap from an InputStream. This InputStream was obtained from + * resources, which we pass to be able to scale the bitmap accordingly. + */ + public static Bitmap decodeResourceStream(Resources res, TypedValue value, + InputStream is, Rect pad, Options opts) { + + if (opts == null) { + opts = new Options(); + } + + if (opts.inDensity == 0 && value != null) { + final int density = value.density; + if (density == TypedValue.DENSITY_DEFAULT) { + opts.inDensity = DisplayMetrics.DENSITY_DEFAULT; + } else if (density != TypedValue.DENSITY_NONE) { + opts.inDensity = density; + } + } + + if (opts.inTargetDensity == 0 && res != null) { + opts.inTargetDensity = res.getDisplayMetrics().densityDpi; + } + + return decodeStream(is, pad, opts); + } + + /** + * Synonym for opening the given resource and calling + * {@link #decodeResourceStream}. + * + * @param res The resources object containing the image data + * @param id The resource id of the image data + * @param opts null-ok; Options that control downsampling and whether the + * image should be completely decoded, or just is size returned. + * @return The decoded bitmap, or null if the image data could not be + * decoded, or, if opts is non-null, if opts requested only the + * size be returned (in opts.outWidth and opts.outHeight) + */ + public static Bitmap decodeResource(Resources res, int id, Options opts) { + String path = res.getString(id); + + return new Bitmap(path); + } + + /** + * Synonym for {@link #decodeResource(Resources, int, android.graphics.BitmapFactory.Options)} + * will null Options. + * + * @param res The resources object containing the image data + * @param id The resource id of the image data + * @return The decoded bitmap, or null if the image could not be decode. + */ + public static Bitmap decodeResource(Resources res, int id) { + return decodeResource(res, id, null); + } + + /** + * Decode an immutable bitmap from the specified byte array. + * + * @param data byte array of compressed image data + * @param offset offset into imageData for where the decoder should begin + * parsing. + * @param length the number of bytes, beginning at offset, to parse + * @param opts null-ok; Options that control downsampling and whether the + * image should be completely decoded, or just is size returned. + * @return The decoded bitmap, or null if the image data could not be + * decoded, or, if opts is non-null, if opts requested only the + * size be returned (in opts.outWidth and opts.outHeight) + */ + public static Bitmap decodeByteArray(byte[] data, int offset, int length, Options opts) { + if ((offset | length) < 0 || data.length < offset + length) { + throw new ArrayIndexOutOfBoundsException(); + } + + Bitmap bm; + + Trace.traceBegin(Trace.TRACE_TAG_GRAPHICS, "decodeBitmap"); + try { + bm = nativeDecodeByteArray(data, offset, length, opts); + + if (bm == null && opts != null && opts.inBitmap != null) { + throw new IllegalArgumentException("Problem decoding into existing bitmap"); + } + setDensityFromOptions(bm, opts); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS); + } + + return bm; + } + + /** + * Decode an immutable bitmap from the specified byte array. + * + * @param data byte array of compressed image data + * @param offset offset into imageData for where the decoder should begin + * parsing. + * @param length the number of bytes, beginning at offset, to parse + * @return The decoded bitmap, or null if the image could not be decode. + */ + public static Bitmap decodeByteArray(byte[] data, int offset, int length) { + return decodeByteArray(data, offset, length, null); + } + + /** + * Set the newly decoded bitmap's density based on the Options. + */ + private static void setDensityFromOptions(Bitmap outputBitmap, Options opts) {/* + if (outputBitmap == null || opts == null) return; + + final int density = opts.inDensity; + if (density != 0) { + outputBitmap.setDensity(density); + final int targetDensity = opts.inTargetDensity; + if (targetDensity == 0 || density == targetDensity || density == opts.inScreenDensity) { + return; + } + + byte[] np = outputBitmap.getNinePatchChunk(); + final boolean isNinePatch = np != null && NinePatch.isNinePatchChunk(np); + if (opts.inScaled || isNinePatch) { + outputBitmap.setDensity(targetDensity); + } + } else if (opts.inBitmap != null) { + // bitmap was reused, ensure density is reset + outputBitmap.setDensity(Bitmap.getDefaultDensity()); + } + */} + + /** + * Decode an input stream into a bitmap. If the input stream is null, or + * cannot be used to decode a bitmap, the function returns null. + * The stream's position will be where ever it was after the encoded data + * was read. + * + * @param is The input stream that holds the raw data to be decoded into a + * bitmap. + * @param outPadding If not null, return the padding rect for the bitmap if + * it exists, otherwise set padding to [-1,-1,-1,-1]. If + * no bitmap is returned (null) then padding is + * unchanged. + * @param opts null-ok; Options that control downsampling and whether the + * image should be completely decoded, or just is size returned. + * @return The decoded bitmap, or null if the image data could not be + * decoded, or, if opts is non-null, if opts requested only the + * size be returned (in opts.outWidth and opts.outHeight) + * + *

Prior to {@link android.os.Build.VERSION_CODES#KITKAT}, + * if {@link InputStream#markSupported is.markSupported()} returns true, + * is.mark(1024) would be called. As of + * {@link android.os.Build.VERSION_CODES#KITKAT}, this is no longer the case.

+ */ + public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts) { + // we don't throw in this case, thus allowing the caller to only check + // the cache, and not force the image to be decoded. + if (is == null) { + return null; + } + + Bitmap bm = null; + + Trace.traceBegin(Trace.TRACE_TAG_GRAPHICS, "decodeBitmap"); + try { + if (is instanceof AssetManager.AssetInputStream) { + final int asset = ((AssetManager.AssetInputStream) is).getAssetInt(); + bm = nativeDecodeAsset(asset, outPadding, opts); + } else { + bm = decodeStreamInternal(is, outPadding, opts); + } + + if (bm == null && opts != null && opts.inBitmap != null) { + throw new IllegalArgumentException("Problem decoding into existing bitmap"); + } + + setDensityFromOptions(bm, opts); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS); + } + + return bm; + } + + /** + * Private helper function for decoding an InputStream natively. Buffers the input enough to + * do a rewind as needed, and supplies temporary storage if necessary. is MUST NOT be null. + */ + private static Bitmap decodeStreamInternal(InputStream is, Rect outPadding, Options opts) { + // ASSERT(is != null); + byte [] tempStorage = null; + if (opts != null) tempStorage = opts.inTempStorage; + if (tempStorage == null) tempStorage = new byte[DECODE_BUFFER_SIZE]; + return nativeDecodeStream(is, tempStorage, outPadding, opts); + } + + /** + * Decode an input stream into a bitmap. If the input stream is null, or + * cannot be used to decode a bitmap, the function returns null. + * The stream's position will be where ever it was after the encoded data + * was read. + * + * @param is The input stream that holds the raw data to be decoded into a + * bitmap. + * @return The decoded bitmap, or null if the image data could not be decoded. + */ + public static Bitmap decodeStream(InputStream is) { + return decodeStream(is, null, null); + } + + /** + * Decode a bitmap from the file descriptor. If the bitmap cannot be decoded + * return null. The position within the descriptor will not be changed when + * this returns, so the descriptor can be used again as-is. + * + * @param fd The file descriptor containing the bitmap data to decode + * @param outPadding If not null, return the padding rect for the bitmap if + * it exists, otherwise set padding to [-1,-1,-1,-1]. If + * no bitmap is returned (null) then padding is + * unchanged. + * @param opts null-ok; Options that control downsampling and whether the + * image should be completely decoded, or just its size returned. + * @return the decoded bitmap, or null + */ + public static Bitmap decodeFileDescriptor(FileDescriptor fd, Rect outPadding, Options opts) { + Bitmap bm; + + Trace.traceBegin(Trace.TRACE_TAG_GRAPHICS, "decodeFileDescriptor"); + try { + if (nativeIsSeekable(fd)) { + bm = nativeDecodeFileDescriptor(fd, outPadding, opts); + } else { + FileInputStream fis = new FileInputStream(fd); + try { + bm = decodeStreamInternal(fis, outPadding, opts); + } finally { + try { + fis.close(); + } catch (Throwable t) {/* ignore */} + } + } + + if (bm == null && opts != null && opts.inBitmap != null) { + throw new IllegalArgumentException("Problem decoding into existing bitmap"); + } + + setDensityFromOptions(bm, opts); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS); + } + return bm; + } + + /** + * Decode a bitmap from the file descriptor. If the bitmap cannot be decoded + * return null. The position within the descriptor will not be changed when + * this returns, so the descriptor can be used again as is. + * + * @param fd The file descriptor containing the bitmap data to decode + * @return the decoded bitmap, or null + */ + public static Bitmap decodeFileDescriptor(FileDescriptor fd) { + return decodeFileDescriptor(fd, null, null); + } + + private static native Bitmap nativeDecodeStream(InputStream is, byte[] storage, + Rect padding, Options opts); + private static native Bitmap nativeDecodeFileDescriptor(FileDescriptor fd, + Rect padding, Options opts); + private static native Bitmap nativeDecodeAsset(int asset, Rect padding, Options opts); + private static native Bitmap nativeDecodeByteArray(byte[] data, int offset, + int length, Options opts); + private static native boolean nativeIsSeekable(FileDescriptor fd); +} diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java new file mode 100644 index 00000000..87df5181 --- /dev/null +++ b/src/api-impl/android/graphics/Canvas.java @@ -0,0 +1,372 @@ +package android.graphics; + +public class Canvas { + public long cairo_context; + public long widget; + + public Canvas() {} + + public Canvas(long cairo_context, long widget) { + this.cairo_context = cairo_context; + this.widget = widget; + } + + // FIXME: are these _needed_ ? + + public int save() { + native_save(cairo_context, widget); + return -1; // FIXME: wtf should we return + } + public void restore() { + native_restore(cairo_context, widget); + } + + private static native void native_save(long cairo_context, long widget); + private static native void native_restore(long cairo_context, long widget); + +// --- + + /** + * Draw the specified Rect using the specified paint. The rectangle will + * be filled or framed based on the Style in the paint. + * + * @param rect The rect to be drawn + * @param paint The paint used to draw the rect + */ + public void drawRect(RectF rect, Paint paint) { +// native_drawRect(mNativeCanvas, rect, paint.mNativePaint); + } + + /** + * Draw the specified Rect using the specified Paint. The rectangle + * will be filled or framed based on the Style in the paint. + * + * @param r The rectangle to be drawn. + * @param paint The paint used to draw the rectangle + */ + public void drawRect(Rect r, Paint paint) { + drawRect(r.left, r.top, r.right, r.bottom, paint); + } + + + /** + * Draw the specified Rect using the specified paint. The rectangle will + * be filled or framed based on the Style in the paint. + * + * @param left The left side of the rectangle to be drawn + * @param top The top side of the rectangle to be drawn + * @param right The right side of the rectangle to be drawn + * @param bottom The bottom side of the rectangle to be drawn + * @param paint The paint used to draw the rect + */ + public void drawRect(float left, float top, float right, float bottom, Paint paint) { +// native_drawRect(mNativeCanvas, left, top, right, bottom, paint.mNativePaint); + } + +// --- + /** + * Preconcat the current matrix with the specified rotation. + * + * @param degrees The amount to rotate, in degrees + */ + public void rotate(float degrees) { + native_rotate(cairo_context, widget, degrees); + } + + /** + * Preconcat the current matrix with the specified rotation. + * + * @param degrees The amount to rotate, in degrees + * @param px The x-coord for the pivot point (unchanged by the rotation) + * @param py The y-coord for the pivot point (unchanged by the rotation) + */ + public final void rotate(float degrees, float px, float py) { + native_rotate_and_translate(cairo_context, widget, degrees, px, py); + } +// --- + /** + * Draw the text, with origin at (x,y), using the specified paint. The + * origin is interpreted based on the Align setting in the paint. + * + * @param text The text to be drawn + * @param x The x-coordinate of the origin of the text being drawn + * @param y The y-coordinate of the origin of the text being drawn + * @param paint The paint used for the text (e.g. color, size, style) + */ + public void drawText(String text, float x, float y, Paint paint) { +/* native_drawText(mNativeCanvas, text, 0, text.length(), x, y, paint.mBidiFlags, + paint.mNativePaint);*/ + } + + /** + * Draw the text, with origin at (x,y), using the specified paint. + * The origin is interpreted based on the Align setting in the paint. + * + * @param text The text to be drawn + * @param start The index of the first character in text to draw + * @param end (end - 1) is the index of the last character in text to draw + * @param x The x-coordinate of the origin of the text being drawn + * @param y The y-coordinate of the origin of the text being drawn + * @param paint The paint used for the text (e.g. color, size, style) + */ + public void drawText(String text, int start, int end, float x, float y, Paint paint) { + /* if ((start | end | (end - start) | (text.length() - end)) < 0) { + throw new IndexOutOfBoundsException(); + } + native_drawText(mNativeCanvas, text, start, end, x, y, paint.mBidiFlags, + paint.mNativePaint);*/ + } + + /** + * Draw the specified range of text, specified by start/end, with its + * origin at (x,y), in the specified Paint. The origin is interpreted + * based on the Align setting in the Paint. + * + * @param text The text to be drawn + * @param start The index of the first character in text to draw + * @param end (end - 1) is the index of the last character in text + * to draw + * @param x The x-coordinate of origin for where to draw the text + * @param y The y-coordinate of origin for where to draw the text + * @param paint The paint used for the text (e.g. color, size, style) + */ + public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) { + /*if (text instanceof String || text instanceof SpannedString || + text instanceof SpannableString) { + native_drawText(mNativeCanvas, text.toString(), start, end, x, y, + paint.mBidiFlags, paint.mNativePaint); + } else if (text instanceof GraphicsOperations) { + ((GraphicsOperations) text).drawText(this, start, end, x, y, + paint); + } else { + char[] buf = TemporaryBuffer.obtain(end - start); + TextUtils.getChars(text, start, end, buf, 0); + native_drawText(mNativeCanvas, buf, 0, end - start, x, y, + paint.mBidiFlags, paint.mNativePaint); + TemporaryBuffer.recycle(buf); + }*/ + } +// --- + /** + *

Draw the specified arc, which will be scaled to fit inside the + * specified oval.

+ * + *

If the start angle is negative or >= 360, the start angle is treated + * as start angle modulo 360.

+ * + *

If the sweep angle is >= 360, then the oval is drawn + * completely. Note that this differs slightly from SkPath::arcTo, which + * treats the sweep angle modulo 360. If the sweep angle is negative, + * the sweep angle is treated as sweep angle modulo 360

+ * + *

The arc is drawn clockwise. An angle of 0 degrees correspond to the + * geometric angle of 0 degrees (3 o'clock on a watch.)

+ * + * @param oval The bounds of oval used to define the shape and size + * of the arc + * @param startAngle Starting angle (in degrees) where the arc begins + * @param sweepAngle Sweep angle (in degrees) measured clockwise + * @param useCenter If true, include the center of the oval in the arc, and + close it if it is being stroked. This will draw a wedge + * @param paint The paint used to draw the arc + */ + public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, + Paint paint) { + if (oval == null) { + throw new NullPointerException(); + } + /*native_drawArc(mNativeCanvas, oval, startAngle, sweepAngle, + useCenter, paint.mNativePaint);*/ + } +// --- + /** + * Preconcat the current matrix with the specified scale. + * + * @param sx The amount to scale in X + * @param sy The amount to scale in Y + */ + public /*native*/ void scale(float sx, float sy) {} + + /** + * Preconcat the current matrix with the specified scale. + * + * @param sx The amount to scale in X + * @param sy The amount to scale in Y + * @param px The x-coord for the pivot point (unchanged by the scale) + * @param py The y-coord for the pivot point (unchanged by the scale) + */ + public final void scale(float sx, float sy, float px, float py) { + /*translate(px, py); + scale(sx, sy); + translate(-px, -py);*/ + } +// --- + /** + * Draw the specified bitmap, with its top/left corner at (x,y), using + * the specified paint, transformed by the current matrix. + * + *

Note: if the paint contains a maskfilter that generates a mask which + * extends beyond the bitmap's original width/height (e.g. BlurMaskFilter), + * then the bitmap will be drawn as if it were in a Shader with CLAMP mode. + * Thus the color outside of the original width/height will be the edge + * color replicated. + * + *

If the bitmap and canvas have different densities, this function + * will take care of automatically scaling the bitmap to draw at the + * same density as the canvas. + * + * @param bitmap The bitmap to be drawn + * @param left The position of the left side of the bitmap being drawn + * @param top The position of the top side of the bitmap being drawn + * @param paint The paint used to draw the bitmap (may be null) + */ + public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {/* + native_drawBitmap(mNativeCanvas, bitmap.ni(), left, top, paint != null ? paint.mNativePaint : 0, mDensity, mScreenDensity, bitmap.mDensity); + */} + + /** + * Draw the specified bitmap, scaling/translating automatically to fill + * the destination rectangle. If the source rectangle is not null, it + * specifies the subset of the bitmap to draw. + * + *

Note: if the paint contains a maskfilter that generates a mask which + * extends beyond the bitmap's original width/height (e.g. BlurMaskFilter), + * then the bitmap will be drawn as if it were in a Shader with CLAMP mode. + * Thus the color outside of the original width/height will be the edge + * color replicated. + * + *

This function ignores the density associated with the bitmap. + * This is because the source and destination rectangle coordinate + * spaces are in their respective densities, so must already have the + * appropriate scaling factor applied. + * + * @param bitmap The bitmap to be drawn + * @param src May be null. The subset of the bitmap to be drawn + * @param dst The rectangle that the bitmap will be scaled/translated + * to fit into + * @param paint May be null. The paint used to draw the bitmap + */ + public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) { + if (dst == null) { + throw new NullPointerException(); + } + native_drawBitmap(cairo_context, widget, bitmap.pixbuf, src.left, src.top, dst.left, dst.top, paint); // FIXME - ignores width/height + } + + /** + * Draw the specified bitmap, scaling/translating automatically to fill + * the destination rectangle. If the source rectangle is not null, it + * specifies the subset of the bitmap to draw. + * + *

Note: if the paint contains a maskfilter that generates a mask which + * extends beyond the bitmap's original width/height (e.g. BlurMaskFilter), + * then the bitmap will be drawn as if it were in a Shader with CLAMP mode. + * Thus the color outside of the original width/height will be the edge + * color replicated. + * + *

This function ignores the density associated with the bitmap. + * This is because the source and destination rectangle coordinate + * spaces are in their respective densities, so must already have the + * appropriate scaling factor applied. + * + * @param bitmap The bitmap to be drawn + * @param src May be null. The subset of the bitmap to be drawn + * @param dst The rectangle that the bitmap will be scaled/translated + * to fit into + * @param paint May be null. The paint used to draw the bitmap + */ + public void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) {/* + if (dst == null) { + throw new NullPointerException(); + } + native_drawBitmap(mNativeCanvas, bitmap.ni(), src, dst, paint != null ? paint.mNativePaint : 0, mScreenDensity, bitmap.mDensity); + */} + + /** + * Treat the specified array of colors as a bitmap, and draw it. This gives + * the same result as first creating a bitmap from the array, and then + * drawing it, but this method avoids explicitly creating a bitmap object + * which can be more efficient if the colors are changing often. + * + * @param colors Array of colors representing the pixels of the bitmap + * @param offset Offset into the array of colors for the first pixel + * @param stride The number of colors in the array between rows (must be + * >= width or <= -width). + * @param x The X coordinate for where to draw the bitmap + * @param y The Y coordinate for where to draw the bitmap + * @param width The width of the bitmap + * @param height The height of the bitmap + * @param hasAlpha True if the alpha channel of the colors contains valid + * values. If false, the alpha byte is ignored (assumed to + * be 0xFF for every pixel). + * @param paint May be null. The paint used to draw the bitmap + */ + public void drawBitmap(int[] colors, int offset, int stride, float x, float y, + int width, int height, boolean hasAlpha, Paint paint) { +/* // check for valid input + if (width < 0) { + throw new IllegalArgumentException("width must be >= 0"); + } + if (height < 0) { + throw new IllegalArgumentException("height must be >= 0"); + } + if (Math.abs(stride) < width) { + throw new IllegalArgumentException("abs(stride) must be >= width"); + } + int lastScanline = offset + (height - 1) * stride; + int length = colors.length; + if (offset < 0 || (offset + width > length) || lastScanline < 0 + || (lastScanline + width > length)) { + throw new ArrayIndexOutOfBoundsException(); + } + // quick escape if there's nothing to draw + if (width == 0 || height == 0) { + return; + } + // punch down to native for the actual draw + native_drawBitmap(mNativeCanvas, colors, offset, stride, x, y, width, height, hasAlpha, + paint != null ? paint.mNativePaint : 0);*/ + } + + /** Legacy version of drawBitmap(int[] colors, ...) that took ints for x,y + */ + public void drawBitmap(int[] colors, int offset, int stride, int x, int y, + int width, int height, boolean hasAlpha, Paint paint) { + // call through to the common float version + drawBitmap(colors, offset, stride, (float)x, (float)y, width, height, + hasAlpha, paint); + } + + /** + * Draw the bitmap using the specified matrix. + * + * @param bitmap The bitmap to draw + * @param matrix The matrix used to transform the bitmap when it is drawn + * @param paint May be null. The paint used to draw the bitmap + */ + public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) { + /* nativeDrawBitmapMatrix(mNativeCanvas, bitmap.ni(), matrix.ni(), + paint != null ? paint.mNativePaint : 0);*/ + } +// --- + /** + * Draw a line segment with the specified start and stop x,y coordinates, + * using the specified paint. + * + *

Note that since a line is always "framed", the Style is ignored in the paint.

+ * + *

Degenerate lines (length is 0) will not be drawn.

+ * + * @param startX The x-coordinate of the start point of the line + * @param startY The y-coordinate of the start point of the line + * @param paint The paint used to draw the line + */ + public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { + native_drawLine(cairo_context, widget, startX, startY, stopX, stopY, paint.getColor()); + } + + private static native void native_drawLine(long cairo_context, long widget, float startX, float startY, float stopX, float stopY, int paint_color); // TODO: pass all the other relevant parameters extracted from paint + private static native void native_drawBitmap(long cairo_context, long widget, long pixbuf, float src_x, float src_y, float dest_x, float dest_y, Paint paint); // TODO: make use of "paint"? + private static native void native_rotate(long cairo_context, long widget, float angle); + private static native void native_rotate_and_translate(long cairo_context, long widget, float angle, float tx, float ty); +} diff --git a/src/api-impl/android/graphics/Matrix.java b/src/api-impl/android/graphics/Matrix.java new file mode 100644 index 00000000..fb62a933 --- /dev/null +++ b/src/api-impl/android/graphics/Matrix.java @@ -0,0 +1,784 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.graphics; +import java.io.PrintWriter; +/** + * The Matrix class holds a 3x3 matrix for transforming coordinates. + */ +public class Matrix { + public static final int MSCALE_X = 0; //!< use with getValues/setValues + public static final int MSKEW_X = 1; //!< use with getValues/setValues + public static final int MTRANS_X = 2; //!< use with getValues/setValues + public static final int MSKEW_Y = 3; //!< use with getValues/setValues + public static final int MSCALE_Y = 4; //!< use with getValues/setValues + public static final int MTRANS_Y = 5; //!< use with getValues/setValues + public static final int MPERSP_0 = 6; //!< use with getValues/setValues + public static final int MPERSP_1 = 7; //!< use with getValues/setValues + public static final int MPERSP_2 = 8; //!< use with getValues/setValues + /** @hide */ + public static Matrix IDENTITY_MATRIX = new Matrix() { + void oops() { + throw new IllegalStateException("Matrix can not be modified"); + } + @Override + public void set(Matrix src) { + oops(); + } + @Override + public void reset() { + oops(); + } + @Override + public void setTranslate(float dx, float dy) { + oops(); + } + @Override + public void setScale(float sx, float sy, float px, float py) { + oops(); + } + @Override + public void setScale(float sx, float sy) { + oops(); + } + @Override + public void setRotate(float degrees, float px, float py) { + oops(); + } + @Override + public void setRotate(float degrees) { + oops(); + } + @Override + public void setSinCos(float sinValue, float cosValue, float px, float py) { + oops(); + } + @Override + public void setSinCos(float sinValue, float cosValue) { + oops(); + } + @Override + public void setSkew(float kx, float ky, float px, float py) { + oops(); + } + @Override + public void setSkew(float kx, float ky) { + oops(); + } + @Override + public boolean setConcat(Matrix a, Matrix b) { + oops(); + return false; + } + @Override + public boolean preTranslate(float dx, float dy) { + oops(); + return false; + } + @Override + public boolean preScale(float sx, float sy, float px, float py) { + oops(); + return false; + } + @Override + public boolean preScale(float sx, float sy) { + oops(); + return false; + } + @Override + public boolean preRotate(float degrees, float px, float py) { + oops(); + return false; + } + @Override + public boolean preRotate(float degrees) { + oops(); + return false; + } + @Override + public boolean preSkew(float kx, float ky, float px, float py) { + oops(); + return false; + } + @Override + public boolean preSkew(float kx, float ky) { + oops(); + return false; + } + @Override + public boolean preConcat(Matrix other) { + oops(); + return false; + } + @Override + public boolean postTranslate(float dx, float dy) { + oops(); + return false; + } + @Override + public boolean postScale(float sx, float sy, float px, float py) { + oops(); + return false; + } + @Override + public boolean postScale(float sx, float sy) { + oops(); + return false; + } + @Override + public boolean postRotate(float degrees, float px, float py) { + oops(); + return false; + } + @Override + public boolean postRotate(float degrees) { + oops(); + return false; + } + @Override + public boolean postSkew(float kx, float ky, float px, float py) { + oops(); + return false; + } + @Override + public boolean postSkew(float kx, float ky) { + oops(); + return false; + } + @Override + public boolean postConcat(Matrix other) { + oops(); + return false; + } + @Override + public boolean setRectToRect(RectF src, RectF dst, ScaleToFit stf) { + oops(); + return false; + } + @Override + public boolean setPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex, + int pointCount) { + oops(); + return false; + } + @Override + public void setValues(float[] values) { + oops(); + } + }; + /** + * @hide + */ + public int native_instance; + /** + * Create an identity matrix + */ + public Matrix() { + native_instance = native_create(0); + } + /** + * Create a matrix that is a (deep) copy of src + * @param src The matrix to copy into this matrix + */ + public Matrix(Matrix src) { + native_instance = native_create(src != null ? src.native_instance : 0); + } + /** + * Returns true if the matrix is identity. + * This maybe faster than testing if (getType() == 0) + */ + public boolean isIdentity() { + return native_isIdentity(native_instance); + } + /** + * Returns true if will map a rectangle to another rectangle. This can be + * true if the matrix is identity, scale-only, or rotates a multiple of 90 + * degrees. + */ + public boolean rectStaysRect() { + return native_rectStaysRect(native_instance); + } + /** + * (deep) copy the src matrix into this matrix. If src is null, reset this + * matrix to the identity matrix. + */ + public void set(Matrix src) { + if (src == null) { + reset(); + } else { + native_set(native_instance, src.native_instance); + } + } + /** Returns true iff obj is a Matrix and its values equal our values. + */ + @Override + public boolean equals(Object obj) { + //if (obj == this) return true; -- NaN value would mean matrix != itself + if (!(obj instanceof Matrix)) return false; + return native_equals(native_instance, ((Matrix)obj).native_instance); + } + @Override + public int hashCode() { + // This should generate the hash code by performing some arithmetic operation on all + // the matrix elements -- our equals() does an element-by-element comparison, and we + // need to ensure that the hash code for two equal objects is the same. We're not + // really using this at the moment, so we take the easy way out. + return 44; + } + /** Set the matrix to identity */ + public void reset() { + native_reset(native_instance); + } + /** Set the matrix to translate by (dx, dy). */ + public void setTranslate(float dx, float dy) { + native_setTranslate(native_instance, dx, dy); + } + /** + * Set the matrix to scale by sx and sy, with a pivot point at (px, py). + * The pivot point is the coordinate that should remain unchanged by the + * specified transformation. + */ + public void setScale(float sx, float sy, float px, float py) { + native_setScale(native_instance, sx, sy, px, py); + } + /** Set the matrix to scale by sx and sy. */ + public void setScale(float sx, float sy) { + native_setScale(native_instance, sx, sy); + } + /** + * Set the matrix to rotate by the specified number of degrees, with a pivot + * point at (px, py). The pivot point is the coordinate that should remain + * unchanged by the specified transformation. + */ + public void setRotate(float degrees, float px, float py) { + native_setRotate(native_instance, degrees, px, py); + } + /** + * Set the matrix to rotate about (0,0) by the specified number of degrees. + */ + public void setRotate(float degrees) { + native_setRotate(native_instance, degrees); + } + /** + * Set the matrix to rotate by the specified sine and cosine values, with a + * pivot point at (px, py). The pivot point is the coordinate that should + * remain unchanged by the specified transformation. + */ + public void setSinCos(float sinValue, float cosValue, float px, float py) { + native_setSinCos(native_instance, sinValue, cosValue, px, py); + } + /** Set the matrix to rotate by the specified sine and cosine values. */ + public void setSinCos(float sinValue, float cosValue) { + native_setSinCos(native_instance, sinValue, cosValue); + } + /** + * Set the matrix to skew by sx and sy, with a pivot point at (px, py). + * The pivot point is the coordinate that should remain unchanged by the + * specified transformation. + */ + public void setSkew(float kx, float ky, float px, float py) { + native_setSkew(native_instance, kx, ky, px, py); + } + /** Set the matrix to skew by sx and sy. */ + public void setSkew(float kx, float ky) { + native_setSkew(native_instance, kx, ky); + } + /** + * Set the matrix to the concatenation of the two specified matrices, + * returning true if the the result can be represented. Either of the two + * matrices may also be the target matrix. this = a * b + */ + public boolean setConcat(Matrix a, Matrix b) { + return native_setConcat(native_instance, a.native_instance, + b.native_instance); + } + /** + * Preconcats the matrix with the specified translation. + * M' = M * T(dx, dy) + */ + public boolean preTranslate(float dx, float dy) { + return native_preTranslate(native_instance, dx, dy); + } + /** + * Preconcats the matrix with the specified scale. + * M' = M * S(sx, sy, px, py) + */ + public boolean preScale(float sx, float sy, float px, float py) { + return native_preScale(native_instance, sx, sy, px, py); + } + /** + * Preconcats the matrix with the specified scale. + * M' = M * S(sx, sy) + */ + public boolean preScale(float sx, float sy) { + return native_preScale(native_instance, sx, sy); + } + /** + * Preconcats the matrix with the specified rotation. + * M' = M * R(degrees, px, py) + */ + public boolean preRotate(float degrees, float px, float py) { + return native_preRotate(native_instance, degrees, px, py); + } + /** + * Preconcats the matrix with the specified rotation. + * M' = M * R(degrees) + */ + public boolean preRotate(float degrees) { + return native_preRotate(native_instance, degrees); + } + /** + * Preconcats the matrix with the specified skew. + * M' = M * K(kx, ky, px, py) + */ + public boolean preSkew(float kx, float ky, float px, float py) { + return native_preSkew(native_instance, kx, ky, px, py); + } + /** + * Preconcats the matrix with the specified skew. + * M' = M * K(kx, ky) + */ + public boolean preSkew(float kx, float ky) { + return native_preSkew(native_instance, kx, ky); + } + /** + * Preconcats the matrix with the specified matrix. + * M' = M * other + */ + public boolean preConcat(Matrix other) { + return native_preConcat(native_instance, other.native_instance); + } + /** + * Postconcats the matrix with the specified translation. + * M' = T(dx, dy) * M + */ + public boolean postTranslate(float dx, float dy) { + return native_postTranslate(native_instance, dx, dy); + } + /** + * Postconcats the matrix with the specified scale. + * M' = S(sx, sy, px, py) * M + */ + public boolean postScale(float sx, float sy, float px, float py) { + return native_postScale(native_instance, sx, sy, px, py); + } + /** + * Postconcats the matrix with the specified scale. + * M' = S(sx, sy) * M + */ + public boolean postScale(float sx, float sy) { + return native_postScale(native_instance, sx, sy); + } + /** + * Postconcats the matrix with the specified rotation. + * M' = R(degrees, px, py) * M + */ + public boolean postRotate(float degrees, float px, float py) { + return native_postRotate(native_instance, degrees, px, py); + } + /** + * Postconcats the matrix with the specified rotation. + * M' = R(degrees) * M + */ + public boolean postRotate(float degrees) { + return native_postRotate(native_instance, degrees); + } + /** + * Postconcats the matrix with the specified skew. + * M' = K(kx, ky, px, py) * M + */ + public boolean postSkew(float kx, float ky, float px, float py) { + return native_postSkew(native_instance, kx, ky, px, py); + } + /** + * Postconcats the matrix with the specified skew. + * M' = K(kx, ky) * M + */ + public boolean postSkew(float kx, float ky) { + return native_postSkew(native_instance, kx, ky); + } + /** + * Postconcats the matrix with the specified matrix. + * M' = other * M + */ + public boolean postConcat(Matrix other) { + return native_postConcat(native_instance, other.native_instance); + } + /** Controlls how the src rect should align into the dst rect for + setRectToRect(). + */ + public enum ScaleToFit { + /** + * Scale in X and Y independently, so that src matches dst exactly. + * This may change the aspect ratio of the src. + */ + FILL (0), + /** + * Compute a scale that will maintain the original src aspect ratio, + * but will also ensure that src fits entirely inside dst. At least one + * axis (X or Y) will fit exactly. START aligns the result to the + * left and top edges of dst. + */ + START (1), + /** + * Compute a scale that will maintain the original src aspect ratio, + * but will also ensure that src fits entirely inside dst. At least one + * axis (X or Y) will fit exactly. The result is centered inside dst. + */ + CENTER (2), + /** + * Compute a scale that will maintain the original src aspect ratio, + * but will also ensure that src fits entirely inside dst. At least one + * axis (X or Y) will fit exactly. END aligns the result to the + * right and bottom edges of dst. + */ + END (3); + // the native values must match those in SkMatrix.h + ScaleToFit(int nativeInt) { + this.nativeInt = nativeInt; + } + final int nativeInt; + } + /** + * Set the matrix to the scale and translate values that map the source + * rectangle to the destination rectangle, returning true if the the result + * can be represented. + * + * @param src the source rectangle to map from. + * @param dst the destination rectangle to map to. + * @param stf the ScaleToFit option + * @return true if the matrix can be represented by the rectangle mapping. + */ + public boolean setRectToRect(RectF src, RectF dst, ScaleToFit stf) { + if (dst == null || src == null) { + throw new NullPointerException(); + } + return native_setRectToRect(native_instance, src, dst, stf.nativeInt); + } + // private helper to perform range checks on arrays of "points" + private static void checkPointArrays(float[] src, int srcIndex, + float[] dst, int dstIndex, + int pointCount) { + // check for too-small and too-big indices + int srcStop = srcIndex + (pointCount << 1); + int dstStop = dstIndex + (pointCount << 1); + if ((pointCount | srcIndex | dstIndex | srcStop | dstStop) < 0 || + srcStop > src.length || dstStop > dst.length) { + throw new ArrayIndexOutOfBoundsException(); + } + } + /** + * Set the matrix such that the specified src points would map to the + * specified dst points. The "points" are represented as an array of floats, + * order [x0, y0, x1, y1, ...], where each "point" is 2 float values. + * + * @param src The array of src [x,y] pairs (points) + * @param srcIndex Index of the first pair of src values + * @param dst The array of dst [x,y] pairs (points) + * @param dstIndex Index of the first pair of dst values + * @param pointCount The number of pairs/points to be used. Must be [0..4] + * @return true if the matrix was set to the specified transformation + */ + public boolean setPolyToPoly(float[] src, int srcIndex, + float[] dst, int dstIndex, + int pointCount) { + if (pointCount > 4) { + throw new IllegalArgumentException(); + } + checkPointArrays(src, srcIndex, dst, dstIndex, pointCount); + return native_setPolyToPoly(native_instance, src, srcIndex, + dst, dstIndex, pointCount); + } + /** + * If this matrix can be inverted, return true and if inverse is not null, + * set inverse to be the inverse of this matrix. If this matrix cannot be + * inverted, ignore inverse and return false. + */ + public boolean invert(Matrix inverse) { + return native_invert(native_instance, inverse.native_instance); + } + /** + * Apply this matrix to the array of 2D points specified by src, and write + * the transformed points into the array of points specified by dst. The + * two arrays represent their "points" as pairs of floats [x, y]. + * + * @param dst The array of dst points (x,y pairs) + * @param dstIndex The index of the first [x,y] pair of dst floats + * @param src The array of src points (x,y pairs) + * @param srcIndex The index of the first [x,y] pair of src floats + * @param pointCount The number of points (x,y pairs) to transform + */ + public void mapPoints(float[] dst, int dstIndex, float[] src, int srcIndex, + int pointCount) { + checkPointArrays(src, srcIndex, dst, dstIndex, pointCount); + native_mapPoints(native_instance, dst, dstIndex, src, srcIndex, + pointCount, true); + } + /** + * Apply this matrix to the array of 2D vectors specified by src, and write + * the transformed vectors into the array of vectors specified by dst. The + * two arrays represent their "vectors" as pairs of floats [x, y]. + * + * Note: this method does not apply the translation associated with the matrix. Use + * {@link Matrix#mapPoints(float[], int, float[], int, int)} if you want the translation + * to be applied. + * + * @param dst The array of dst vectors (x,y pairs) + * @param dstIndex The index of the first [x,y] pair of dst floats + * @param src The array of src vectors (x,y pairs) + * @param srcIndex The index of the first [x,y] pair of src floats + * @param vectorCount The number of vectors (x,y pairs) to transform + */ + public void mapVectors(float[] dst, int dstIndex, float[] src, int srcIndex, + int vectorCount) { + checkPointArrays(src, srcIndex, dst, dstIndex, vectorCount); + native_mapPoints(native_instance, dst, dstIndex, src, srcIndex, + vectorCount, false); + } + /** + * Apply this matrix to the array of 2D points specified by src, and write + * the transformed points into the array of points specified by dst. The + * two arrays represent their "points" as pairs of floats [x, y]. + * + * @param dst The array of dst points (x,y pairs) + * @param src The array of src points (x,y pairs) + */ + public void mapPoints(float[] dst, float[] src) { + if (dst.length != src.length) { + throw new ArrayIndexOutOfBoundsException(); + } + mapPoints(dst, 0, src, 0, dst.length >> 1); + } + /** + * Apply this matrix to the array of 2D vectors specified by src, and write + * the transformed vectors into the array of vectors specified by dst. The + * two arrays represent their "vectors" as pairs of floats [x, y]. + * + * Note: this method does not apply the translation associated with the matrix. Use + * {@link Matrix#mapPoints(float[], float[])} if you want the translation to be applied. + * + * @param dst The array of dst vectors (x,y pairs) + * @param src The array of src vectors (x,y pairs) + */ + public void mapVectors(float[] dst, float[] src) { + if (dst.length != src.length) { + throw new ArrayIndexOutOfBoundsException(); + } + mapVectors(dst, 0, src, 0, dst.length >> 1); + } + /** + * Apply this matrix to the array of 2D points, and write the transformed + * points back into the array + * + * @param pts The array [x0, y0, x1, y1, ...] of points to transform. + */ + public void mapPoints(float[] pts) { + mapPoints(pts, 0, pts, 0, pts.length >> 1); + } + /** + * Apply this matrix to the array of 2D vectors, and write the transformed + * vectors back into the array. + * + * Note: this method does not apply the translation associated with the matrix. Use + * {@link Matrix#mapPoints(float[])} if you want the translation to be applied. + * + * @param vecs The array [x0, y0, x1, y1, ...] of vectors to transform. + */ + public void mapVectors(float[] vecs) { + mapVectors(vecs, 0, vecs, 0, vecs.length >> 1); + } + /** + * Apply this matrix to the src rectangle, and write the transformed + * rectangle into dst. This is accomplished by transforming the 4 corners of + * src, and then setting dst to the bounds of those points. + * + * @param dst Where the transformed rectangle is written. + * @param src The original rectangle to be transformed. + * @return the result of calling rectStaysRect() + */ + public boolean mapRect(RectF dst, RectF src) { + if (dst == null || src == null) { + throw new NullPointerException(); + } + return native_mapRect(native_instance, dst, src); + } + /** + * Apply this matrix to the rectangle, and write the transformed rectangle + * back into it. This is accomplished by transforming the 4 corners of rect, + * and then setting it to the bounds of those points + * + * @param rect The rectangle to transform. + * @return the result of calling rectStaysRect() + */ + public boolean mapRect(RectF rect) { + return mapRect(rect, rect); + } + /** + * Return the mean radius of a circle after it has been mapped by + * this matrix. NOTE: in perspective this value assumes the circle + * has its center at the origin. + */ + public float mapRadius(float radius) { + return native_mapRadius(native_instance, radius); + } + /** Copy 9 values from the matrix into the array. + */ + public void getValues(float[] values) { + if (values.length < 9) { + throw new ArrayIndexOutOfBoundsException(); + } + native_getValues(native_instance, values); + } + /** Copy 9 values from the array into the matrix. + Depending on the implementation of Matrix, these may be + transformed into 16.16 integers in the Matrix, such that + a subsequent call to getValues() will not yield exactly + the same values. + */ + public void setValues(float[] values) { + if (values.length < 9) { + throw new ArrayIndexOutOfBoundsException(); + } + native_setValues(native_instance, values); + } + @Override + public String toString() { + StringBuilder sb = new StringBuilder(64); + sb.append("Matrix{"); + toShortString(sb); + sb.append('}'); + return sb.toString(); + } + public String toShortString() { + StringBuilder sb = new StringBuilder(64); + toShortString(sb); + return sb.toString(); + } + /** + * @hide + */ + public void toShortString(StringBuilder sb) { + float[] values = new float[9]; + getValues(values); + sb.append('['); + sb.append(values[0]); sb.append(", "); sb.append(values[1]); sb.append(", "); + sb.append(values[2]); sb.append("]["); + sb.append(values[3]); sb.append(", "); sb.append(values[4]); sb.append(", "); + sb.append(values[5]); sb.append("]["); + sb.append(values[6]); sb.append(", "); sb.append(values[7]); sb.append(", "); + sb.append(values[8]); sb.append(']'); + } + /** + * Print short string, to optimize dumping. + * @hide + */ + public void printShortString(PrintWriter pw) { + float[] values = new float[9]; + getValues(values); + pw.print('['); + pw.print(values[0]); pw.print(", "); pw.print(values[1]); pw.print(", "); + pw.print(values[2]); pw.print("]["); + pw.print(values[3]); pw.print(", "); pw.print(values[4]); pw.print(", "); + pw.print(values[5]); pw.print("]["); + pw.print(values[6]); pw.print(", "); pw.print(values[7]); pw.print(", "); + pw.print(values[8]); pw.print(']'); + } + @Override + protected void finalize() throws Throwable { + try { + finalizer(native_instance); + } finally { + super.finalize(); + } + } + /*package*/ final int ni() { + return native_instance; + } + private static native int native_create(int native_src_or_zero); + private static native boolean native_isIdentity(int native_object); + private static native boolean native_rectStaysRect(int native_object); + private static native void native_reset(int native_object); + private static native void native_set(int native_object, int other); + private static native void native_setTranslate(int native_object, + float dx, float dy); + private static native void native_setScale(int native_object, + float sx, float sy, float px, float py); + private static native void native_setScale(int native_object, + float sx, float sy); + private static native void native_setRotate(int native_object, + float degrees, float px, float py); + private static native void native_setRotate(int native_object, + float degrees); + private static native void native_setSinCos(int native_object, + float sinValue, float cosValue, float px, float py); + private static native void native_setSinCos(int native_object, + float sinValue, float cosValue); + private static native void native_setSkew(int native_object, + float kx, float ky, float px, float py); + private static native void native_setSkew(int native_object, + float kx, float ky); + private static native boolean native_setConcat(int native_object, + int a, int b); + private static native boolean native_preTranslate(int native_object, + float dx, float dy); + private static native boolean native_preScale(int native_object, + float sx, float sy, float px, float py); + private static native boolean native_preScale(int native_object, + float sx, float sy); + private static native boolean native_preRotate(int native_object, + float degrees, float px, float py); + private static native boolean native_preRotate(int native_object, + float degrees); + private static native boolean native_preSkew(int native_object, + float kx, float ky, float px, float py); + private static native boolean native_preSkew(int native_object, + float kx, float ky); + private static native boolean native_preConcat(int native_object, + int other_matrix); + private static native boolean native_postTranslate(int native_object, + float dx, float dy); + private static native boolean native_postScale(int native_object, + float sx, float sy, float px, float py); + private static native boolean native_postScale(int native_object, + float sx, float sy); + private static native boolean native_postRotate(int native_object, + float degrees, float px, float py); + private static native boolean native_postRotate(int native_object, + float degrees); + private static native boolean native_postSkew(int native_object, + float kx, float ky, float px, float py); + private static native boolean native_postSkew(int native_object, + float kx, float ky); + private static native boolean native_postConcat(int native_object, + int other_matrix); + private static native boolean native_setRectToRect(int native_object, + RectF src, RectF dst, int stf); + private static native boolean native_setPolyToPoly(int native_object, + float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount); + private static native boolean native_invert(int native_object, int inverse); + private static native void native_mapPoints(int native_object, + float[] dst, int dstIndex, float[] src, int srcIndex, + int ptCount, boolean isPts); + private static native boolean native_mapRect(int native_object, + RectF dst, RectF src); + private static native float native_mapRadius(int native_object, + float radius); + private static native void native_getValues(int native_object, + float[] values); + private static native void native_setValues(int native_object, + float[] values); + private static native boolean native_equals(int native_a, int native_b); + private static native void finalizer(int native_instance); +} diff --git a/src/api-impl/android/graphics/Paint.java b/src/api-impl/android/graphics/Paint.java new file mode 100644 index 00000000..5e981c45 --- /dev/null +++ b/src/api-impl/android/graphics/Paint.java @@ -0,0 +1,58 @@ +package android.graphics; + +public class Paint { + private int color = 0xFF000000; + + public void setColor(int color) { + this.color = color; + } + + public int getColor() { + return color; + } + + public void setAntiAlias(boolean aa) {} + public void setStrokeWidth(float width) {} + public void setTextSize(float textSize) {} + + public Typeface setTypeface(Typeface typeface) { + return null; + } + public void getTextBounds(String text, int start, int end, Rect bounds) {} + public void getTextBounds(char[] text, int index, int count, Rect bounds) {} + public void setFlags(int flags) {} + public void setFilterBitmap(boolean filter) {} + public void setStyle(Style style) {} + public float ascent() { return 0; } + + public float measureText(char[] text, int index, int count) { return 10; } + public float measureText(String text, int start, int end) { return 10; } + public float measureText(String text) { return 10; } + public float measureText(CharSequence text, int start, int end) { return 10; } + + public enum Style { + /** + * Geometry and text drawn with this style will be filled, ignoring all + * stroke-related settings in the paint. + */ + FILL (0), + /** + * Geometry and text drawn with this style will be stroked, respecting + * the stroke-related fields on the paint. + */ + STROKE (1), + /** + * Geometry and text drawn with this style will be both filled and + * stroked at the same time, respecting the stroke-related fields on + * the paint. This mode can give unexpected results if the geometry + * is oriented counter-clockwise. This restriction does not apply to + * either FILL or STROKE. + */ + FILL_AND_STROKE (2); + + Style(int nativeInt) { + this.nativeInt = nativeInt; + } + final int nativeInt; + } +} diff --git a/src/api-impl/android/graphics/Path.java b/src/api-impl/android/graphics/Path.java new file mode 100644 index 00000000..e0dbfdd0 --- /dev/null +++ b/src/api-impl/android/graphics/Path.java @@ -0,0 +1,707 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.graphics; +//import android.view.HardwareRenderer; +/** + * The Path class encapsulates compound (multiple contour) geometric paths + * consisting of straight line segments, quadratic curves, and cubic curves. + * It can be drawn with canvas.drawPath(path, paint), either filled or stroked + * (based on the paint's Style), or it can be used for clipping or to draw + * text on a path. + */ +public class Path { + /** + * @hide + */ + public final int mNativePath; + /** + * @hide + */ + public boolean isSimplePath = true; + /** + * @hide + */ + public Region rects; + private boolean mDetectSimplePaths; + private Direction mLastDirection = null; + /** + * Create an empty path + */ + public Path() {mNativePath=-1;/* + mNativePath = init1(); + mDetectSimplePaths = HardwareRenderer.isAvailable(); + */} + /** + * Create a new path, copying the contents from the src path. + * + * @param src The path to copy from when initializing the new path + */ + public Path(Path src) {mNativePath=-1;/* + int valNative = 0; + if (src != null) { + valNative = src.mNativePath; + isSimplePath = src.isSimplePath; + if (src.rects != null) { + rects = new Region(src.rects); + } + } + mNativePath = init2(valNative); + mDetectSimplePaths = HardwareRenderer.isAvailable(); + */} + + /** + * Clear any lines and curves from the path, making it empty. + * This does NOT change the fill-type setting. + */ + public void reset() { + isSimplePath = true; + if (mDetectSimplePaths) { + mLastDirection = null; + if (rects != null) rects.setEmpty(); + } + // We promised not to change this, so preserve it around the native + // call, which does now reset fill type. + final FillType fillType = getFillType(); + native_reset(mNativePath); + setFillType(fillType); + } + /** + * Rewinds the path: clears any lines and curves from the path but + * keeps the internal data structure for faster reuse. + */ + public void rewind() { + isSimplePath = true; + if (mDetectSimplePaths) { + mLastDirection = null; + if (rects != null) rects.setEmpty(); + } + native_rewind(mNativePath); + } + /** Replace the contents of this with the contents of src. + */ + public void set(Path src) { + if (this != src) { + isSimplePath = src.isSimplePath; + native_set(mNativePath, src.mNativePath); + } + } + /** + * The logical operations that can be performed when combining two paths. + * + * @see #op(Path, android.graphics.Path.Op) + * @see #op(Path, Path, android.graphics.Path.Op) + */ + public enum Op { + /** + * Subtract the second path from the first path. + */ + DIFFERENCE, + /** + * Intersect the two paths. + */ + INTERSECT, + /** + * Union (inclusive-or) the two paths. + */ + UNION, + /** + * Exclusive-or the two paths. + */ + XOR, + /** + * Subtract the first path from the second path. + */ + REVERSE_DIFFERENCE + } + /** + * Set this path to the result of applying the Op to this path and the specified path. + * The resulting path will be constructed from non-overlapping contours. + * The curve order is reduced where possible so that cubics may be turned + * into quadratics, and quadratics maybe turned into lines. + * + * @param path The second operand (for difference, the subtrahend) + * + * @return True if operation succeeded, false otherwise and this path remains unmodified. + * + * @see Op + * @see #op(Path, Path, android.graphics.Path.Op) + */ + public boolean op(Path path, Op op) { + return op(this, path, op); + } + /** + * Set this path to the result of applying the Op to the two specified paths. + * The resulting path will be constructed from non-overlapping contours. + * The curve order is reduced where possible so that cubics may be turned + * into quadratics, and quadratics maybe turned into lines. + * + * @param path1 The first operand (for difference, the minuend) + * @param path2 The second operand (for difference, the subtrahend) + * + * @return True if operation succeeded, false otherwise and this path remains unmodified. + * + * @see Op + * @see #op(Path, android.graphics.Path.Op) + */ + public boolean op(Path path1, Path path2, Op op) { + if (native_op(path1.mNativePath, path2.mNativePath, op.ordinal(), this.mNativePath)) { + isSimplePath = false; + rects = null; + return true; + } + return false; + } + /** + * Enum for the ways a path may be filled. + */ + public enum FillType { + // these must match the values in SkPath.h + /** + * Specifies that "inside" is computed by a non-zero sum of signed + * edge crossings. + */ + WINDING (0), + /** + * Specifies that "inside" is computed by an odd number of edge + * crossings. + */ + EVEN_ODD (1), + /** + * Same as {@link #WINDING}, but draws outside of the path, rather than inside. + */ + INVERSE_WINDING (2), + /** + * Same as {@link #EVEN_ODD}, but draws outside of the path, rather than inside. + */ + INVERSE_EVEN_ODD(3); + + FillType(int ni) { + nativeInt = ni; + } + final int nativeInt; + } + // these must be in the same order as their native values + static final FillType[] sFillTypeArray = { + FillType.WINDING, + FillType.EVEN_ODD, + FillType.INVERSE_WINDING, + FillType.INVERSE_EVEN_ODD + }; + /** + * Return the path's fill type. This defines how "inside" is + * computed. The default value is WINDING. + * + * @return the path's fill type + */ + public FillType getFillType() { + return sFillTypeArray[native_getFillType(mNativePath)]; + } + /** + * Set the path's fill type. This defines how "inside" is computed. + * + * @param ft The new fill type for this path + */ + public void setFillType(FillType ft) { + native_setFillType(mNativePath, ft.nativeInt); + } + + /** + * Returns true if the filltype is one of the INVERSE variants + * + * @return true if the filltype is one of the INVERSE variants + */ + public boolean isInverseFillType() { + final int ft = native_getFillType(mNativePath); + return (ft & 2) != 0; + } + + /** + * Toggles the INVERSE state of the filltype + */ + public void toggleInverseFillType() { + int ft = native_getFillType(mNativePath); + ft ^= 2; + native_setFillType(mNativePath, ft); + } + + /** + * Returns true if the path is empty (contains no lines or curves) + * + * @return true if the path is empty (contains no lines or curves) + */ + public boolean isEmpty() { + return native_isEmpty(mNativePath); + } + /** + * Returns true if the path specifies a rectangle. If so, and if rect is + * not null, set rect to the bounds of the path. If the path does not + * specify a rectangle, return false and ignore rect. + * + * @param rect If not null, returns the bounds of the path if it specifies + * a rectangle + * @return true if the path specifies a rectangle + */ + public boolean isRect(RectF rect) { + return native_isRect(mNativePath, rect); + } + /** + * Compute the bounds of the control points of the path, and write the + * answer into bounds. If the path contains 0 or 1 points, the bounds is + * set to (0,0,0,0) + * + * @param bounds Returns the computed bounds of the path's control points. + * @param exact This parameter is no longer used. + */ + @SuppressWarnings({"UnusedDeclaration"}) + public void computeBounds(RectF bounds, boolean exact) { + native_computeBounds(mNativePath, bounds); + } + /** + * Hint to the path to prepare for adding more points. This can allow the + * path to more efficiently allocate its storage. + * + * @param extraPtCount The number of extra points that may be added to this + * path + */ + public void incReserve(int extraPtCount) { + native_incReserve(mNativePath, extraPtCount); + } + /** + * Set the beginning of the next contour to the point (x,y). + * + * @param x The x-coordinate of the start of a new contour + * @param y The y-coordinate of the start of a new contour + */ + public void moveTo(float x, float y) { + native_moveTo(mNativePath, x, y); + } + /** + * Set the beginning of the next contour relative to the last point on the + * previous contour. If there is no previous contour, this is treated the + * same as moveTo(). + * + * @param dx The amount to add to the x-coordinate of the end of the + * previous contour, to specify the start of a new contour + * @param dy The amount to add to the y-coordinate of the end of the + * previous contour, to specify the start of a new contour + */ + public void rMoveTo(float dx, float dy) { + native_rMoveTo(mNativePath, dx, dy); + } + /** + * Add a line from the last point to the specified point (x,y). + * If no moveTo() call has been made for this contour, the first point is + * automatically set to (0,0). + * + * @param x The x-coordinate of the end of a line + * @param y The y-coordinate of the end of a line + */ + public void lineTo(float x, float y) { + isSimplePath = false; + native_lineTo(mNativePath, x, y); + } + /** + * Same as lineTo, but the coordinates are considered relative to the last + * point on this contour. If there is no previous point, then a moveTo(0,0) + * is inserted automatically. + * + * @param dx The amount to add to the x-coordinate of the previous point on + * this contour, to specify a line + * @param dy The amount to add to the y-coordinate of the previous point on + * this contour, to specify a line + */ + public void rLineTo(float dx, float dy) { + isSimplePath = false; + native_rLineTo(mNativePath, dx, dy); + } + /** + * Add a quadratic bezier from the last point, approaching control point + * (x1,y1), and ending at (x2,y2). If no moveTo() call has been made for + * this contour, the first point is automatically set to (0,0). + * + * @param x1 The x-coordinate of the control point on a quadratic curve + * @param y1 The y-coordinate of the control point on a quadratic curve + * @param x2 The x-coordinate of the end point on a quadratic curve + * @param y2 The y-coordinate of the end point on a quadratic curve + */ + public void quadTo(float x1, float y1, float x2, float y2) { + isSimplePath = false; + native_quadTo(mNativePath, x1, y1, x2, y2); + } + /** + * Same as quadTo, but the coordinates are considered relative to the last + * point on this contour. If there is no previous point, then a moveTo(0,0) + * is inserted automatically. + * + * @param dx1 The amount to add to the x-coordinate of the last point on + * this contour, for the control point of a quadratic curve + * @param dy1 The amount to add to the y-coordinate of the last point on + * this contour, for the control point of a quadratic curve + * @param dx2 The amount to add to the x-coordinate of the last point on + * this contour, for the end point of a quadratic curve + * @param dy2 The amount to add to the y-coordinate of the last point on + * this contour, for the end point of a quadratic curve + */ + public void rQuadTo(float dx1, float dy1, float dx2, float dy2) { + isSimplePath = false; + native_rQuadTo(mNativePath, dx1, dy1, dx2, dy2); + } + /** + * Add a cubic bezier from the last point, approaching control points + * (x1,y1) and (x2,y2), and ending at (x3,y3). If no moveTo() call has been + * made for this contour, the first point is automatically set to (0,0). + * + * @param x1 The x-coordinate of the 1st control point on a cubic curve + * @param y1 The y-coordinate of the 1st control point on a cubic curve + * @param x2 The x-coordinate of the 2nd control point on a cubic curve + * @param y2 The y-coordinate of the 2nd control point on a cubic curve + * @param x3 The x-coordinate of the end point on a cubic curve + * @param y3 The y-coordinate of the end point on a cubic curve + */ + public void cubicTo(float x1, float y1, float x2, float y2, + float x3, float y3) { + isSimplePath = false; + native_cubicTo(mNativePath, x1, y1, x2, y2, x3, y3); + } + /** + * Same as cubicTo, but the coordinates are considered relative to the + * current point on this contour. If there is no previous point, then a + * moveTo(0,0) is inserted automatically. + */ + public void rCubicTo(float x1, float y1, float x2, float y2, + float x3, float y3) { + isSimplePath = false; + native_rCubicTo(mNativePath, x1, y1, x2, y2, x3, y3); + } + /** + * Append the specified arc to the path as a new contour. If the start of + * the path is different from the path's current last point, then an + * automatic lineTo() is added to connect the current contour to the + * start of the arc. However, if the path is empty, then we call moveTo() + * with the first point of the arc. The sweep angle is tread mod 360. + * + * @param oval The bounds of oval defining shape and size of the arc + * @param startAngle Starting angle (in degrees) where the arc begins + * @param sweepAngle Sweep angle (in degrees) measured clockwise, treated + * mod 360. + * @param forceMoveTo If true, always begin a new contour with the arc + */ + public void arcTo(RectF oval, float startAngle, float sweepAngle, + boolean forceMoveTo) { + isSimplePath = false; + native_arcTo(mNativePath, oval, startAngle, sweepAngle, forceMoveTo); + } + + /** + * Append the specified arc to the path as a new contour. If the start of + * the path is different from the path's current last point, then an + * automatic lineTo() is added to connect the current contour to the + * start of the arc. However, if the path is empty, then we call moveTo() + * with the first point of the arc. + * + * @param oval The bounds of oval defining shape and size of the arc + * @param startAngle Starting angle (in degrees) where the arc begins + * @param sweepAngle Sweep angle (in degrees) measured clockwise + */ + public void arcTo(RectF oval, float startAngle, float sweepAngle) { + isSimplePath = false; + native_arcTo(mNativePath, oval, startAngle, sweepAngle, false); + } + + /** + * Close the current contour. If the current point is not equal to the + * first point of the contour, a line segment is automatically added. + */ + public void close() { + isSimplePath = false; + native_close(mNativePath); + } + /** + * Specifies how closed shapes (e.g. rects, ovals) are oriented when they + * are added to a path. + */ + public enum Direction { + /** clockwise */ + CW (1), // must match enum in SkPath.h + /** counter-clockwise */ + CCW (2); // must match enum in SkPath.h + + Direction(int ni) { + nativeInt = ni; + } + final int nativeInt; + } + + private void detectSimplePath(float left, float top, float right, float bottom, Direction dir) { + if (mDetectSimplePaths) { + if (mLastDirection == null) { + mLastDirection = dir; + } + if (mLastDirection != dir) { + isSimplePath = false; + } else { + if (rects == null) rects = new Region(); + rects.op((int) left, (int) top, (int) right, (int) bottom, Region.Op.UNION); + } + } + } + /** + * Add a closed rectangle contour to the path + * + * @param rect The rectangle to add as a closed contour to the path + * @param dir The direction to wind the rectangle's contour + */ + public void addRect(RectF rect, Direction dir) { + if (rect == null) { + throw new NullPointerException("need rect parameter"); + } + detectSimplePath(rect.left, rect.top, rect.right, rect.bottom, dir); + native_addRect(mNativePath, rect, dir.nativeInt); + } + /** + * Add a closed rectangle contour to the path + * + * @param left The left side of a rectangle to add to the path + * @param top The top of a rectangle to add to the path + * @param right The right side of a rectangle to add to the path + * @param bottom The bottom of a rectangle to add to the path + * @param dir The direction to wind the rectangle's contour + */ + public void addRect(float left, float top, float right, float bottom, Direction dir) { + detectSimplePath(left, top, right, bottom, dir); + native_addRect(mNativePath, left, top, right, bottom, dir.nativeInt); + } + /** + * Add a closed oval contour to the path + * + * @param oval The bounds of the oval to add as a closed contour to the path + * @param dir The direction to wind the oval's contour + */ + public void addOval(RectF oval, Direction dir) { + if (oval == null) { + throw new NullPointerException("need oval parameter"); + } + isSimplePath = false; + native_addOval(mNativePath, oval, dir.nativeInt); + } + /** + * Add a closed circle contour to the path + * + * @param x The x-coordinate of the center of a circle to add to the path + * @param y The y-coordinate of the center of a circle to add to the path + * @param radius The radius of a circle to add to the path + * @param dir The direction to wind the circle's contour + */ + public void addCircle(float x, float y, float radius, Direction dir) { + isSimplePath = false; + native_addCircle(mNativePath, x, y, radius, dir.nativeInt); + } + /** + * Add the specified arc to the path as a new contour. + * + * @param oval The bounds of oval defining the shape and size of the arc + * @param startAngle Starting angle (in degrees) where the arc begins + * @param sweepAngle Sweep angle (in degrees) measured clockwise + */ + public void addArc(RectF oval, float startAngle, float sweepAngle) { + if (oval == null) { + throw new NullPointerException("need oval parameter"); + } + isSimplePath = false; + native_addArc(mNativePath, oval, startAngle, sweepAngle); + } + /** + * Add a closed round-rectangle contour to the path + * + * @param rect The bounds of a round-rectangle to add to the path + * @param rx The x-radius of the rounded corners on the round-rectangle + * @param ry The y-radius of the rounded corners on the round-rectangle + * @param dir The direction to wind the round-rectangle's contour + */ + public void addRoundRect(RectF rect, float rx, float ry, Direction dir) { + if (rect == null) { + throw new NullPointerException("need rect parameter"); + } + isSimplePath = false; + native_addRoundRect(mNativePath, rect, rx, ry, dir.nativeInt); + } + + /** + * Add a closed round-rectangle contour to the path. Each corner receives + * two radius values [X, Y]. The corners are ordered top-left, top-right, + * bottom-right, bottom-left + * + * @param rect The bounds of a round-rectangle to add to the path + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @param dir The direction to wind the round-rectangle's contour + */ + public void addRoundRect(RectF rect, float[] radii, Direction dir) { + if (rect == null) { + throw new NullPointerException("need rect parameter"); + } + if (radii.length < 8) { + throw new ArrayIndexOutOfBoundsException("radii[] needs 8 values"); + } + isSimplePath = false; + native_addRoundRect(mNativePath, rect, radii, dir.nativeInt); + } + + /** + * Add a copy of src to the path, offset by (dx,dy) + * + * @param src The path to add as a new contour + * @param dx The amount to translate the path in X as it is added + */ + public void addPath(Path src, float dx, float dy) { + isSimplePath = false; + native_addPath(mNativePath, src.mNativePath, dx, dy); + } + /** + * Add a copy of src to the path + * + * @param src The path that is appended to the current path + */ + public void addPath(Path src) { + isSimplePath = false; + native_addPath(mNativePath, src.mNativePath); + } + /** + * Add a copy of src to the path, transformed by matrix + * + * @param src The path to add as a new contour + */ + public void addPath(Path src, Matrix matrix) { + if (!src.isSimplePath) isSimplePath = false; + native_addPath(mNativePath, src.mNativePath, matrix.native_instance); + } + /** + * Offset the path by (dx,dy), returning true on success + * + * @param dx The amount in the X direction to offset the entire path + * @param dy The amount in the Y direction to offset the entire path + * @param dst The translated path is written here. If this is null, then + * the original path is modified. + */ + public void offset(float dx, float dy, Path dst) { + int dstNative = 0; + if (dst != null) { + dstNative = dst.mNativePath; + dst.isSimplePath = false; + } + native_offset(mNativePath, dx, dy, dstNative); + } + /** + * Offset the path by (dx,dy), returning true on success + * + * @param dx The amount in the X direction to offset the entire path + * @param dy The amount in the Y direction to offset the entire path + */ + public void offset(float dx, float dy) { + isSimplePath = false; + native_offset(mNativePath, dx, dy); + } + /** + * Sets the last point of the path. + * + * @param dx The new X coordinate for the last point + * @param dy The new Y coordinate for the last point + */ + public void setLastPoint(float dx, float dy) { + isSimplePath = false; + native_setLastPoint(mNativePath, dx, dy); + } + /** + * Transform the points in this path by matrix, and write the answer + * into dst. If dst is null, then the the original path is modified. + * + * @param matrix The matrix to apply to the path + * @param dst The transformed path is written here. If dst is null, + * then the the original path is modified + */ + public void transform(Matrix matrix, Path dst) { + int dstNative = 0; + if (dst != null) { + dst.isSimplePath = false; + dstNative = dst.mNativePath; + } + native_transform(mNativePath, matrix.native_instance, dstNative); + } + /** + * Transform the points in this path by matrix. + * + * @param matrix The matrix to apply to the path + */ + public void transform(Matrix matrix) { + isSimplePath = false; + native_transform(mNativePath, matrix.native_instance); + } + protected void finalize() throws Throwable { + try { + finalizer(mNativePath); + } finally { + super.finalize(); + } + } + final int ni() { + return mNativePath; + } + private static native int init1(); + private static native int init2(int nPath); + private static native void native_reset(int nPath); + private static native void native_rewind(int nPath); + private static native void native_set(int native_dst, int native_src); + private static native int native_getFillType(int nPath); + private static native void native_setFillType(int nPath, int ft); + private static native boolean native_isEmpty(int nPath); + private static native boolean native_isRect(int nPath, RectF rect); + private static native void native_computeBounds(int nPath, RectF bounds); + private static native void native_incReserve(int nPath, int extraPtCount); + private static native void native_moveTo(int nPath, float x, float y); + private static native void native_rMoveTo(int nPath, float dx, float dy); + private static native void native_lineTo(int nPath, float x, float y); + private static native void native_rLineTo(int nPath, float dx, float dy); + private static native void native_quadTo(int nPath, float x1, float y1, + float x2, float y2); + private static native void native_rQuadTo(int nPath, float dx1, float dy1, + float dx2, float dy2); + private static native void native_cubicTo(int nPath, float x1, float y1, + float x2, float y2, float x3, float y3); + private static native void native_rCubicTo(int nPath, float x1, float y1, + float x2, float y2, float x3, float y3); + private static native void native_arcTo(int nPath, RectF oval, + float startAngle, float sweepAngle, boolean forceMoveTo); + private static native void native_close(int nPath); + private static native void native_addRect(int nPath, RectF rect, int dir); + private static native void native_addRect(int nPath, float left, float top, + float right, float bottom, int dir); + private static native void native_addOval(int nPath, RectF oval, int dir); + private static native void native_addCircle(int nPath, float x, float y, float radius, int dir); + private static native void native_addArc(int nPath, RectF oval, + float startAngle, float sweepAngle); + private static native void native_addRoundRect(int nPath, RectF rect, + float rx, float ry, int dir); + private static native void native_addRoundRect(int nPath, RectF r, float[] radii, int dir); + private static native void native_addPath(int nPath, int src, float dx, float dy); + private static native void native_addPath(int nPath, int src); + private static native void native_addPath(int nPath, int src, int matrix); + private static native void native_offset(int nPath, float dx, float dy, int dst_path); + private static native void native_offset(int nPath, float dx, float dy); + private static native void native_setLastPoint(int nPath, float dx, float dy); + private static native void native_transform(int nPath, int matrix, int dst_path); + private static native void native_transform(int nPath, int matrix); + private static native boolean native_op(int path1, int path2, int op, int result); + private static native void finalizer(int nPath); +} diff --git a/src/api-impl/android/graphics/Rect.java b/src/api-impl/android/graphics/Rect.java new file mode 100644 index 00000000..df5760ed --- /dev/null +++ b/src/api-impl/android/graphics/Rect.java @@ -0,0 +1,515 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.graphics; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +/** + * Rect holds four integer coordinates for a rectangle. The rectangle is + * represented by the coordinates of its 4 edges (left, top, right bottom). + * These fields can be accessed directly. Use width() and height() to retrieve + * the rectangle's width and height. Note: most methods do not check to see that + * the coordinates are sorted correctly (i.e. left <= right and top <= bottom). + */ +public final class Rect { + public int left; + public int top; + public int right; + public int bottom; + private static final Pattern FLATTENED_PATTERN = Pattern.compile( + "(-?\\d+) (-?\\d+) (-?\\d+) (-?\\d+)"); + /** + * Create a new empty Rect. All coordinates are initialized to 0. + */ + public Rect() {} + /** + * Create a new rectangle with the specified coordinates. Note: no range + * checking is performed, so the caller must ensure that left <= right and + * top <= bottom. + * + * @param left The X coordinate of the left side of the rectangle + * @param top The Y coordinate of the top of the rectangle + * @param right The X coordinate of the right side of the rectangle + * @param bottom The Y coordinate of the bottom of the rectangle + */ + public Rect(int left, int top, int right, int bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + /** + * Create a new rectangle, initialized with the values in the specified + * rectangle (which is left unmodified). + * + * @param r The rectangle whose coordinates are copied into the new + * rectangle. + */ + public Rect(Rect r) { + if (r == null) { + left = top = right = bottom = 0; + } else { + left = r.left; + top = r.top; + right = r.right; + bottom = r.bottom; + } + } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Rect r = (Rect) o; + return left == r.left && top == r.top && right == r.right && bottom == r.bottom; + } + @Override + public int hashCode() { + int result = left; + result = 31 * result + top; + result = 31 * result + right; + result = 31 * result + bottom; + return result; + } + @Override + public String toString() { + StringBuilder sb = new StringBuilder(32); + sb.append("Rect("); sb.append(left); sb.append(", "); + sb.append(top); sb.append(" - "); sb.append(right); + sb.append(", "); sb.append(bottom); sb.append(")"); + return sb.toString(); + } + /** + * Return a string representation of the rectangle in a compact form. + */ + public String toShortString() { + return toShortString(new StringBuilder(32)); + } + + /** + * Return a string representation of the rectangle in a compact form. + * @hide + */ + public String toShortString(StringBuilder sb) { + sb.setLength(0); + sb.append('['); sb.append(left); sb.append(','); + sb.append(top); sb.append("]["); sb.append(right); + sb.append(','); sb.append(bottom); sb.append(']'); + return sb.toString(); + } + /** + * Return a string representation of the rectangle in a well-defined format. + * + *

You can later recover the Rect from this string through + * {@link #unflattenFromString(String)}. + * + * @return Returns a new String of the form "left top right bottom" + */ + public String flattenToString() { + StringBuilder sb = new StringBuilder(32); + // WARNING: Do not change the format of this string, it must be + // preserved because Rects are saved in this flattened format. + sb.append(left); + sb.append(' '); + sb.append(top); + sb.append(' '); + sb.append(right); + sb.append(' '); + sb.append(bottom); + return sb.toString(); + } + /** + * Returns a Rect from a string of the form returned by {@link #flattenToString}, + * or null if the string is not of that form. + */ + public static Rect unflattenFromString(String str) { + Matcher matcher = FLATTENED_PATTERN.matcher(str); + if (!matcher.matches()) { + return null; + } + return new Rect(Integer.parseInt(matcher.group(1)), + Integer.parseInt(matcher.group(2)), + Integer.parseInt(matcher.group(3)), + Integer.parseInt(matcher.group(4))); + } + + /** + * Print short representation to given writer. + * @hide + */ + public void printShortString(PrintWriter pw) { + pw.print('['); pw.print(left); pw.print(','); + pw.print(top); pw.print("]["); pw.print(right); + pw.print(','); pw.print(bottom); pw.print(']'); + } + + /** + * Returns true if the rectangle is empty (left >= right or top >= bottom) + */ + public final boolean isEmpty() { + return left >= right || top >= bottom; + } + /** + * @return the rectangle's width. This does not check for a valid rectangle + * (i.e. left <= right) so the result may be negative. + */ + public final int width() { + return right - left; + } + /** + * @return the rectangle's height. This does not check for a valid rectangle + * (i.e. top <= bottom) so the result may be negative. + */ + public final int height() { + return bottom - top; + } + + /** + * @return the horizontal center of the rectangle. If the computed value + * is fractional, this method returns the largest integer that is + * less than the computed value. + */ + public final int centerX() { + return (left + right) >> 1; + } + + /** + * @return the vertical center of the rectangle. If the computed value + * is fractional, this method returns the largest integer that is + * less than the computed value. + */ + public final int centerY() { + return (top + bottom) >> 1; + } + + /** + * @return the exact horizontal center of the rectangle as a float. + */ + public final float exactCenterX() { + return (left + right) * 0.5f; + } + + /** + * @return the exact vertical center of the rectangle as a float. + */ + public final float exactCenterY() { + return (top + bottom) * 0.5f; + } + /** + * Set the rectangle to (0,0,0,0) + */ + public void setEmpty() { + left = right = top = bottom = 0; + } + /** + * Set the rectangle's coordinates to the specified values. Note: no range + * checking is performed, so it is up to the caller to ensure that + * left <= right and top <= bottom. + * + * @param left The X coordinate of the left side of the rectangle + * @param top The Y coordinate of the top of the rectangle + * @param right The X coordinate of the right side of the rectangle + * @param bottom The Y coordinate of the bottom of the rectangle + */ + public void set(int left, int top, int right, int bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + /** + * Copy the coordinates from src into this rectangle. + * + * @param src The rectangle whose coordinates are copied into this + * rectangle. + */ + public void set(Rect src) { + this.left = src.left; + this.top = src.top; + this.right = src.right; + this.bottom = src.bottom; + } + /** + * Offset the rectangle by adding dx to its left and right coordinates, and + * adding dy to its top and bottom coordinates. + * + * @param dx The amount to add to the rectangle's left and right coordinates + * @param dy The amount to add to the rectangle's top and bottom coordinates + */ + public void offset(int dx, int dy) { + left += dx; + top += dy; + right += dx; + bottom += dy; + } + /** + * Offset the rectangle to a specific (left, top) position, + * keeping its width and height the same. + * + * @param newLeft The new "left" coordinate for the rectangle + * @param newTop The new "top" coordinate for the rectangle + */ + public void offsetTo(int newLeft, int newTop) { + right += newLeft - left; + bottom += newTop - top; + left = newLeft; + top = newTop; + } + /** + * Inset the rectangle by (dx,dy). If dx is positive, then the sides are + * moved inwards, making the rectangle narrower. If dx is negative, then the + * sides are moved outwards, making the rectangle wider. The same holds true + * for dy and the top and bottom. + * + * @param dx The amount to add(subtract) from the rectangle's left(right) + * @param dy The amount to add(subtract) from the rectangle's top(bottom) + */ + public void inset(int dx, int dy) { + left += dx; + top += dy; + right -= dx; + bottom -= dy; + } + /** + * Returns true if (x,y) is inside the rectangle. The left and top are + * considered to be inside, while the right and bottom are not. This means + * that for a x,y to be contained: left <= x < right and top <= y < bottom. + * An empty rectangle never contains any point. + * + * @param x The X coordinate of the point being tested for containment + * @param y The Y coordinate of the point being tested for containment + * @return true iff (x,y) are contained by the rectangle, where containment + * means left <= x < right and top <= y < bottom + */ + public boolean contains(int x, int y) { + return left < right && top < bottom // check for empty first + && x >= left && x < right && y >= top && y < bottom; + } + /** + * Returns true iff the 4 specified sides of a rectangle are inside or equal + * to this rectangle. i.e. is this rectangle a superset of the specified + * rectangle. An empty rectangle never contains another rectangle. + * + * @param left The left side of the rectangle being tested for containment + * @param top The top of the rectangle being tested for containment + * @param right The right side of the rectangle being tested for containment + * @param bottom The bottom of the rectangle being tested for containment + * @return true iff the the 4 specified sides of a rectangle are inside or + * equal to this rectangle + */ + public boolean contains(int left, int top, int right, int bottom) { + // check for empty first + return this.left < this.right && this.top < this.bottom + // now check for containment + && this.left <= left && this.top <= top + && this.right >= right && this.bottom >= bottom; + } + /** + * Returns true iff the specified rectangle r is inside or equal to this + * rectangle. An empty rectangle never contains another rectangle. + * + * @param r The rectangle being tested for containment. + * @return true iff the specified rectangle r is inside or equal to this + * rectangle + */ + public boolean contains(Rect r) { + // check for empty first + return this.left < this.right && this.top < this.bottom + // now check for containment + && left <= r.left && top <= r.top && right >= r.right && bottom >= r.bottom; + } + /** + * If the rectangle specified by left,top,right,bottom intersects this + * rectangle, return true and set this rectangle to that intersection, + * otherwise return false and do not change this rectangle. No check is + * performed to see if either rectangle is empty. Note: To just test for + * intersection, use {@link #intersects(Rect, Rect)}. + * + * @param left The left side of the rectangle being intersected with this + * rectangle + * @param top The top of the rectangle being intersected with this rectangle + * @param right The right side of the rectangle being intersected with this + * rectangle. + * @param bottom The bottom of the rectangle being intersected with this + * rectangle. + * @return true if the specified rectangle and this rectangle intersect + * (and this rectangle is then set to that intersection) else + * return false and do not change this rectangle. + */ + public boolean intersect(int left, int top, int right, int bottom) { + if (this.left < right && left < this.right && this.top < bottom && top < this.bottom) { + if (this.left < left) this.left = left; + if (this.top < top) this.top = top; + if (this.right > right) this.right = right; + if (this.bottom > bottom) this.bottom = bottom; + return true; + } + return false; + } + + /** + * If the specified rectangle intersects this rectangle, return true and set + * this rectangle to that intersection, otherwise return false and do not + * change this rectangle. No check is performed to see if either rectangle + * is empty. To just test for intersection, use intersects() + * + * @param r The rectangle being intersected with this rectangle. + * @return true if the specified rectangle and this rectangle intersect + * (and this rectangle is then set to that intersection) else + * return false and do not change this rectangle. + */ + public boolean intersect(Rect r) { + return intersect(r.left, r.top, r.right, r.bottom); + } + /** + * If rectangles a and b intersect, return true and set this rectangle to + * that intersection, otherwise return false and do not change this + * rectangle. No check is performed to see if either rectangle is empty. + * To just test for intersection, use intersects() + * + * @param a The first rectangle being intersected with + * @param b The second rectangle being intersected with + * @return true iff the two specified rectangles intersect. If they do, set + * this rectangle to that intersection. If they do not, return + * false and do not change this rectangle. + */ + public boolean setIntersect(Rect a, Rect b) { + if (a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom) { + left = Math.max(a.left, b.left); + top = Math.max(a.top, b.top); + right = Math.min(a.right, b.right); + bottom = Math.min(a.bottom, b.bottom); + return true; + } + return false; + } + /** + * Returns true if this rectangle intersects the specified rectangle. + * In no event is this rectangle modified. No check is performed to see + * if either rectangle is empty. To record the intersection, use intersect() + * or setIntersect(). + * + * @param left The left side of the rectangle being tested for intersection + * @param top The top of the rectangle being tested for intersection + * @param right The right side of the rectangle being tested for + * intersection + * @param bottom The bottom of the rectangle being tested for intersection + * @return true iff the specified rectangle intersects this rectangle. In + * no event is this rectangle modified. + */ + public boolean intersects(int left, int top, int right, int bottom) { + return this.left < right && left < this.right && this.top < bottom && top < this.bottom; + } + /** + * Returns true iff the two specified rectangles intersect. In no event are + * either of the rectangles modified. To record the intersection, + * use {@link #intersect(Rect)} or {@link #setIntersect(Rect, Rect)}. + * + * @param a The first rectangle being tested for intersection + * @param b The second rectangle being tested for intersection + * @return true iff the two specified rectangles intersect. In no event are + * either of the rectangles modified. + */ + public static boolean intersects(Rect a, Rect b) { + return a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom; + } + /** + * Update this Rect to enclose itself and the specified rectangle. If the + * specified rectangle is empty, nothing is done. If this rectangle is empty + * it is set to the specified rectangle. + * + * @param left The left edge being unioned with this rectangle + * @param top The top edge being unioned with this rectangle + * @param right The right edge being unioned with this rectangle + * @param bottom The bottom edge being unioned with this rectangle + */ + public void union(int left, int top, int right, int bottom) { + if ((left < right) && (top < bottom)) { + if ((this.left < this.right) && (this.top < this.bottom)) { + if (this.left > left) this.left = left; + if (this.top > top) this.top = top; + if (this.right < right) this.right = right; + if (this.bottom < bottom) this.bottom = bottom; + } else { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + } + } + /** + * Update this Rect to enclose itself and the specified rectangle. If the + * specified rectangle is empty, nothing is done. If this rectangle is empty + * it is set to the specified rectangle. + * + * @param r The rectangle being unioned with this rectangle + */ + public void union(Rect r) { + union(r.left, r.top, r.right, r.bottom); + } + + /** + * Update this Rect to enclose itself and the [x,y] coordinate. There is no + * check to see that this rectangle is non-empty. + * + * @param x The x coordinate of the point to add to the rectangle + * @param y The y coordinate of the point to add to the rectangle + */ + public void union(int x, int y) { + if (x < left) { + left = x; + } else if (x > right) { + right = x; + } + if (y < top) { + top = y; + } else if (y > bottom) { + bottom = y; + } + } + /** + * Swap top/bottom or left/right if there are flipped (i.e. left > right + * and/or top > bottom). This can be called if + * the edges are computed separately, and may have crossed over each other. + * If the edges are already correct (i.e. left <= right and top <= bottom) + * then nothing is done. + */ + public void sort() { + if (left > right) { + int temp = left; + left = right; + right = temp; + } + if (top > bottom) { + int temp = top; + top = bottom; + bottom = temp; + } + } + + /** + * Scales up the rect by the given scale. + * @hide + */ + public void scale(float scale) { + if (scale != 1.0f) { + left = (int) (left * scale + 0.5f); + top = (int) (top * scale + 0.5f); + right = (int) (right * scale + 0.5f); + bottom = (int) (bottom * scale + 0.5f); + } + } +} diff --git a/src/api-impl/android/graphics/RectF.java b/src/api-impl/android/graphics/RectF.java new file mode 100644 index 00000000..400f2f62 --- /dev/null +++ b/src/api-impl/android/graphics/RectF.java @@ -0,0 +1,513 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.graphics; +import java.io.PrintWriter; +//import android.util.FloatMath; +//import com.android.internal.util.FastMath; +/** + * RectF holds four float coordinates for a rectangle. The rectangle is + * represented by the coordinates of its 4 edges (left, top, right bottom). + * These fields can be accessed directly. Use width() and height() to retrieve + * the rectangle's width and height. Note: most methods do not check to see that + * the coordinates are sorted correctly (i.e. left <= right and top <= bottom). + */ +public class RectF { + public float left; + public float top; + public float right; + public float bottom; + + /** + * Create a new empty RectF. All coordinates are initialized to 0. + */ + public RectF() {} + /** + * Create a new rectangle with the specified coordinates. Note: no range + * checking is performed, so the caller must ensure that left <= right and + * top <= bottom. + * + * @param left The X coordinate of the left side of the rectangle + * @param top The Y coordinate of the top of the rectangle + * @param right The X coordinate of the right side of the rectangle + * @param bottom The Y coordinate of the bottom of the rectangle + */ + public RectF(float left, float top, float right, float bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + /** + * Create a new rectangle, initialized with the values in the specified + * rectangle (which is left unmodified). + * + * @param r The rectangle whose coordinates are copied into the new + * rectangle. + */ + public RectF(RectF r) { + if (r == null) { + left = top = right = bottom = 0.0f; + } else { + left = r.left; + top = r.top; + right = r.right; + bottom = r.bottom; + } + } + + public RectF(Rect r) { + if (r == null) { + left = top = right = bottom = 0.0f; + } else { + left = r.left; + top = r.top; + right = r.right; + bottom = r.bottom; + } + } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RectF r = (RectF) o; + return left == r.left && top == r.top && right == r.right && bottom == r.bottom; + } + @Override + public int hashCode() { + int result = (left != +0.0f ? Float.floatToIntBits(left) : 0); + result = 31 * result + (top != +0.0f ? Float.floatToIntBits(top) : 0); + result = 31 * result + (right != +0.0f ? Float.floatToIntBits(right) : 0); + result = 31 * result + (bottom != +0.0f ? Float.floatToIntBits(bottom) : 0); + return result; + } + public String toString() { + return "RectF(" + left + ", " + top + ", " + + right + ", " + bottom + ")"; + } + /** + * Return a string representation of the rectangle in a compact form. + */ + public String toShortString() { + return toShortString(new StringBuilder(32)); + } + + /** + * Return a string representation of the rectangle in a compact form. + * @hide + */ + public String toShortString(StringBuilder sb) { + sb.setLength(0); + sb.append('['); sb.append(left); sb.append(','); + sb.append(top); sb.append("]["); sb.append(right); + sb.append(','); sb.append(bottom); sb.append(']'); + return sb.toString(); + } + + /** + * Print short representation to given writer. + * @hide + */ + public void printShortString(PrintWriter pw) { + pw.print('['); pw.print(left); pw.print(','); + pw.print(top); pw.print("]["); pw.print(right); + pw.print(','); pw.print(bottom); pw.print(']'); + } + /** + * Returns true if the rectangle is empty (left >= right or top >= bottom) + */ + public final boolean isEmpty() { + return left >= right || top >= bottom; + } + /** + * @return the rectangle's width. This does not check for a valid rectangle + * (i.e. left <= right) so the result may be negative. + */ + public final float width() { + return right - left; + } + /** + * @return the rectangle's height. This does not check for a valid rectangle + * (i.e. top <= bottom) so the result may be negative. + */ + public final float height() { + return bottom - top; + } + /** + * @return the horizontal center of the rectangle. This does not check for + * a valid rectangle (i.e. left <= right) + */ + public final float centerX() { + return (left + right) * 0.5f; + } + /** + * @return the vertical center of the rectangle. This does not check for + * a valid rectangle (i.e. top <= bottom) + */ + public final float centerY() { + return (top + bottom) * 0.5f; + } + + /** + * Set the rectangle to (0,0,0,0) + */ + public void setEmpty() { + left = right = top = bottom = 0; + } + + /** + * Set the rectangle's coordinates to the specified values. Note: no range + * checking is performed, so it is up to the caller to ensure that + * left <= right and top <= bottom. + * + * @param left The X coordinate of the left side of the rectangle + * @param top The Y coordinate of the top of the rectangle + * @param right The X coordinate of the right side of the rectangle + * @param bottom The Y coordinate of the bottom of the rectangle + */ + public void set(float left, float top, float right, float bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + /** + * Copy the coordinates from src into this rectangle. + * + * @param src The rectangle whose coordinates are copied into this + * rectangle. + */ + public void set(RectF src) { + this.left = src.left; + this.top = src.top; + this.right = src.right; + this.bottom = src.bottom; + } + + /** + * Copy the coordinates from src into this rectangle. + * + * @param src The rectangle whose coordinates are copied into this + * rectangle. + */ + public void set(Rect src) { + this.left = src.left; + this.top = src.top; + this.right = src.right; + this.bottom = src.bottom; + } + /** + * Offset the rectangle by adding dx to its left and right coordinates, and + * adding dy to its top and bottom coordinates. + * + * @param dx The amount to add to the rectangle's left and right coordinates + * @param dy The amount to add to the rectangle's top and bottom coordinates + */ + public void offset(float dx, float dy) { + left += dx; + top += dy; + right += dx; + bottom += dy; + } + /** + * Offset the rectangle to a specific (left, top) position, + * keeping its width and height the same. + * + * @param newLeft The new "left" coordinate for the rectangle + * @param newTop The new "top" coordinate for the rectangle + */ + public void offsetTo(float newLeft, float newTop) { + right += newLeft - left; + bottom += newTop - top; + left = newLeft; + top = newTop; + } + + /** + * Inset the rectangle by (dx,dy). If dx is positive, then the sides are + * moved inwards, making the rectangle narrower. If dx is negative, then the + * sides are moved outwards, making the rectangle wider. The same holds true + * for dy and the top and bottom. + * + * @param dx The amount to add(subtract) from the rectangle's left(right) + * @param dy The amount to add(subtract) from the rectangle's top(bottom) + */ + public void inset(float dx, float dy) { + left += dx; + top += dy; + right -= dx; + bottom -= dy; + } + /** + * Returns true if (x,y) is inside the rectangle. The left and top are + * considered to be inside, while the right and bottom are not. This means + * that for a x,y to be contained: left <= x < right and top <= y < bottom. + * An empty rectangle never contains any point. + * + * @param x The X coordinate of the point being tested for containment + * @param y The Y coordinate of the point being tested for containment + * @return true iff (x,y) are contained by the rectangle, where containment + * means left <= x < right and top <= y < bottom + */ + public boolean contains(float x, float y) { + return left < right && top < bottom // check for empty first + && x >= left && x < right && y >= top && y < bottom; + } + + /** + * Returns true iff the 4 specified sides of a rectangle are inside or equal + * to this rectangle. i.e. is this rectangle a superset of the specified + * rectangle. An empty rectangle never contains another rectangle. + * + * @param left The left side of the rectangle being tested for containment + * @param top The top of the rectangle being tested for containment + * @param right The right side of the rectangle being tested for containment + * @param bottom The bottom of the rectangle being tested for containment + * @return true iff the the 4 specified sides of a rectangle are inside or + * equal to this rectangle + */ + public boolean contains(float left, float top, float right, float bottom) { + // check for empty first + return this.left < this.right && this.top < this.bottom + // now check for containment + && this.left <= left && this.top <= top + && this.right >= right && this.bottom >= bottom; + } + + /** + * Returns true iff the specified rectangle r is inside or equal to this + * rectangle. An empty rectangle never contains another rectangle. + * + * @param r The rectangle being tested for containment. + * @return true iff the specified rectangle r is inside or equal to this + * rectangle + */ + public boolean contains(RectF r) { + // check for empty first + return this.left < this.right && this.top < this.bottom + // now check for containment + && left <= r.left && top <= r.top + && right >= r.right && bottom >= r.bottom; + } + + /** + * If the rectangle specified by left,top,right,bottom intersects this + * rectangle, return true and set this rectangle to that intersection, + * otherwise return false and do not change this rectangle. No check is + * performed to see if either rectangle is empty. Note: To just test for + * intersection, use intersects() + * + * @param left The left side of the rectangle being intersected with this + * rectangle + * @param top The top of the rectangle being intersected with this rectangle + * @param right The right side of the rectangle being intersected with this + * rectangle. + * @param bottom The bottom of the rectangle being intersected with this + * rectangle. + * @return true if the specified rectangle and this rectangle intersect + * (and this rectangle is then set to that intersection) else + * return false and do not change this rectangle. + */ + public boolean intersect(float left, float top, float right, float bottom) { + if (this.left < right && left < this.right + && this.top < bottom && top < this.bottom) { + if (this.left < left) { + this.left = left; + } + if (this.top < top) { + this.top = top; + } + if (this.right > right) { + this.right = right; + } + if (this.bottom > bottom) { + this.bottom = bottom; + } + return true; + } + return false; + } + + /** + * If the specified rectangle intersects this rectangle, return true and set + * this rectangle to that intersection, otherwise return false and do not + * change this rectangle. No check is performed to see if either rectangle + * is empty. To just test for intersection, use intersects() + * + * @param r The rectangle being intersected with this rectangle. + * @return true if the specified rectangle and this rectangle intersect + * (and this rectangle is then set to that intersection) else + * return false and do not change this rectangle. + */ + public boolean intersect(RectF r) { + return intersect(r.left, r.top, r.right, r.bottom); + } + + /** + * If rectangles a and b intersect, return true and set this rectangle to + * that intersection, otherwise return false and do not change this + * rectangle. No check is performed to see if either rectangle is empty. + * To just test for intersection, use intersects() + * + * @param a The first rectangle being intersected with + * @param b The second rectangle being intersected with + * @return true iff the two specified rectangles intersect. If they do, set + * this rectangle to that intersection. If they do not, return + * false and do not change this rectangle. + */ + public boolean setIntersect(RectF a, RectF b) { + if (a.left < b.right && b.left < a.right + && a.top < b.bottom && b.top < a.bottom) { + left = Math.max(a.left, b.left); + top = Math.max(a.top, b.top); + right = Math.min(a.right, b.right); + bottom = Math.min(a.bottom, b.bottom); + return true; + } + return false; + } + + /** + * Returns true if this rectangle intersects the specified rectangle. + * In no event is this rectangle modified. No check is performed to see + * if either rectangle is empty. To record the intersection, use intersect() + * or setIntersect(). + * + * @param left The left side of the rectangle being tested for intersection + * @param top The top of the rectangle being tested for intersection + * @param right The right side of the rectangle being tested for + * intersection + * @param bottom The bottom of the rectangle being tested for intersection + * @return true iff the specified rectangle intersects this rectangle. In + * no event is this rectangle modified. + */ + public boolean intersects(float left, float top, float right, + float bottom) { + return this.left < right && left < this.right + && this.top < bottom && top < this.bottom; + } + + /** + * Returns true iff the two specified rectangles intersect. In no event are + * either of the rectangles modified. To record the intersection, + * use intersect() or setIntersect(). + * + * @param a The first rectangle being tested for intersection + * @param b The second rectangle being tested for intersection + * @return true iff the two specified rectangles intersect. In no event are + * either of the rectangles modified. + */ + public static boolean intersects(RectF a, RectF b) { + return a.left < b.right && b.left < a.right + && a.top < b.bottom && b.top < a.bottom; + } + + /** + * Set the dst integer Rect by rounding this rectangle's coordinates + * to their nearest integer values. + */ + public void round(Rect dst) { + dst.set(/*Fast*/Math.round(left), /*Fast*/Math.round(top), + /*Fast*/Math.round(right), /*Fast*/Math.round(bottom)); + } + /** + * Set the dst integer Rect by rounding "out" this rectangle, choosing the + * floor of top and left, and the ceiling of right and bottom. + */ + public void roundOut(Rect dst) { + dst.set((int) /*Float*/Math.floor(left), (int) /*Float*/Math.floor(top), + (int) /*Float*/Math.ceil(right), (int) /*Float*/Math.ceil(bottom)); + } + /** + * Update this Rect to enclose itself and the specified rectangle. If the + * specified rectangle is empty, nothing is done. If this rectangle is empty + * it is set to the specified rectangle. + * + * @param left The left edge being unioned with this rectangle + * @param top The top edge being unioned with this rectangle + * @param right The right edge being unioned with this rectangle + * @param bottom The bottom edge being unioned with this rectangle + */ + public void union(float left, float top, float right, float bottom) { + if ((left < right) && (top < bottom)) { + if ((this.left < this.right) && (this.top < this.bottom)) { + if (this.left > left) + this.left = left; + if (this.top > top) + this.top = top; + if (this.right < right) + this.right = right; + if (this.bottom < bottom) + this.bottom = bottom; + } else { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + } + } + + /** + * Update this Rect to enclose itself and the specified rectangle. If the + * specified rectangle is empty, nothing is done. If this rectangle is empty + * it is set to the specified rectangle. + * + * @param r The rectangle being unioned with this rectangle + */ + public void union(RectF r) { + union(r.left, r.top, r.right, r.bottom); + } + + /** + * Update this Rect to enclose itself and the [x,y] coordinate. There is no + * check to see that this rectangle is non-empty. + * + * @param x The x coordinate of the point to add to the rectangle + * @param y The y coordinate of the point to add to the rectangle + */ + public void union(float x, float y) { + if (x < left) { + left = x; + } else if (x > right) { + right = x; + } + if (y < top) { + top = y; + } else if (y > bottom) { + bottom = y; + } + } + + /** + * Swap top/bottom or left/right if there are flipped (i.e. left > right + * and/or top > bottom). This can be called if + * the edges are computed separately, and may have crossed over each other. + * If the edges are already correct (i.e. left <= right and top <= bottom) + * then nothing is done. + */ + public void sort() { + if (left > right) { + float temp = left; + left = right; + right = temp; + } + if (top > bottom) { + float temp = top; + top = bottom; + bottom = temp; + } + } +} diff --git a/src/api-impl/android/graphics/Region.java b/src/api-impl/android/graphics/Region.java new file mode 100644 index 00000000..0520f695 --- /dev/null +++ b/src/api-impl/android/graphics/Region.java @@ -0,0 +1,342 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.graphics; +//import android.util.Pools.SynchronizedPool; +public class Region { + private static final int MAX_POOL_SIZE = 10; +/* private static final SynchronizedPool sPool = + new SynchronizedPool(MAX_POOL_SIZE);*/ + /** + * @hide + */ + public final int mNativeRegion; + // the native values for these must match up with the enum in SkRegion.h + public enum Op { + DIFFERENCE(0), + INTERSECT(1), + UNION(2), + XOR(3), + REVERSE_DIFFERENCE(4), + REPLACE(5); + Op(int nativeInt) { + this.nativeInt = nativeInt; + } + /** + * @hide + */ + public final int nativeInt; + } + /** Create an empty region + */ + public Region() { + this(nativeConstructor()); + } + /** Return a copy of the specified region + */ + public Region(Region region) { + this(nativeConstructor()); + nativeSetRegion(mNativeRegion, region.mNativeRegion); + } + /** Return a region set to the specified rectangle + */ + public Region(Rect r) { + mNativeRegion = nativeConstructor(); + nativeSetRect(mNativeRegion, r.left, r.top, r.right, r.bottom); + } + /** Return a region set to the specified rectangle + */ + public Region(int left, int top, int right, int bottom) { + mNativeRegion = nativeConstructor(); + nativeSetRect(mNativeRegion, left, top, right, bottom); + } + /** Set the region to the empty region + */ + public void setEmpty() { + nativeSetRect(mNativeRegion, 0, 0, 0, 0); + } + /** Set the region to the specified region. + */ + public boolean set(Region region) { + nativeSetRegion(mNativeRegion, region.mNativeRegion); + return true; + } + /** Set the region to the specified rectangle + */ + public boolean set(Rect r) { + return nativeSetRect(mNativeRegion, r.left, r.top, r.right, r.bottom); + } + + /** Set the region to the specified rectangle + */ + public boolean set(int left, int top, int right, int bottom) { + return nativeSetRect(mNativeRegion, left, top, right, bottom); + } + /** + * Set the region to the area described by the path and clip. + * Return true if the resulting region is non-empty. This produces a region + * that is identical to the pixels that would be drawn by the path + * (with no antialiasing). + */ + public boolean setPath(Path path, Region clip) { + return nativeSetPath(mNativeRegion, path.ni(), clip.mNativeRegion); + } + /** + * Return true if this region is empty + */ + public native boolean isEmpty(); + + /** + * Return true if the region contains a single rectangle + */ + public native boolean isRect(); + + /** + * Return true if the region contains more than one rectangle + */ + public native boolean isComplex(); + /** + * Return a new Rect set to the bounds of the region. If the region is + * empty, the Rect will be set to [0, 0, 0, 0] + */ + public Rect getBounds() { + Rect r = new Rect(); + nativeGetBounds(mNativeRegion, r); + return r; + } + + /** + * Set the Rect to the bounds of the region. If the region is empty, the + * Rect will be set to [0, 0, 0, 0] + */ + public boolean getBounds(Rect r) { + if (r == null) { + throw new NullPointerException(); + } + return nativeGetBounds(mNativeRegion, r); + } + /** + * Return the boundary of the region as a new Path. If the region is empty, + * the path will also be empty. + */ + public Path getBoundaryPath() { + Path path = new Path(); + nativeGetBoundaryPath(mNativeRegion, path.ni()); + return path; + } + /** + * Set the path to the boundary of the region. If the region is empty, the + * path will also be empty. + */ + public boolean getBoundaryPath(Path path) { + return nativeGetBoundaryPath(mNativeRegion, path.ni()); + } + + /** + * Return true if the region contains the specified point + */ + public native boolean contains(int x, int y); + /** + * Return true if the region is a single rectangle (not complex) and it + * contains the specified rectangle. Returning false is not a guarantee + * that the rectangle is not contained by this region, but return true is a + * guarantee that the rectangle is contained by this region. + */ + public boolean quickContains(Rect r) { + return quickContains(r.left, r.top, r.right, r.bottom); + } + /** + * Return true if the region is a single rectangle (not complex) and it + * contains the specified rectangle. Returning false is not a guarantee + * that the rectangle is not contained by this region, but return true is a + * guarantee that the rectangle is contained by this region. + */ + public native boolean quickContains(int left, int top, int right, + int bottom); + /** + * Return true if the region is empty, or if the specified rectangle does + * not intersect the region. Returning false is not a guarantee that they + * intersect, but returning true is a guarantee that they do not. + */ + public boolean quickReject(Rect r) { + return quickReject(r.left, r.top, r.right, r.bottom); + } + /** + * Return true if the region is empty, or if the specified rectangle does + * not intersect the region. Returning false is not a guarantee that they + * intersect, but returning true is a guarantee that they do not. + */ + public native boolean quickReject(int left, int top, int right, int bottom); + /** + * Return true if the region is empty, or if the specified region does not + * intersect the region. Returning false is not a guarantee that they + * intersect, but returning true is a guarantee that they do not. + */ + public native boolean quickReject(Region rgn); + /** + * Translate the region by [dx, dy]. If the region is empty, do nothing. + */ + public void translate(int dx, int dy) { + translate(dx, dy, null); + } + /** + * Set the dst region to the result of translating this region by [dx, dy]. + * If this region is empty, then dst will be set to empty. + */ + public native void translate(int dx, int dy, Region dst); + /** + * Scale the region by the given scale amount. This re-constructs new region by + * scaling the rects that this region consists of. New rectis are computed by scaling + * coordinates by float, then rounded by roundf() function to integers. This may results + * in less internal rects if 0 < scale < 1. Zero and Negative scale result in + * an empty region. If this region is empty, do nothing. + * + * @hide + */ + public void scale(float scale) { + scale(scale, null); + } + /** + * Set the dst region to the result of scaling this region by the given scale amount. + * If this region is empty, then dst will be set to empty. + * @hide + */ + public native void scale(float scale, Region dst); + public final boolean union(Rect r) { + return op(r, Op.UNION); + } + /** + * Perform the specified Op on this region and the specified rect. Return + * true if the result of the op is not empty. + */ + public boolean op(Rect r, Op op) { + return nativeOp(mNativeRegion, r.left, r.top, r.right, r.bottom, + op.nativeInt); + } + /** + * Perform the specified Op on this region and the specified rect. Return + * true if the result of the op is not empty. + */ + public boolean op(int left, int top, int right, int bottom, Op op) { + return nativeOp(mNativeRegion, left, top, right, bottom, + op.nativeInt); + } + /** + * Perform the specified Op on this region and the specified region. Return + * true if the result of the op is not empty. + */ + public boolean op(Region region, Op op) { + return op(this, region, op); + } + /** + * Set this region to the result of performing the Op on the specified rect + * and region. Return true if the result is not empty. + */ + public boolean op(Rect rect, Region region, Op op) { + return nativeOp(mNativeRegion, rect, region.mNativeRegion, + op.nativeInt); + } + /** + * Set this region to the result of performing the Op on the specified + * regions. Return true if the result is not empty. + */ + public boolean op(Region region1, Region region2, Op op) { + return nativeOp(mNativeRegion, region1.mNativeRegion, + region2.mNativeRegion, op.nativeInt); + } + public String toString() { + return nativeToString(mNativeRegion); + } + /** + * @return An instance from a pool if such or a new one. + * + * @hide + */ + public static Region obtain() { + //Region region = sPool.acquire(); + return /*(region != null) ? region : */new Region(); + } + /** + * @return An instance from a pool if such or a new one. + * + * @param other Region to copy values from for initialization. + * + * @hide + */ + public static Region obtain(Region other) { + Region region = obtain(); + region.set(other); + return region; + } + /** + * Recycles an instance. + * + * @hide + */ + public void recycle() { + setEmpty(); +// sPool.release(this); + } + ////////////////////////////////////////////////////////////////////////// + + @Override + public boolean equals(Object obj) { + if (obj == null || !(obj instanceof Region)) { + return false; + } + Region peer = (Region) obj; + return nativeEquals(mNativeRegion, peer.mNativeRegion); + } + protected void finalize() throws Throwable { + try { + nativeDestructor(mNativeRegion); + } finally { + super.finalize(); + } + } + + Region(int ni) { + if (ni == 0) { + throw new RuntimeException(); + } + mNativeRegion = ni; + } + /* add dummy parameter so constructor can be called from jni without + triggering 'not cloneable' exception */ + private Region(int ni, int dummy) { + this(ni); + } + final int ni() { + return mNativeRegion; + } + private static native boolean nativeEquals(int native_r1, int native_r2); + private static native int nativeConstructor(); + private static native void nativeDestructor(int native_region); + private static native void nativeSetRegion(int native_dst, int native_src); + private static native boolean nativeSetRect(int native_dst, int left, + int top, int right, int bottom); + private static native boolean nativeSetPath(int native_dst, int native_path, + int native_clip); + private static native boolean nativeGetBounds(int native_region, Rect rect); + private static native boolean nativeGetBoundaryPath(int native_region, + int native_path); + private static native boolean nativeOp(int native_dst, int left, int top, + int right, int bottom, int op); + private static native boolean nativeOp(int native_dst, Rect rect, + int native_region, int op); + private static native boolean nativeOp(int native_dst, int native_region1, + int native_region2, int op); + private static native String nativeToString(int native_region); +} diff --git a/src/api-impl/android/graphics/Typeface.java b/src/api-impl/android/graphics/Typeface.java new file mode 100644 index 00000000..30cddc64 --- /dev/null +++ b/src/api-impl/android/graphics/Typeface.java @@ -0,0 +1,11 @@ +package android.graphics; + +import android.content.res.AssetManager; + +public class Typeface { + + public static Typeface createFromAsset(AssetManager mgr, String path) { + return null; + } + +} diff --git a/src/api-impl/android/hardware/Sensor.java b/src/api-impl/android/hardware/Sensor.java new file mode 100644 index 00000000..89a58196 --- /dev/null +++ b/src/api-impl/android/hardware/Sensor.java @@ -0,0 +1,420 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package android.hardware; + +import android.os.Build; + +/** + * Class representing a sensor. Use {@link SensorManager#getSensorList} to get + * the list of available Sensors. + * + * @see SensorManager + * @see SensorEventListener + * @see SensorEvent + * + */ +public final class Sensor { + + /** + * A constant describing an accelerometer sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_ACCELEROMETER = 1; + + /** + * A constant describing a magnetic field sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_MAGNETIC_FIELD = 2; + + /** + * A constant describing an orientation sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + * + * @deprecated use {@link android.hardware.SensorManager#getOrientation + * SensorManager.getOrientation()} instead. + */ + @Deprecated + public static final int TYPE_ORIENTATION = 3; + + /** A constant describing a gyroscope sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. */ + public static final int TYPE_GYROSCOPE = 4; + + /** + * A constant describing a light sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_LIGHT = 5; + + /** A constant describing a pressure sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. */ + public static final int TYPE_PRESSURE = 6; + + /** + * A constant describing a temperature sensor type + * + * @deprecated use + * {@link android.hardware.Sensor#TYPE_AMBIENT_TEMPERATURE + * Sensor.TYPE_AMBIENT_TEMPERATURE} instead. + */ + @Deprecated + public static final int TYPE_TEMPERATURE = 7; + + /** + * A constant describing a proximity sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_PROXIMITY = 8; + + /** + * A constant describing a gravity sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_GRAVITY = 9; + + /** + * A constant describing a linear acceleration sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_LINEAR_ACCELERATION = 10; + + /** + * A constant describing a rotation vector sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_ROTATION_VECTOR = 11; + + /** + * A constant describing a relative humidity sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. + */ + public static final int TYPE_RELATIVE_HUMIDITY = 12; + + /** A constant describing an ambient temperature sensor type. + *

See {@link android.hardware.SensorEvent#values SensorEvent.values} + * for more details. */ + public static final int TYPE_AMBIENT_TEMPERATURE = 13; + + /** + * A constant describing an uncalibrated magnetic field sensor type. + *

+ * Similar to {@link #TYPE_MAGNETIC_FIELD} but the hard iron calibration (device calibration + * due to distortions that arise from magnetized iron, steel or permanent magnets on the + * device) is not considered in the given sensor values. However, such hard iron bias values + * are returned to you separately in the result {@link android.hardware.SensorEvent#values} + * so you may use them for custom calibrations. + *

Also, no periodic calibration is performed + * (i.e. there are no discontinuities in the data stream while using this sensor) and + * assumptions that the magnetic field is due to the Earth's poles is avoided, but + * factory calibration and temperature compensation have been performed. + *

+ *

See {@link android.hardware.SensorEvent#values SensorEvent.values} for more + * details. + */ + public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; + + /** + * A constant describing an uncalibrated rotation vector sensor type. + *

Identical to {@link #TYPE_ROTATION_VECTOR} except that it doesn't + * use the geomagnetic field. Therefore the Y axis doesn't + * point north, but instead to some other reference, that reference is + * allowed to drift by the same order of magnitude as the gyroscope + * drift around the Z axis. + *

+ * In the ideal case, a phone rotated and returning to the same real-world + * orientation should report the same game rotation vector + * (without using the earth's geomagnetic field). However, the orientation + * may drift somewhat over time. + *

+ *

See {@link android.hardware.SensorEvent#values SensorEvent.values} for more + * details. + */ + + public static final int TYPE_GAME_ROTATION_VECTOR = 15; + + /** + * A constant describing an uncalibrated gyroscope sensor type. + *

Similar to {@link #TYPE_GYROSCOPE} but no gyro-drift compensation has been performed + * to adjust the given sensor values. However, such gyro-drift bias values + * are returned to you separately in the result {@link android.hardware.SensorEvent#values} + * so you may use them for custom calibrations. + *

Factory calibration and temperature compensation is still applied + * to the rate of rotation (angular speeds). + *

+ *

See {@link android.hardware.SensorEvent#values SensorEvent.values} for more + * details. + */ + public static final int TYPE_GYROSCOPE_UNCALIBRATED = 16; + + /** + * A constant describing a significant motion trigger sensor. + *

+ * It triggers when an event occurs and then automatically disables + * itself. The sensor continues to operate while the device is asleep + * and will automatically wake the device to notify when significant + * motion is detected. The application does not need to hold any wake + * locks for this sensor to trigger. + *

See {@link TriggerEvent} for more details. + */ + public static final int TYPE_SIGNIFICANT_MOTION = 17; + + /** + * A constant describing a step detector sensor. + *

+ * A sensor of this type triggers an event each time a step is taken by the user. The only + * allowed value to return is 1.0 and an event is generated for each step. Like with any other + * event, the timestamp indicates when the event (here the step) occurred, this corresponds to + * when the foot hit the ground, generating a high variation in acceleration. + *

+ * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details. + */ + public static final int TYPE_STEP_DETECTOR = 18; + + /** + * A constant describing a step counter sensor. + *

+ * A sensor of this type returns the number of steps taken by the user since the last reboot + * while activated. The value is returned as a float (with the fractional part set to zero) and + * is reset to zero only on a system reboot. The timestamp of the event is set to the time when + * the first step for that event was taken. This sensor is implemented in hardware and is + * expected to be low power. + *

+ * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details. + */ + public static final int TYPE_STEP_COUNTER = 19; + + /** + * A constant describing the geo-magnetic rotation vector. + *

+ * Similar to {@link #TYPE_ROTATION_VECTOR}, but using a magnetometer instead of using a + * gyroscope. This sensor uses lower power than the other rotation vectors, because it doesn't + * use the gyroscope. However, it is more noisy and will work best outdoors. + *

+ * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details. + */ + public static final int TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20; + + /** + * A constant describing all sensor types. + */ + public static final int TYPE_ALL = -1; + + /* Reporting mode constants for sensors. Each sensor will have exactly one + reporting mode associated with it. */ + // Events are reported at a constant rate. + static int REPORTING_MODE_CONTINUOUS = 1; + + // Events are reported only when the value changes. + static int REPORTING_MODE_ON_CHANGE = 2; + + // Upon detection of an event, the sensor deactivates itself and then sends a single event. + static int REPORTING_MODE_ONE_SHOT = 3; + + // TODO(): The following arrays are fragile and error-prone. This needs to be refactored. + + // Note: This needs to be updated, whenever a new sensor is added. + // Holds the reporting mode and maximum length of the values array + // associated with + // {@link SensorEvent} or {@link TriggerEvent} for the Sensor + private static final int[] sSensorReportingModes = { + 0, 0, // padding because sensor types start at 1 + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_ACCELEROMETER + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_GEOMAGNETIC_FIELD + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_ORIENTATION + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_GYROSCOPE + REPORTING_MODE_ON_CHANGE, 3, // SENSOR_TYPE_LIGHT + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_PRESSURE + REPORTING_MODE_ON_CHANGE, 3, // SENSOR_TYPE_TEMPERATURE + REPORTING_MODE_ON_CHANGE, 3, // SENSOR_TYPE_PROXIMITY + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_GRAVITY + REPORTING_MODE_CONTINUOUS, 3, // SENSOR_TYPE_LINEAR_ACCELERATION + REPORTING_MODE_CONTINUOUS, 5, // SENSOR_TYPE_ROTATION_VECTOR + REPORTING_MODE_ON_CHANGE, 3, // SENSOR_TYPE_RELATIVE_HUMIDITY + REPORTING_MODE_ON_CHANGE, 3, // SENSOR_TYPE_AMBIENT_TEMPERATURE + REPORTING_MODE_CONTINUOUS, 6, // SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED + REPORTING_MODE_CONTINUOUS, 4, // SENSOR_TYPE_GAME_ROTATION_VECTOR + REPORTING_MODE_CONTINUOUS, 6, // SENSOR_TYPE_GYROSCOPE_UNCALIBRATED + REPORTING_MODE_ONE_SHOT, 1, // SENSOR_TYPE_SIGNIFICANT_MOTION + // added post 4.3 + REPORTING_MODE_ON_CHANGE, 1, // SENSOR_TYPE_STEP_DETECTOR + REPORTING_MODE_ON_CHANGE, 1, // SENSOR_TYPE_STEP_COUNTER + REPORTING_MODE_CONTINUOUS, 5 // SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR + }; + + static int getReportingMode(Sensor sensor) { + int offset = sensor.mType * 2; + if (offset >= sSensorReportingModes.length) { + // we don't know about this sensor, so this is probably a + // vendor-defined sensor, in that case, we figure out the reporting + // mode from the sensor meta-data. + int minDelay = sensor.mMinDelay; + if (minDelay == 0) { + return REPORTING_MODE_ON_CHANGE; + } else if (minDelay < 0) { + return REPORTING_MODE_ONE_SHOT; + } else { + return REPORTING_MODE_CONTINUOUS; + } + } + return sSensorReportingModes[offset]; + } + + static int getMaxLengthValuesArray(Sensor sensor, int sdkLevel) { + int type = sensor.mType; + // RotationVector length has changed to 3 to 5 for API level 18 + // Set it to 3 for backward compatibility. + if (type == Sensor.TYPE_ROTATION_VECTOR && + sdkLevel <= Build.VERSION_CODES.JELLY_BEAN_MR1) { + return 3; + } + int offset = type * 2 + 1; + if (offset >= sSensorReportingModes.length) { + // we don't know about this sensor, so this is probably a + // vendor-defined sensor, in that case, we don't know how many value + // it has + // so we return the maximum and assume the app will know. + // FIXME: sensor HAL should advertise how much data is returned per + // sensor + return 16; + } + return sSensorReportingModes[offset]; + } + + /* Some of these fields are set only by the native bindings in + * SensorManager. + */ + private String mName; + private String mVendor; + private int mVersion; + private int mHandle; + private int mType; + private float mMaxRange; + private float mResolution; + private float mPower; + private int mMinDelay; + private int mFifoReservedEventCount; + private int mFifoMaxEventCount; + + Sensor() { + } + + /** + * @return name string of the sensor. + */ + public String getName() { + return mName; + } + + /** + * @return vendor string of this sensor. + */ + public String getVendor() { + return mVendor; + } + + /** + * @return generic type of this sensor. + */ + public int getType() { + return mType; + } + + /** + * @return version of the sensor's module. + */ + public int getVersion() { + return mVersion; + } + + /** + * @return maximum range of the sensor in the sensor's unit. + */ + public float getMaximumRange() { + return mMaxRange; + } + + /** + * @return resolution of the sensor in the sensor's unit. + */ + public float getResolution() { + return mResolution; + } + + /** + * @return the power in mA used by this sensor while in use + */ + public float getPower() { + return mPower; + } + + /** + * @return the minimum delay allowed between two events in microsecond + * or zero if this sensor only returns a value when the data it's measuring + * changes. + */ + public int getMinDelay() { + return mMinDelay; + } + + /** + * @return Number of events reserved for this sensor in the batch mode FIFO. This gives a + * guarantee on the minimum number of events that can be batched. + */ + public int getFifoReservedEventCount() { + return mFifoReservedEventCount; + } + + /** + * @return Maximum number of events of this sensor that could be batched. If this value is zero + * it indicates that batch mode is not supported for this sensor. If other applications + * registered to batched sensors, the actual number of events that can be batched might be + * smaller because the hardware FiFo will be partially used to batch the other sensors. + */ + public int getFifoMaxEventCount() { + return mFifoMaxEventCount; + } + + /** @hide */ + public int getHandle() { + return mHandle; + } + + void setRange(float max, float res) { + mMaxRange = max; + mResolution = res; + } + + @Override + public String toString() { + return "{Sensor name=\"" + mName + "\", vendor=\"" + mVendor + "\", version=" + mVersion + + ", type=" + mType + ", maxRange=" + mMaxRange + ", resolution=" + mResolution + + ", power=" + mPower + ", minDelay=" + mMinDelay + "}"; + } +} diff --git a/src/api-impl/android/hardware/SensorEventListener.java b/src/api-impl/android/hardware/SensorEventListener.java new file mode 100644 index 00000000..6ff7769a --- /dev/null +++ b/src/api-impl/android/hardware/SensorEventListener.java @@ -0,0 +1,5 @@ +package android.hardware; + +public interface SensorEventListener { + +} diff --git a/src/api-impl/android/hardware/SensorManager.java b/src/api-impl/android/hardware/SensorManager.java new file mode 100644 index 00000000..59103a7a --- /dev/null +++ b/src/api-impl/android/hardware/SensorManager.java @@ -0,0 +1,7 @@ +package android.hardware; + +public class SensorManager { + public Sensor getDefaultSensor(int type) { + return null; + } +} diff --git a/src/api-impl/android/location/Criteria.java b/src/api-impl/android/location/Criteria.java new file mode 100644 index 00000000..27c2c968 --- /dev/null +++ b/src/api-impl/android/location/Criteria.java @@ -0,0 +1,15 @@ +package android.location; + +public class Criteria { + public static final int NO_REQUIREMENT = 0; + public static final int POWER_LOW = 1; + public static final int POWER_MEDIUM = 2; + public static final int POWER_HIGH = 3; + public static final int ACCURACY_FINE = 1; + public static final int ACCURACY_COARSE = 2; + public static final int ACCURACY_LOW = 1; + public static final int ACCURACY_MEDIUM = 2; + public static final int ACCURACY_HIGH = 3; + + public void setAccuracy(int accuracy) {} +} diff --git a/src/api-impl/android/location/LocationListener.java b/src/api-impl/android/location/LocationListener.java new file mode 100644 index 00000000..a7e68ad6 --- /dev/null +++ b/src/api-impl/android/location/LocationListener.java @@ -0,0 +1,5 @@ +package android.location; + +public interface LocationListener { + +} diff --git a/src/api-impl/android/media/AudioManager.java b/src/api-impl/android/media/AudioManager.java new file mode 100644 index 00000000..f068c5ff --- /dev/null +++ b/src/api-impl/android/media/AudioManager.java @@ -0,0 +1,10 @@ +package android.media; + +public class AudioManager { + public interface OnAudioFocusChangeListener { + } + + public int getRingerMode() { + return 0; + } +} diff --git a/src/api-impl/android/media/AudioTrack.java b/src/api-impl/android/media/AudioTrack.java new file mode 100644 index 00000000..af614a3b --- /dev/null +++ b/src/api-impl/android/media/AudioTrack.java @@ -0,0 +1,78 @@ +package android.media; + +public class AudioTrack { + public interface OnPlaybackPositionUpdateListener { + void onMarkerReached(AudioTrack track); + void onPeriodicNotification(AudioTrack track); + } + + int streamType; + int sampleRateInHz; + int channelConfig; + int audioFormat; + int bufferSizeInBytes; + int mode; + + // for native code's use + long pcm_handle; + long params; + int channels; + int period_time; + // mostly + static int frames; + OnPlaybackPositionUpdateListener periodic_update_listener; + + native void native_constructor(int streamType, int sampleRateInHz, int num_channels, int audioFormat, int bufferSizeInBytes, int mode); + public AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode) { + this.streamType = streamType; + this.sampleRateInHz = sampleRateInHz; + this.channelConfig = channelConfig; + this.audioFormat = audioFormat; + this.bufferSizeInBytes = bufferSizeInBytes; + this.mode = mode; + + System.out.println("\n\n\nAudioTrack("+streamType+", "+sampleRateInHz+", "+channelConfig+", "+audioFormat+", "+bufferSizeInBytes+", "+mode+"); called\n\n\n\n"); + + int num_channels; + switch(channelConfig) { + case 2: + num_channels = 1; + break; + default: + num_channels = 1; + } + + native_constructor(streamType, sampleRateInHz, num_channels, audioFormat, bufferSizeInBytes, mode); + } + + public static native int getMinBufferSize (int sampleRateInHz, int channelConfig, int audioFormat); + + public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener) { + this.periodic_update_listener = listener; + } + + public int setPositionNotificationPeriod(int periodInFrames) { + System.out.println("\n\n\nsetPositionNotificationPeriod("+periodInFrames+"); called\n\n\n\n"); + return 0; // SUCCESS + } + + public int getPositionNotificationPeriod() { + return this.frames; + } + + public native void play(); + + public void stop() { + System.out.println("calling stop(), how did this not get reported before DIDREEEEEEEEEEEEEEEEEEEEEEEEE\n"); + } + + public void flush() { + System.out.println("calling flush(), how did this not get reported before DIDREEEEEEEEEEEEEEEEEEEEEEEEE\n"); + } + + public void release() { + System.out.println("calling release(), how did this not get reported before DIDREEEEEEEEEEEEEEEEEEEEEEEEE\n"); + } + + public native int write (byte[] audioData, int offsetInBytes, int sizeInBytes); +} diff --git a/src/api-impl/android/media/MediaPlayer.java b/src/api-impl/android/media/MediaPlayer.java new file mode 100644 index 00000000..60129786 --- /dev/null +++ b/src/api-impl/android/media/MediaPlayer.java @@ -0,0 +1,20 @@ +package android.media; + +public class MediaPlayer { + public interface OnCompletionListener { + } + public interface OnErrorListener { + } + public interface OnPreparedListener { + } + public interface OnBufferingUpdateListener { + } + public interface OnInfoListener { + } + public interface OnSeekCompleteListener { + } + public interface OnVideoSizeChangedListener { + } + public interface MediaPlayerControl { + } +} diff --git a/src/api-impl/android/media/SoundPool.java b/src/api-impl/android/media/SoundPool.java new file mode 100644 index 00000000..104a1a88 --- /dev/null +++ b/src/api-impl/android/media/SoundPool.java @@ -0,0 +1,12 @@ +package android.media; + +import android.content.res.AssetFileDescriptor; + +public class SoundPool { + public SoundPool (int maxStreams, int streamType, int srcQuality) { + } + + public int load(AssetFileDescriptor afd, int priority) { + return 0; + } +} diff --git a/src/api-impl/android/net/ConnectivityManager.java b/src/api-impl/android/net/ConnectivityManager.java new file mode 100644 index 00000000..c8ce2934 --- /dev/null +++ b/src/api-impl/android/net/ConnectivityManager.java @@ -0,0 +1,11 @@ +package android.net; + +public class ConnectivityManager { + public NetworkInfo getNetworkInfo (int networkType) { + return null; // this means the network type is not supported, which should make properly coded apps cease any attempts to use network-related APIs + } + + public NetworkInfo getActiveNetworkInfo () { + return null; // there is no active network, because there isn't any network at all + } +} diff --git a/src/api-impl/android/net/NetworkInfo.java b/src/api-impl/android/net/NetworkInfo.java new file mode 100644 index 00000000..a2a0b6c3 --- /dev/null +++ b/src/api-impl/android/net/NetworkInfo.java @@ -0,0 +1,20 @@ +package android.net; + +public class NetworkInfo { + public enum State { + CONNECTED, + CONNECTING, + DISCONNECTED, + DISCONNECTING, + SUSPENDED, + UNKNOWN + } + + public NetworkInfo.State getState() { + return State.DISCONNECTED; + } + + public int getType() { + return 0x8; // where did you even get a NetworkInfo object... there is no network + } +} diff --git a/src/api-impl/android/net/Uri.java b/src/api-impl/android/net/Uri.java new file mode 100644 index 00000000..371dab3c --- /dev/null +++ b/src/api-impl/android/net/Uri.java @@ -0,0 +1,5 @@ +package android.net; + +public class Uri { + +} diff --git a/src/api-impl/android/opengl/EGLConfig.java b/src/api-impl/android/opengl/EGLConfig.java new file mode 100644 index 00000000..a7a6bbb8 --- /dev/null +++ b/src/api-impl/android/opengl/EGLConfig.java @@ -0,0 +1,37 @@ +/* +** +** Copyright 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 android.opengl; + +/** + * Wrapper class for native EGLConfig objects. + * + */ +public class EGLConfig extends EGLObjectHandle { + private EGLConfig(int handle) { + super(handle); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof EGLConfig)) return false; + + EGLConfig that = (EGLConfig) o; + return getHandle() == that.getHandle(); + } +} diff --git a/src/api-impl/android/opengl/EGLObjectHandle.java b/src/api-impl/android/opengl/EGLObjectHandle.java new file mode 100644 index 00000000..d2710de4 --- /dev/null +++ b/src/api-impl/android/opengl/EGLObjectHandle.java @@ -0,0 +1,47 @@ +/* +** +** Copyright 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 android.opengl; + +/** + * Base class for wrapped EGL objects. + * + */ +public abstract class EGLObjectHandle { + private final int mHandle; + + protected EGLObjectHandle(int handle) { + mHandle = handle; + } + + /** + * Returns the native handle of the wrapped EGL object. This handle can be + * cast to the corresponding native type on the native side. + * + * For example, EGLDisplay dpy = (EGLDisplay)handle; + * + * @return the native handle of the wrapped EGL object. + */ + public int getHandle() { + return mHandle; + } + + @Override + public int hashCode() { + return getHandle(); + } +} diff --git a/src/api-impl/android/opengl/GLSurfaceView.java b/src/api-impl/android/opengl/GLSurfaceView.java new file mode 100644 index 00000000..d478d5a6 --- /dev/null +++ b/src/api-impl/android/opengl/GLSurfaceView.java @@ -0,0 +1,177 @@ +package android.opengl; + +import android.util.AttributeSet; +import android.content.Context; + +import javax.microedition.khronos.egl.EGLContext; +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLDisplay; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +import com.google.android.gles_jni.EGLImpl; + +import android.view.View; + +import android.view.MotionEvent; + +public class GLSurfaceView extends View { // TODO: have this extend SurfaceView once that one is implemented? + EGLContextFactory context_factory = new default_ContextFactory(); + EGLConfigChooser config_chooser = new boolean_ConfigChooser(true); + EGL10 java_egl_wrapper; + GL10 java_gl_wrapper; + int opengl_version = 1; + + public GLSurfaceView(AttributeSet attrs) { + super(attrs); + + java_egl_wrapper = (EGL10)EGLContext.getEGL(); + java_gl_wrapper = (GL10)EGLContext.getGL(); + native_constructor(attrs); + } + + public GLSurfaceView(Context context) { + super(context); + + java_egl_wrapper = (EGL10)EGLContext.getEGL(); + java_gl_wrapper = (GL10)EGLContext.getGL(); + native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + public boolean onTouchEvent (MotionEvent event) { + return true; + } + + public void setEGLConfigChooser(EGLConfigChooser chooser) { + config_chooser = chooser; + } + + public void setEGLConfigChooser (boolean needDepth) { + config_chooser = new boolean_ConfigChooser(needDepth); + } + + public void setEGLConfigChooser(int redSize, int greenSize, int blueSize, + int alphaSize, int depthSize, int stencilSize) { +// setEGLConfigChooser(new ComponentSizeChooser(redSize, greenSize, +// blueSize, alphaSize, depthSize, stencilSize)); + } + + public void setEGLContextFactory(EGLContextFactory factory) { + context_factory = factory; + } + + public void setEGLContextClientVersion(int version) { + opengl_version = version; + } + + public void setPreserveEGLContextOnPause(boolean preserveOnPause) {} + + public synchronized boolean shouldTerminateEGLWhenPausing() { + return false; + } + + private native void native_set_renderer(Renderer renderer, boolean implements_onTouchEvent); + + public void setRenderer(Renderer renderer) { + System.out.println("setRenderer("+renderer+") called"); + + boolean implements_onTouchEvent; + + try { + Class[] cArg = new Class[1]; + cArg[0] = MotionEvent.class; + implements_onTouchEvent = !( this.getClass().getMethod("onTouchEvent", cArg).getDeclaringClass() == View.class ); + } catch (NoSuchMethodException e) { + implements_onTouchEvent = false; + } + + native_set_renderer(renderer, implements_onTouchEvent); +/* checkRenderThreadState(); + if (mEGLConfigChooser == null) { + mEGLConfigChooser = new SimpleEGLConfigChooser(true); + } + if (mEGLContextFactory == null) { + mEGLContextFactory = new DefaultContextFactory(); + } + if (mEGLWindowSurfaceFactory == null) { + mEGLWindowSurfaceFactory = new DefaultWindowSurfaceFactory(); + } + mRenderer = renderer; + mGLThread = new GLThread(mThisWeakRef); + mGLThread.start();*/ + } + + public interface Renderer { + void onSurfaceCreated(GL10 gl, EGLConfig config); + void onSurfaceChanged(GL10 gl, int width, int height); + void onDrawFrame(GL10 gl); + } + + private long wrap_EGLConfigChooser_chooseConfig(long egl_display) { + if(config_chooser != null) { + EGLConfig egl_config = config_chooser.chooseConfig(java_egl_wrapper, new EGLDisplay(egl_display)); + return egl_config.native_egl_config; + } + else { + throw new java.lang.NullPointerException("FIXME: EGLConfigChooser is NULL (time to provide a default implementation?)"); + } + } + + private long wrap_EGLContextFactory_createContext(long egl_display, long egl_config) { + if(context_factory != null) { + EGLContext egl_context = context_factory.createContext(java_egl_wrapper, new EGLDisplay(egl_display), new EGLConfig(egl_config)); + return egl_context.native_egl_context; + } + else { + throw new java.lang.NullPointerException("FIXME: EGLContextFactory is NULL (time to provide a default implementation?)"); + } + } + + private static class boolean_ConfigChooser implements GLSurfaceView.EGLConfigChooser { + // TODO - what happens if we actually allow for 16 bits per color? + private static int[] config_attribs_no_depth = {EGL10.EGL_RED_SIZE, 8, EGL10.EGL_GREEN_SIZE, 8, EGL10.EGL_BLUE_SIZE, 8, EGL10.EGL_ALPHA_SIZE, 0, EGL10.EGL_DEPTH_SIZE, 0, EGL10.EGL_STENCIL_SIZE, 0, EGL10.EGL_NONE}; + private static int[] config_attribs_depth = {EGL10.EGL_RED_SIZE, 8, EGL10.EGL_GREEN_SIZE, 8, EGL10.EGL_BLUE_SIZE, 8, EGL10.EGL_ALPHA_SIZE, 0, EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_STENCIL_SIZE, 0, EGL10.EGL_NONE}; + + private boolean want_depth; + + public boolean_ConfigChooser(boolean depth) { + want_depth = depth; + } + + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { + int[] num_config = new int[1]; + egl.eglChooseConfig(display, want_depth ? config_attribs_depth : config_attribs_no_depth, null, 0, num_config); + int numConfigs = num_config[0]; + if (numConfigs <= 0) { + throw new IllegalArgumentException("boolean_ConfigChooser: no configs match"); + } + EGLConfig[] configs = new EGLConfig[numConfigs]; + egl.eglChooseConfig(display, want_depth ? config_attribs_depth : config_attribs_no_depth, configs, numConfigs, num_config); + return configs[0]; // TODO - something smarter here? + } + } + + private static class default_ContextFactory implements GLSurfaceView.EGLContextFactory { + public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) { + return egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, new int[]{EGL10.EGL_CONTEXT_CLIENT_VERSION, 2/*opengl_version*/, EGL10.EGL_NONE}); + } + + public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) { + egl.eglDestroyContext(display, context); + } + } + + // interfaces + + public interface EGLConfigChooser { + EGLConfig chooseConfig(EGL10 egl, EGLDisplay display); + } + + public interface EGLContextFactory { + EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig); +// void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context); + } +} diff --git a/src/api-impl/android/os/AsyncTask.java b/src/api-impl/android/os/AsyncTask.java new file mode 100644 index 00000000..d4a30064 --- /dev/null +++ b/src/api-impl/android/os/AsyncTask.java @@ -0,0 +1,668 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import java.util.ArrayDeque; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.CancellationException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +/** + *

AsyncTask enables proper and easy use of the UI thread. This class allows to + * perform background operations and publish results on the UI thread without + * having to manipulate threads and/or handlers.

+ * + *

AsyncTask is designed to be a helper class around {@link Thread} and {@link Handler} + * and does not constitute a generic threading framework. AsyncTasks should ideally be + * used for short operations (a few seconds at the most.) If you need to keep threads + * running for long periods of time, it is highly recommended you use the various APIs + * provided by the java.util.concurrent pacakge such as {@link Executor}, + * {@link ThreadPoolExecutor} and {@link FutureTask}.

+ * + *

An asynchronous task is defined by a computation that runs on a background thread and + * whose result is published on the UI thread. An asynchronous task is defined by 3 generic + * types, called Params, Progress and Result, + * and 4 steps, called onPreExecute, doInBackground, + * onProgressUpdate and onPostExecute.

+ * + *
+ *

Developer Guides

+ *

For more information about using tasks and threads, read the + * Processes and + * Threads developer guide.

+ *
+ * + *

Usage

+ *

AsyncTask must be subclassed to be used. The subclass will override at least + * one method ({@link #doInBackground}), and most often will override a + * second one ({@link #onPostExecute}.)

+ * + *

Here is an example of subclassing:

+ *
+ * private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
+ *     protected Long doInBackground(URL... urls) {
+ *         int count = urls.length;
+ *         long totalSize = 0;
+ *         for (int i = 0; i < count; i++) {
+ *             totalSize += Downloader.downloadFile(urls[i]);
+ *             publishProgress((int) ((i / (float) count) * 100));
+ *             // Escape early if cancel() is called
+ *             if (isCancelled()) break;
+ *         }
+ *         return totalSize;
+ *     }
+ *
+ *     protected void onProgressUpdate(Integer... progress) {
+ *         setProgressPercent(progress[0]);
+ *     }
+ *
+ *     protected void onPostExecute(Long result) {
+ *         showDialog("Downloaded " + result + " bytes");
+ *     }
+ * }
+ * 
+ * + *

Once created, a task is executed very simply:

+ *
+ * new DownloadFilesTask().execute(url1, url2, url3);
+ * 
+ * + *

AsyncTask's generic types

+ *

The three types used by an asynchronous task are the following:

+ *
    + *
  1. Params, the type of the parameters sent to the task upon + * execution.
  2. + *
  3. Progress, the type of the progress units published during + * the background computation.
  4. + *
  5. Result, the type of the result of the background + * computation.
  6. + *
+ *

Not all types are always used by an asynchronous task. To mark a type as unused, + * simply use the type {@link Void}:

+ *
+ * private class MyTask extends AsyncTask<Void, Void, Void> { ... }
+ * 
+ * + *

The 4 steps

+ *

When an asynchronous task is executed, the task goes through 4 steps:

+ *
    + *
  1. {@link #onPreExecute()}, invoked on the UI thread before the task + * is executed. This step is normally used to setup the task, for instance by + * showing a progress bar in the user interface.
  2. + *
  3. {@link #doInBackground}, invoked on the background thread + * immediately after {@link #onPreExecute()} finishes executing. This step is used + * to perform background computation that can take a long time. The parameters + * of the asynchronous task are passed to this step. The result of the computation must + * be returned by this step and will be passed back to the last step. This step + * can also use {@link #publishProgress} to publish one or more units + * of progress. These values are published on the UI thread, in the + * {@link #onProgressUpdate} step.
  4. + *
  5. {@link #onProgressUpdate}, invoked on the UI thread after a + * call to {@link #publishProgress}. The timing of the execution is + * undefined. This method is used to display any form of progress in the user + * interface while the background computation is still executing. For instance, + * it can be used to animate a progress bar or show logs in a text field.
  6. + *
  7. {@link #onPostExecute}, invoked on the UI thread after the background + * computation finishes. The result of the background computation is passed to + * this step as a parameter.
  8. + *
+ * + *

Cancelling a task

+ *

A task can be cancelled at any time by invoking {@link #cancel(boolean)}. Invoking + * this method will cause subsequent calls to {@link #isCancelled()} to return true. + * After invoking this method, {@link #onCancelled(Object)}, instead of + * {@link #onPostExecute(Object)} will be invoked after {@link #doInBackground(Object[])} + * returns. To ensure that a task is cancelled as quickly as possible, you should always + * check the return value of {@link #isCancelled()} periodically from + * {@link #doInBackground(Object[])}, if possible (inside a loop for instance.)

+ * + *

Threading rules

+ *

There are a few threading rules that must be followed for this class to + * work properly:

+ *
    + *
  • The AsyncTask class must be loaded on the UI thread. This is done + * automatically as of {@link android.os.Build.VERSION_CODES#JELLY_BEAN}.
  • + *
  • The task instance must be created on the UI thread.
  • + *
  • {@link #execute} must be invoked on the UI thread.
  • + *
  • Do not call {@link #onPreExecute()}, {@link #onPostExecute}, + * {@link #doInBackground}, {@link #onProgressUpdate} manually.
  • + *
  • The task can be executed only once (an exception will be thrown if + * a second execution is attempted.)
  • + *
+ * + *

Memory observability

+ *

AsyncTask guarantees that all callback calls are synchronized in such a way that the following + * operations are safe without explicit synchronizations.

+ *
    + *
  • Set member fields in the constructor or {@link #onPreExecute}, and refer to them + * in {@link #doInBackground}. + *
  • Set member fields in {@link #doInBackground}, and refer to them in + * {@link #onProgressUpdate} and {@link #onPostExecute}. + *
+ * + *

Order of execution

+ *

When first introduced, AsyncTasks were executed serially on a single background + * thread. Starting with {@link android.os.Build.VERSION_CODES#DONUT}, this was changed + * to a pool of threads allowing multiple tasks to operate in parallel. Starting with + * {@link android.os.Build.VERSION_CODES#HONEYCOMB}, tasks are executed on a single + * thread to avoid common application errors caused by parallel execution.

+ *

If you truly want parallel execution, you can invoke + * {@link #executeOnExecutor(java.util.concurrent.Executor, Object[])} with + * {@link #THREAD_POOL_EXECUTOR}.

+ */ +public abstract class AsyncTask { + private static final String LOG_TAG = "AsyncTask"; + + private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); + private static final int CORE_POOL_SIZE = CPU_COUNT + 1; + private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1; + private static final int KEEP_ALIVE = 1; + + private static final ThreadFactory sThreadFactory = new ThreadFactory() { + private final AtomicInteger mCount = new AtomicInteger(1); + + public Thread newThread(Runnable r) { + return new Thread(r, "AsyncTask #" + mCount.getAndIncrement()); + } + }; + + private static final BlockingQueue sPoolWorkQueue = + new LinkedBlockingQueue(128); + + /** + * An {@link Executor} that can be used to execute tasks in parallel. + */ + public static final Executor THREAD_POOL_EXECUTOR + = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, + TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory); + + /** + * An {@link Executor} that executes tasks one at a time in serial + * order. This serialization is global to a particular process. + */ + public static final Executor SERIAL_EXECUTOR = new SerialExecutor(); + + private static final int MESSAGE_POST_RESULT = 0x1; + private static final int MESSAGE_POST_PROGRESS = 0x2; + + private static final InternalHandler sHandler = new InternalHandler(); + + private static volatile Executor sDefaultExecutor = SERIAL_EXECUTOR; + private final WorkerRunnable mWorker; + private final FutureTask mFuture; + + private volatile Status mStatus = Status.PENDING; + + private final AtomicBoolean mCancelled = new AtomicBoolean(); + private final AtomicBoolean mTaskInvoked = new AtomicBoolean(); + + private static class SerialExecutor implements Executor { + final ArrayDeque mTasks = new ArrayDeque(); + Runnable mActive; + + public synchronized void execute(final Runnable r) { + mTasks.offer(new Runnable() { + public void run() { + try { + r.run(); + } finally { + scheduleNext(); + } + } + }); + if (mActive == null) { + scheduleNext(); + } + } + + protected synchronized void scheduleNext() { + if ((mActive = mTasks.poll()) != null) { + THREAD_POOL_EXECUTOR.execute(mActive); + } + } + } + + /** + * Indicates the current status of the task. Each status will be set only once + * during the lifetime of a task. + */ + public enum Status { + /** + * Indicates that the task has not been executed yet. + */ + PENDING, + /** + * Indicates that the task is running. + */ + RUNNING, + /** + * Indicates that {@link AsyncTask#onPostExecute} has finished. + */ + FINISHED, + } + + /** @hide Used to force static handler to be created. */ + public static void init() { + sHandler.getLooper(); + } + + /** @hide */ + public static void setDefaultExecutor(Executor exec) { + sDefaultExecutor = exec; + } + + /** + * Creates a new asynchronous task. This constructor must be invoked on the UI thread. + */ + public AsyncTask() { + mWorker = new WorkerRunnable() { + public Result call() throws Exception { + mTaskInvoked.set(true); + + Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); + //noinspection unchecked + return postResult(doInBackground(mParams)); + } + }; + + mFuture = new FutureTask(mWorker) { + @Override + protected void done() { + try { + postResultIfNotInvoked(get()); + } catch (InterruptedException e) { + android.util.Log.w(LOG_TAG, e); + } catch (ExecutionException e) { + throw new RuntimeException("An error occured while executing doInBackground()", + e.getCause()); + } catch (CancellationException e) { + postResultIfNotInvoked(null); + } + } + }; + } + + private void postResultIfNotInvoked(Result result) { + final boolean wasTaskInvoked = mTaskInvoked.get(); + if (!wasTaskInvoked) { + postResult(result); + } + } + + private Result postResult(Result result) { + @SuppressWarnings("unchecked") + Message message = sHandler.obtainMessage(MESSAGE_POST_RESULT, + new AsyncTaskResult(this, result)); + message.sendToTarget(); + return result; + } + + /** + * Returns the current status of this task. + * + * @return The current status. + */ + public final Status getStatus() { + return mStatus; + } + + /** + * Override this method to perform a computation on a background thread. The + * specified parameters are the parameters passed to {@link #execute} + * by the caller of this task. + * + * This method can call {@link #publishProgress} to publish updates + * on the UI thread. + * + * @param params The parameters of the task. + * + * @return A result, defined by the subclass of this task. + * + * @see #onPreExecute() + * @see #onPostExecute + * @see #publishProgress + */ + protected abstract Result doInBackground(Params... params); + + /** + * Runs on the UI thread before {@link #doInBackground}. + * + * @see #onPostExecute + * @see #doInBackground + */ + protected void onPreExecute() { + } + + /** + *

Runs on the UI thread after {@link #doInBackground}. The + * specified result is the value returned by {@link #doInBackground}.

+ * + *

This method won't be invoked if the task was cancelled.

+ * + * @param result The result of the operation computed by {@link #doInBackground}. + * + * @see #onPreExecute + * @see #doInBackground + * @see #onCancelled(Object) + */ + @SuppressWarnings({"UnusedDeclaration"}) + protected void onPostExecute(Result result) { + } + + /** + * Runs on the UI thread after {@link #publishProgress} is invoked. + * The specified values are the values passed to {@link #publishProgress}. + * + * @param values The values indicating progress. + * + * @see #publishProgress + * @see #doInBackground + */ + @SuppressWarnings({"UnusedDeclaration"}) + protected void onProgressUpdate(Progress... values) { + } + + /** + *

Runs on the UI thread after {@link #cancel(boolean)} is invoked and + * {@link #doInBackground(Object[])} has finished.

+ * + *

The default implementation simply invokes {@link #onCancelled()} and + * ignores the result. If you write your own implementation, do not call + * super.onCancelled(result).

+ * + * @param result The result, if any, computed in + * {@link #doInBackground(Object[])}, can be null + * + * @see #cancel(boolean) + * @see #isCancelled() + */ + @SuppressWarnings({"UnusedParameters"}) + protected void onCancelled(Result result) { + onCancelled(); + } + + /** + *

Applications should preferably override {@link #onCancelled(Object)}. + * This method is invoked by the default implementation of + * {@link #onCancelled(Object)}.

+ * + *

Runs on the UI thread after {@link #cancel(boolean)} is invoked and + * {@link #doInBackground(Object[])} has finished.

+ * + * @see #onCancelled(Object) + * @see #cancel(boolean) + * @see #isCancelled() + */ + protected void onCancelled() { + } + + /** + * Returns true if this task was cancelled before it completed + * normally. If you are calling {@link #cancel(boolean)} on the task, + * the value returned by this method should be checked periodically from + * {@link #doInBackground(Object[])} to end the task as soon as possible. + * + * @return true if task was cancelled before it completed + * + * @see #cancel(boolean) + */ + public final boolean isCancelled() { + return mCancelled.get(); + } + + /** + *

Attempts to cancel execution of this task. This attempt will + * fail if the task has already completed, already been cancelled, + * or could not be cancelled for some other reason. If successful, + * and this task has not started when cancel is called, + * this task should never run. If the task has already started, + * then the mayInterruptIfRunning parameter determines + * whether the thread executing this task should be interrupted in + * an attempt to stop the task.

+ * + *

Calling this method will result in {@link #onCancelled(Object)} being + * invoked on the UI thread after {@link #doInBackground(Object[])} + * returns. Calling this method guarantees that {@link #onPostExecute(Object)} + * is never invoked. After invoking this method, you should check the + * value returned by {@link #isCancelled()} periodically from + * {@link #doInBackground(Object[])} to finish the task as early as + * possible.

+ * + * @param mayInterruptIfRunning true if the thread executing this + * task should be interrupted; otherwise, in-progress tasks are allowed + * to complete. + * + * @return false if the task could not be cancelled, + * typically because it has already completed normally; + * true otherwise + * + * @see #isCancelled() + * @see #onCancelled(Object) + */ + public final boolean cancel(boolean mayInterruptIfRunning) { + mCancelled.set(true); + return mFuture.cancel(mayInterruptIfRunning); + } + + /** + * Waits if necessary for the computation to complete, and then + * retrieves its result. + * + * @return The computed result. + * + * @throws CancellationException If the computation was cancelled. + * @throws ExecutionException If the computation threw an exception. + * @throws InterruptedException If the current thread was interrupted + * while waiting. + */ + public final Result get() throws InterruptedException, ExecutionException { + return mFuture.get(); + } + + /** + * Waits if necessary for at most the given time for the computation + * to complete, and then retrieves its result. + * + * @param timeout Time to wait before cancelling the operation. + * @param unit The time unit for the timeout. + * + * @return The computed result. + * + * @throws CancellationException If the computation was cancelled. + * @throws ExecutionException If the computation threw an exception. + * @throws InterruptedException If the current thread was interrupted + * while waiting. + * @throws TimeoutException If the wait timed out. + */ + public final Result get(long timeout, TimeUnit unit) throws InterruptedException, + ExecutionException, TimeoutException { + return mFuture.get(timeout, unit); + } + + /** + * Executes the task with the specified parameters. The task returns + * itself (this) so that the caller can keep a reference to it. + * + *

Note: this function schedules the task on a queue for a single background + * thread or pool of threads depending on the platform version. When first + * introduced, AsyncTasks were executed serially on a single background thread. + * Starting with {@link android.os.Build.VERSION_CODES#DONUT}, this was changed + * to a pool of threads allowing multiple tasks to operate in parallel. Starting + * {@link android.os.Build.VERSION_CODES#HONEYCOMB}, tasks are back to being + * executed on a single thread to avoid common application errors caused + * by parallel execution. If you truly want parallel execution, you can use + * the {@link #executeOnExecutor} version of this method + * with {@link #THREAD_POOL_EXECUTOR}; however, see commentary there for warnings + * on its use. + * + *

This method must be invoked on the UI thread. + * + * @param params The parameters of the task. + * + * @return This instance of AsyncTask. + * + * @throws IllegalStateException If {@link #getStatus()} returns either + * {@link AsyncTask.Status#RUNNING} or {@link AsyncTask.Status#FINISHED}. + * + * @see #executeOnExecutor(java.util.concurrent.Executor, Object[]) + * @see #execute(Runnable) + */ + public final AsyncTask execute(Params... params) { + return executeOnExecutor(sDefaultExecutor, params); + } + + /** + * Executes the task with the specified parameters. The task returns + * itself (this) so that the caller can keep a reference to it. + * + *

This method is typically used with {@link #THREAD_POOL_EXECUTOR} to + * allow multiple tasks to run in parallel on a pool of threads managed by + * AsyncTask, however you can also use your own {@link Executor} for custom + * behavior. + * + *

Warning: Allowing multiple tasks to run in parallel from + * a thread pool is generally not what one wants, because the order + * of their operation is not defined. For example, if these tasks are used + * to modify any state in common (such as writing a file due to a button click), + * there are no guarantees on the order of the modifications. + * Without careful work it is possible in rare cases for the newer version + * of the data to be over-written by an older one, leading to obscure data + * loss and stability issues. Such changes are best + * executed in serial; to guarantee such work is serialized regardless of + * platform version you can use this function with {@link #SERIAL_EXECUTOR}. + * + *

This method must be invoked on the UI thread. + * + * @param exec The executor to use. {@link #THREAD_POOL_EXECUTOR} is available as a + * convenient process-wide thread pool for tasks that are loosely coupled. + * @param params The parameters of the task. + * + * @return This instance of AsyncTask. + * + * @throws IllegalStateException If {@link #getStatus()} returns either + * {@link AsyncTask.Status#RUNNING} or {@link AsyncTask.Status#FINISHED}. + * + * @see #execute(Object[]) + */ + public final AsyncTask executeOnExecutor(Executor exec, + Params... params) { + if (mStatus != Status.PENDING) { + switch (mStatus) { + case RUNNING: + throw new IllegalStateException("Cannot execute task:" + + " the task is already running."); + case FINISHED: + throw new IllegalStateException("Cannot execute task:" + + " the task has already been executed " + + "(a task can be executed only once)"); + } + } + + mStatus = Status.RUNNING; + + onPreExecute(); + + mWorker.mParams = params; + exec.execute(mFuture); + + return this; + } + + /** + * Convenience version of {@link #execute(Object...)} for use with + * a simple Runnable object. See {@link #execute(Object[])} for more + * information on the order of execution. + * + * @see #execute(Object[]) + * @see #executeOnExecutor(java.util.concurrent.Executor, Object[]) + */ + public static void execute(Runnable runnable) { + sDefaultExecutor.execute(runnable); + } + + /** + * This method can be invoked from {@link #doInBackground} to + * publish updates on the UI thread while the background computation is + * still running. Each call to this method will trigger the execution of + * {@link #onProgressUpdate} on the UI thread. + * + * {@link #onProgressUpdate} will note be called if the task has been + * canceled. + * + * @param values The progress values to update the UI with. + * + * @see #onProgressUpdate + * @see #doInBackground + */ + protected final void publishProgress(Progress... values) { + if (!isCancelled()) { + sHandler.obtainMessage(MESSAGE_POST_PROGRESS, + new AsyncTaskResult(this, values)).sendToTarget(); + } + } + + private void finish(Result result) { + if (isCancelled()) { + onCancelled(result); + } else { + onPostExecute(result); + } + mStatus = Status.FINISHED; + } + + private static class InternalHandler extends Handler { + @SuppressWarnings({"unchecked", "RawUseOfParameterizedType"}) + @Override + public void handleMessage(Message msg) { + AsyncTaskResult result = (AsyncTaskResult) msg.obj; + switch (msg.what) { + case MESSAGE_POST_RESULT: + // There is only one result + result.mTask.finish(result.mData[0]); + break; + case MESSAGE_POST_PROGRESS: + result.mTask.onProgressUpdate(result.mData); + break; + } + } + } + + private static abstract class WorkerRunnable implements Callable { + Params[] mParams; + } + + @SuppressWarnings({"RawUseOfParameterizedType"}) + private static class AsyncTaskResult { + final AsyncTask mTask; + final Data[] mData; + + AsyncTaskResult(AsyncTask task, Data... data) { + mTask = task; + mData = data; + } + } +} diff --git a/src/api-impl/android/os/Binder.java b/src/api-impl/android/os/Binder.java new file mode 100644 index 00000000..dbe4c787 --- /dev/null +++ b/src/api-impl/android/os/Binder.java @@ -0,0 +1,5 @@ +package android.os; + +public class Binder extends IBinder { + +} diff --git a/src/api-impl/android/os/Build.java b/src/api-impl/android/os/Build.java new file mode 100644 index 00000000..09f6370b --- /dev/null +++ b/src/api-impl/android/os/Build.java @@ -0,0 +1,506 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +/** + * Information about the current build, extracted from system properties. + */ +public class Build { + /** Value used for when a build property is unknown. */ + public static final String UNKNOWN = "unknown"; + + /** Either a changelist number, or a label like "M4-rc20". */ + public static final String ID = getString("ro.build.id"); + + /** A build ID string meant for displaying to the user */ + public static final String DISPLAY = getString("ro.build.display.id"); + + /** The name of the overall product. */ + public static final String PRODUCT = getString("ro.product.name"); + + /** The name of the industrial design. */ + public static final String DEVICE = getString("ro.product.device"); + + /** The name of the underlying board, like "goldfish". */ + public static final String BOARD = getString("ro.product.board"); + + /** The name of the instruction set (CPU type + ABI convention) of native code. */ + public static final String CPU_ABI = getString("ro.product.cpu.abi"); + + /** The name of the second instruction set (CPU type + ABI convention) of native code. */ + public static final String CPU_ABI2 = getString("ro.product.cpu.abi2"); + + /** The manufacturer of the product/hardware. */ + public static final String MANUFACTURER = getString("ro.product.manufacturer"); + + /** The brand (e.g., carrier) the software is customized for, if any. */ + public static final String BRAND = getString("ro.product.brand"); + + /** The end-user-visible name for the end product. */ + public static final String MODEL = getString("ro.product.model"); + + /** The system bootloader version number. */ + public static final String BOOTLOADER = getString("ro.bootloader"); + + /** + * The radio firmware version number. + * + * @deprecated The radio firmware version is frequently not + * available when this class is initialized, leading to a blank or + * "unknown" value for this string. Use + * {@link #getRadioVersion} instead. + */ + @Deprecated + public static final String RADIO = getString("FIXME"); + + /** The name of the hardware (from the kernel command line or /proc). */ + public static final String HARDWARE = getString("ro.hardware"); + + /** A hardware serial number, if available. Alphanumeric only, case-insensitive. */ + public static final String SERIAL = getString("ro.serialno"); + + /** Various version strings. */ + public static class VERSION { + /** + * The internal value used by the underlying source control to + * represent this build. E.g., a perforce changelist number + * or a git hash. + */ + public static final String INCREMENTAL = getString("ro.build.version.incremental"); + + /** + * The user-visible version string. E.g., "1.0" or "3.4b5". + */ + public static final String RELEASE = getString("ro.build.version.release"); + + /** + * The user-visible SDK version of the framework in its raw String + * representation; use {@link #SDK_INT} instead. + * + * @deprecated Use {@link #SDK_INT} to easily get this as an integer. + */ + @Deprecated + public static final String SDK = getString("ro.build.version.sdk"); + + /** + * The user-visible SDK version of the framework; its possible + * values are defined in {@link Build.VERSION_CODES}. + */ + public static final int SDK_INT = 0; + + /** + * The current development codename, or the string "REL" if this is + * a release build. + */ + public static final String CODENAME = getString("ro.build.version.codename"); + + /** + * The SDK version to use when accessing resources. + * Use the current SDK version code. If we are a development build, + * also allow the previous SDK version + 1. + * @hide + */ + public static final int RESOURCES_SDK_INT = SDK_INT + + ("REL".equals(CODENAME) ? 0 : 1); + } + + /** + * Enumeration of the currently known SDK version codes. These are the + * values that can be found in {@link VERSION#SDK}. Version numbers + * increment monotonically with each official platform release. + */ + public static class VERSION_CODES { + /** + * Magic version number for a current development build, which has + * not yet turned into an official release. + */ + public static final int CUR_DEVELOPMENT = 10000; + + /** + * October 2008: The original, first, version of Android. Yay! + */ + public static final int BASE = 1; + + /** + * February 2009: First Android update, officially called 1.1. + */ + public static final int BASE_1_1 = 2; + + /** + * May 2009: Android 1.5. + */ + public static final int CUPCAKE = 3; + + /** + * September 2009: Android 1.6. + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • They must explicitly request the + * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission to be + * able to modify the contents of the SD card. (Apps targeting + * earlier versions will always request the permission.) + *
  • They must explicitly request the + * {@link android.Manifest.permission#READ_PHONE_STATE} permission to be + * able to be able to retrieve phone state info. (Apps targeting + * earlier versions will always request the permission.) + *
  • They are assumed to support different screen densities and + * sizes. (Apps targeting earlier versions are assumed to only support + * medium density normal size screens unless otherwise indicated). + * They can still explicitly specify screen support either way with the + * supports-screens manifest tag. + *
  • {@link android.widget.TabHost} will use the new dark tab + * background design. + *
+ */ + public static final int DONUT = 4; + + /** + * November 2009: Android 2.0 + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • The {@link android.app.Service#onStartCommand + * Service.onStartCommand} function will return the new + * {@link android.app.Service#START_STICKY} behavior instead of the + * old compatibility {@link android.app.Service#START_STICKY_COMPATIBILITY}. + *
  • The {@link android.app.Activity} class will now execute back + * key presses on the key up instead of key down, to be able to detect + * canceled presses from virtual keys. + *
  • The {@link android.widget.TabWidget} class will use a new color scheme + * for tabs. In the new scheme, the foreground tab has a medium gray background + * the background tabs have a dark gray background. + *
+ */ + public static final int ECLAIR = 5; + + /** + * December 2009: Android 2.0.1 + */ + public static final int ECLAIR_0_1 = 6; + + /** + * January 2010: Android 2.1 + */ + public static final int ECLAIR_MR1 = 7; + + /** + * June 2010: Android 2.2 + */ + public static final int FROYO = 8; + + /** + * November 2010: Android 2.3 + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • The application's notification icons will be shown on the new + * dark status bar background, so must be visible in this situation. + *
+ */ + public static final int GINGERBREAD = 9; + + /** + * February 2011: Android 2.3.3. + */ + public static final int GINGERBREAD_MR1 = 10; + + /** + * February 2011: Android 3.0. + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • The default theme for applications is now dark holographic: + * {@link android.R.style#Theme_Holo}. + *
  • On large screen devices that do not have a physical menu + * button, the soft (compatibility) menu is disabled. + *
  • The activity lifecycle has changed slightly as per + * {@link android.app.Activity}. + *
  • An application will crash if it does not call through + * to the super implementation of its + * {@link android.app.Activity#onPause Activity.onPause()} method. + *
  • When an application requires a permission to access one of + * its components (activity, receiver, service, provider), this + * permission is no longer enforced when the application wants to + * access its own component. This means it can require a permission + * on a component that it does not itself hold and still access that + * component. + *
  • {@link android.content.Context#getSharedPreferences + * Context.getSharedPreferences()} will not automatically reload + * the preferences if they have changed on storage, unless + * {@link android.content.Context#MODE_MULTI_PROCESS} is used. + *
  • {@link android.view.ViewGroup#setMotionEventSplittingEnabled} + * will default to true. + *
  • {@link android.view.WindowManager.LayoutParams#FLAG_SPLIT_TOUCH} + * is enabled by default on windows. + *
  • {@link android.widget.PopupWindow#isSplitTouchEnabled() + * PopupWindow.isSplitTouchEnabled()} will return true by default. + *
  • {@link android.widget.GridView} and {@link android.widget.ListView} + * will use {@link android.view.View#setActivated View.setActivated} + * for selected items if they do not implement {@link android.widget.Checkable}. + *
  • {@link android.widget.Scroller} will be constructed with + * "flywheel" behavior enabled by default. + *
+ */ + public static final int HONEYCOMB = 11; + + /** + * May 2011: Android 3.1. + */ + public static final int HONEYCOMB_MR1 = 12; + + /** + * June 2011: Android 3.2. + * + *

Update to Honeycomb MR1 to support 7 inch tablets, improve + * screen compatibility mode, etc.

+ * + *

As of this version, applications that don't say whether they + * support XLARGE screens will be assumed to do so only if they target + * {@link #HONEYCOMB} or later; it had been {@link #GINGERBREAD} or + * later. Applications that don't support a screen size at least as + * large as the current screen will provide the user with a UI to + * switch them in to screen size compatibility mode.

+ * + *

This version introduces new screen size resource qualifiers + * based on the screen size in dp: see + * {@link android.content.res.Configuration#screenWidthDp}, + * {@link android.content.res.Configuration#screenHeightDp}, and + * {@link android.content.res.Configuration#smallestScreenWidthDp}. + * Supplying these in <supports-screens> as per + * {@link android.content.pm.ApplicationInfo#requiresSmallestWidthDp}, + * {@link android.content.pm.ApplicationInfo#compatibleWidthLimitDp}, and + * {@link android.content.pm.ApplicationInfo#largestWidthLimitDp} is + * preferred over the older screen size buckets and for older devices + * the appropriate buckets will be inferred from them.

+ * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • New {@link android.content.pm.PackageManager#FEATURE_SCREEN_PORTRAIT} + * and {@link android.content.pm.PackageManager#FEATURE_SCREEN_LANDSCAPE} + * features were introduced in this release. Applications that target + * previous platform versions are assumed to require both portrait and + * landscape support in the device; when targeting Honeycomb MR1 or + * greater the application is responsible for specifying any specific + * orientation it requires.

    + *
  • {@link android.os.AsyncTask} will use the serial executor + * by default when calling {@link android.os.AsyncTask#execute}.

    + *
  • {@link android.content.pm.ActivityInfo#configChanges + * ActivityInfo.configChanges} will have the + * {@link android.content.pm.ActivityInfo#CONFIG_SCREEN_SIZE} and + * {@link android.content.pm.ActivityInfo#CONFIG_SMALLEST_SCREEN_SIZE} + * bits set; these need to be cleared for older applications because + * some developers have done absolute comparisons against this value + * instead of correctly masking the bits they are interested in. + *

+ */ + public static final int HONEYCOMB_MR2 = 13; + + /** + * October 2011: Android 4.0. + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • For devices without a dedicated menu key, the software compatibility + * menu key will not be shown even on phones. By targeting Ice Cream Sandwich + * or later, your UI must always have its own menu UI affordance if needed, + * on both tablets and phones. The ActionBar will take care of this for you. + *
  • 2d drawing hardware acceleration is now turned on by default. + * You can use + * {@link android.R.attr#hardwareAccelerated android:hardwareAccelerated} + * to turn it off if needed, although this is strongly discouraged since + * it will result in poor performance on larger screen devices. + *
  • The default theme for applications is now the "device default" theme: + * {@link android.R.style#Theme_DeviceDefault}. This may be the + * holo dark theme or a different dark theme defined by the specific device. + * The {@link android.R.style#Theme_Holo} family must not be modified + * for a device to be considered compatible. Applications that explicitly + * request a theme from the Holo family will be guaranteed that these themes + * will not change character within the same platform version. Applications + * that wish to blend in with the device should use a theme from the + * {@link android.R.style#Theme_DeviceDefault} family. + *
  • Managed cursors can now throw an exception if you directly close + * the cursor yourself without stopping the management of it; previously failures + * would be silently ignored. + *
  • The fadingEdge attribute on views will be ignored (fading edges is no + * longer a standard part of the UI). A new requiresFadingEdge attribute allows + * applications to still force fading edges on for special cases. + *
  • {@link android.content.Context#bindService Context.bindService()} + * will not automatically add in {@link android.content.Context#BIND_WAIVE_PRIORITY}. + *
  • App Widgets will have standard padding automatically added around + * them, rather than relying on the padding being baked into the widget itself. + *
  • An exception will be thrown if you try to change the type of a + * window after it has been added to the window manager. Previously this + * would result in random incorrect behavior. + *
  • {@link android.view.animation.AnimationSet} will parse out + * the duration, fillBefore, fillAfter, repeatMode, and startOffset + * XML attributes that are defined. + *
  • {@link android.app.ActionBar#setHomeButtonEnabled + * ActionBar.setHomeButtonEnabled()} is false by default. + *
+ */ + public static final int ICE_CREAM_SANDWICH = 14; + + /** + * December 2011: Android 4.0.3. + */ + public static final int ICE_CREAM_SANDWICH_MR1 = 15; + + /** + * June 2012: Android 4.1. + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • You must explicitly request the {@link android.Manifest.permission#READ_CALL_LOG} + * and/or {@link android.Manifest.permission#WRITE_CALL_LOG} permissions; + * access to the call log is no longer implicitly provided through + * {@link android.Manifest.permission#READ_CONTACTS} and + * {@link android.Manifest.permission#WRITE_CONTACTS}. + *
  • {@link android.widget.RemoteViews} will throw an exception if + * setting an onClick handler for views being generated by a + * {@link android.widget.RemoteViewsService} for a collection container; + * previously this just resulted in a warning log message. + *
  • New {@link android.app.ActionBar} policy for embedded tabs: + * embedded tabs are now always stacked in the action bar when in portrait + * mode, regardless of the size of the screen. + *
  • {@link android.webkit.WebSettings#setAllowFileAccessFromFileURLs(boolean) + * WebSettings.setAllowFileAccessFromFileURLs} and + * {@link android.webkit.WebSettings#setAllowUniversalAccessFromFileURLs(boolean) + * WebSettings.setAllowUniversalAccessFromFileURLs} default to false. + *
  • Calls to {@link android.content.pm.PackageManager#setComponentEnabledSetting + * PackageManager.setComponentEnabledSetting} will now throw an + * IllegalArgumentException if the given component class name does not + * exist in the application's manifest. + *
  • {@link android.nfc.NfcAdapter#setNdefPushMessage + * NfcAdapter.setNdefPushMessage}, + * {@link android.nfc.NfcAdapter#setNdefPushMessageCallback + * NfcAdapter.setNdefPushMessageCallback} and + * {@link android.nfc.NfcAdapter#setOnNdefPushCompleteCallback + * NfcAdapter.setOnNdefPushCompleteCallback} will throw + * IllegalStateException if called after the Activity has been destroyed. + *
  • Accessibility services must require the new + * {@link android.Manifest.permission#BIND_ACCESSIBILITY_SERVICE} permission or + * they will not be available for use. + *
  • {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS + * AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS} must be set + * for unimportant views to be included in queries. + *
+ */ + public static final int JELLY_BEAN = 16; + + /** + * Android 4.2: Moar jelly beans! + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • Content Providers: The default value of {@code android:exported} is now + * {@code false}. See + * + * the android:exported section in the provider documentation for more details.
  • + *
  • {@link android.view.View#getLayoutDirection() View.getLayoutDirection()} + * can return different values than {@link android.view.View#LAYOUT_DIRECTION_LTR} + * based on the locale etc. + *
  • {@link android.webkit.WebView#addJavascriptInterface(Object, String) + * WebView.addJavascriptInterface} requires explicit annotations on methods + * for them to be accessible from Javascript. + *
+ */ + public static final int JELLY_BEAN_MR1 = 17; + + /** + * Android 4.3: Jelly Bean MR2, the revenge of the beans. + */ + public static final int JELLY_BEAN_MR2 = 18; + + /** + * Android 4.4: KitKat, another tasty treat. + * + *

Applications targeting this or a later release will get these + * new changes in behavior:

+ *
    + *
  • The default result of {android.preference.PreferenceActivity#isValidFragment + * PreferenceActivity.isValueFragment} becomes false instead of true.
  • + *
  • In {@link android.webkit.WebView}, apps targeting earlier versions will have + * JS URLs evaluated directly and any result of the evaluation will not replace + * the current page content. Apps targetting KITKAT or later that load a JS URL will + * have the result of that URL replace the content of the current page
  • + *
  • {@link android.app.AlarmManager#set AlarmManager.set} becomes interpreted as + * an inexact value, to give the system more flexibility in scheduling alarms.
  • + *
  • {@link android.content.Context#getSharedPreferences(String, int) + * Context.getSharedPreferences} no longer allows a null name.
  • + *
  • {@link android.widget.RelativeLayout} changes to compute wrapped content + * margins correctly.
  • + *
  • {@link android.app.ActionBar}'s window content overlay is allowed to be + * drawn.
  • + *
  • The {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} + * permission is now always enforced.
  • + *
  • Access to package-specific external storage directories belonging + * to the calling app no longer requires the + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} or + * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} + * permissions.
  • + *
+ */ + public static final int KITKAT = 19; + } + + /** The type of build, like "user" or "eng". */ + public static final String TYPE = getString("ro.build.type"); + + /** Comma-separated tags describing the build, like "unsigned,debug". */ + public static final String TAGS = getString("ro.build.tags"); + + /** A string that uniquely identifies this build. Do not attempt to parse this value. */ + public static final String FINGERPRINT = getString("ro.build.fingerprint"); + + // The following properties only make sense for internal engineering builds. + public static final long TIME = getLong("ro.build.date.utc") * 1000; + public static final String USER = getString("ro.build.user"); + public static final String HOST = getString("ro.build.host"); + + // TODO: instead of stubbing these out, we could actually provide some sensible values + + /** + * Returns true if we are running a debug build such as "user-debug" or "eng". + * @hide + */ + public static final boolean IS_DEBUGGABLE = true; + + /** + * Returns the version string for the radio firmware. May return + * null (if, for instance, the radio is not currently on). + */ + public static String getRadioVersion() { + return null; + } + + private static String getString(String property) { + return UNKNOWN; + } + + private static long getLong(String property) { + return -1; + } +} diff --git a/src/api-impl/android/os/Bundle.java b/src/api-impl/android/os/Bundle.java new file mode 100644 index 00000000..604789c2 --- /dev/null +++ b/src/api-impl/android/os/Bundle.java @@ -0,0 +1,1498 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.ArrayMap; +import android.util.Log; +import android.util.SparseArray; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * A mapping from String values to various Parcelable types. + * + */ +public final class Bundle implements Cloneable { + private static final String TAG = "Bundle"; + static final boolean DEBUG = false; + public static final Bundle EMPTY; + + static final int BUNDLE_MAGIC = 0x4C444E42; // 'B' 'N' 'D' 'L' + + static { + EMPTY = new Bundle(); + EMPTY.mMap = ArrayMap.EMPTY; + } + + // Invariant - exactly one of mMap / mParcelledData will be null + // (except inside a call to unparcel) + + /* package */ ArrayMap mMap = null; + + /* + * If mParcelledData is non-null, then mMap will be null and the + * data are stored as a Parcel containing a Bundle. When the data + * are unparcelled, mParcelledData willbe set to null. + */ + /* package */ + private boolean mHasFds = false; + private boolean mFdsKnown = true; + private boolean mAllowFds = true; + + /** + * The ClassLoader used when unparcelling data from mParcelledData. + */ + private ClassLoader mClassLoader; + + /** + * Constructs a new, empty Bundle. + */ + public Bundle() { + mMap = new ArrayMap(); + mClassLoader = getClass().getClassLoader(); + } + + /** + * Constructs a new, empty Bundle that uses a specific ClassLoader for + * instantiating Parcelable and Serializable objects. + * + * @param loader An explicit ClassLoader to use when instantiating objects + * inside of the Bundle. + */ + public Bundle(ClassLoader loader) { + mMap = new ArrayMap(); + mClassLoader = loader; + } + + /** + * Constructs a new, empty Bundle sized to hold the given number of + * elements. The Bundle will grow as needed. + * + * @param capacity the initial capacity of the Bundle + */ + public Bundle(int capacity) { + mMap = new ArrayMap(capacity); + mClassLoader = getClass().getClassLoader(); + } + + /** + * Constructs a Bundle containing a copy of the mappings from the given + * Bundle. + * + * @param b a Bundle to be copied. + */ + public Bundle(Bundle b) { + + mMap = new ArrayMap(b.mMap); + + mHasFds = b.mHasFds; + mFdsKnown = b.mFdsKnown; + mClassLoader = b.mClassLoader; + } + + /** + * Make a Bundle for a single key/value pair. + * + * @hide + */ + public static Bundle forPair(String key, String value) { + // TODO: optimize this case. + Bundle b = new Bundle(1); + b.putString(key, value); + return b; + } + + /** + * TODO: optimize this later (getting just the value part of a Bundle + * with a single pair) once Bundle.forPair() above is implemented + * with a special single-value Map implementation/serialization. + * + * Note: value in single-pair Bundle may be null. + * + * @hide + */ + public String getPairValue() { + int size = mMap.size(); + if (size > 1) { + Log.w(TAG, "getPairValue() used on Bundle with multiple pairs."); + } + if (size == 0) { + return null; + } + Object o = mMap.valueAt(0); + try { + return (String) o; + } catch (ClassCastException e) { + typeWarning("getPairValue()", o, "String", e); + return null; + } + } + + /** + * Changes the ClassLoader this Bundle uses when instantiating objects. + * + * @param loader An explicit ClassLoader to use when instantiating objects + * inside of the Bundle. + */ + public void setClassLoader(ClassLoader loader) { + mClassLoader = loader; + } + + /** + * Return the ClassLoader currently associated with this Bundle. + */ + public ClassLoader getClassLoader() { + return mClassLoader; + } + + /** @hide */ + public boolean setAllowFds(boolean allowFds) { + boolean orig = mAllowFds; + mAllowFds = allowFds; + return orig; + } + + /** + * Clones the current Bundle. The internal map is cloned, but the keys and + * values to which it refers are copied by reference. + */ + @Override + public Object clone() { + return new Bundle(this); + } + + /** + * @hide + */ + public boolean isParcelled() { + return false; + } + + /** + * Returns the number of mappings contained in this Bundle. + * + * @return the number of mappings as an int. + */ + public int size() { + return mMap.size(); + } + + /** + * Returns true if the mapping of this Bundle is empty, false otherwise. + */ + public boolean isEmpty() { + return mMap.isEmpty(); + } + + /** + * Removes all elements from the mapping of this Bundle. + */ + public void clear() { + mMap.clear(); + mHasFds = false; + mFdsKnown = true; + } + + /** + * Returns true if the given key is contained in the mapping + * of this Bundle. + * + * @param key a String key + * @return true if the key is part of the mapping, false otherwise + */ + public boolean containsKey(String key) { + return mMap.containsKey(key); + } + + /** + * Returns the entry with the given key as an object. + * + * @param key a String key + * @return an Object, or null + */ + public Object get(String key) { + return mMap.get(key); + } + + /** + * Removes any entry with the given key from the mapping of this Bundle. + * + * @param key a String key + */ + public void remove(String key) { + mMap.remove(key); + } + + /** + * Inserts all mappings from the given Bundle into this Bundle. + * + * @param map a Bundle + */ + public void putAll(Bundle map) { + mMap.putAll(map.mMap); + + // fd state is now known if and only if both bundles already knew + mHasFds |= map.mHasFds; + mFdsKnown = mFdsKnown && map.mFdsKnown; + } + + /** + * Returns a Set containing the Strings used as keys in this Bundle. + * + * @return a Set of String keys + */ + public Set keySet() { + return mMap.keySet(); + } + + /** + * Reports whether the bundle contains any parcelled file descriptors. + */ + public boolean hasFileDescriptors() {/* + if (!mFdsKnown) { + boolean fdFound = false; // keep going until we find one or run out of data + + + // It's been unparcelled, so we need to walk the map + for (int i=mMap.size()-1; i>=0; i--) { + Object obj = mMap.valueAt(i); + if (obj instanceof Parcelable) { + if ((((Parcelable)obj).describeContents() + & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { + fdFound = true; + break; + } + } else if (obj instanceof Parcelable[]) { + Parcelable[] array = (Parcelable[]) obj; + for (int n = array.length - 1; n >= 0; n--) { + if ((array[n].describeContents() + & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { + fdFound = true; + break; + } + } + } else if (obj instanceof SparseArray) { + SparseArray array = + (SparseArray) obj; + for (int n = array.size() - 1; n >= 0; n--) { + if ((array.get(n).describeContents() + & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { + fdFound = true; + break; + } + } + } else if (obj instanceof ArrayList) { + ArrayList array = (ArrayList) obj; + // an ArrayList here might contain either Strings or + // Parcelables; only look inside for Parcelables + if ((array.size() > 0) + && (array.get(0) instanceof Parcelable)) { + for (int n = array.size() - 1; n >= 0; n--) { + Parcelable p = (Parcelable) array.get(n); + if (p != null && ((p.describeContents() + & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { + fdFound = true; + break; + } + } + } + } + } + + mHasFds = fdFound; + mFdsKnown = true; + } + return mHasFds;*/ + return false; + } + + /** + * Inserts a Boolean value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a Boolean, or null + */ + public void putBoolean(String key, boolean value) { + mMap.put(key, value); + } + + /** + * Inserts a byte value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a byte + */ + public void putByte(String key, byte value) { + mMap.put(key, value); + } + + /** + * Inserts a char value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a char, or null + */ + public void putChar(String key, char value) { + mMap.put(key, value); + } + + /** + * Inserts a short value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a short + */ + public void putShort(String key, short value) { + mMap.put(key, value); + } + + /** + * Inserts an int value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value an int, or null + */ + public void putInt(String key, int value) { + mMap.put(key, value); + } + + /** + * Inserts a long value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a long + */ + public void putLong(String key, long value) { + mMap.put(key, value); + } + + /** + * Inserts a float value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a float + */ + public void putFloat(String key, float value) { + mMap.put(key, value); + } + + /** + * Inserts a double value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a double + */ + public void putDouble(String key, double value) { + mMap.put(key, value); + } + + /** + * Inserts a String value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a String, or null + */ + public void putString(String key, String value) { + mMap.put(key, value); + } + + /** + * Inserts a CharSequence value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a CharSequence, or null + */ + public void putCharSequence(String key, CharSequence value) { + mMap.put(key, value); + } + + /** + * Inserts a Parcelable value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a Parcelable object, or null + */ + public void putParcelable(String key, Parcelable value) { + mMap.put(key, value); + mFdsKnown = false; + } + + /** + * Inserts an array of Parcelable values into the mapping of this Bundle, + * replacing any existing value for the given key. Either key or value may + * be null. + * + * @param key a String, or null + * @param value an array of Parcelable objects, or null + */ + public void putParcelableArray(String key, Parcelable[] value) { + mMap.put(key, value); + mFdsKnown = false; + } + + /** + * Inserts a List of Parcelable values into the mapping of this Bundle, + * replacing any existing value for the given key. Either key or value may + * be null. + * + * @param key a String, or null + * @param value an ArrayList of Parcelable objects, or null + */ + public void putParcelableArrayList(String key, + ArrayList value) { + mMap.put(key, value); + mFdsKnown = false; + } + + /** {@hide} */ + public void putParcelableList(String key, List value) { + mMap.put(key, value); + mFdsKnown = false; + } + + /** + * Inserts a SparceArray of Parcelable values into the mapping of this + * Bundle, replacing any existing value for the given key. Either key + * or value may be null. + * + * @param key a String, or null + * @param value a SparseArray of Parcelable objects, or null + */ + public void putSparseParcelableArray(String key, + SparseArray value) { + mMap.put(key, value); + mFdsKnown = false; + } + + /** + * Inserts an ArrayList value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value an ArrayList object, or null + */ + public void putIntegerArrayList(String key, ArrayList value) { + mMap.put(key, value); + } + + /** + * Inserts an ArrayList value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value an ArrayList object, or null + */ + public void putStringArrayList(String key, ArrayList value) { + mMap.put(key, value); + } + + /** + * Inserts an ArrayList value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value an ArrayList object, or null + */ + public void putCharSequenceArrayList(String key, ArrayList value) { + mMap.put(key, value); + } + + /** + * Inserts a Serializable value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a Serializable object, or null + */ + public void putSerializable(String key, Serializable value) { + mMap.put(key, value); + } + + /** + * Inserts a boolean array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a boolean array object, or null + */ + public void putBooleanArray(String key, boolean[] value) { + mMap.put(key, value); + } + + /** + * Inserts a byte array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a byte array object, or null + */ + public void putByteArray(String key, byte[] value) { + mMap.put(key, value); + } + + /** + * Inserts a short array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a short array object, or null + */ + public void putShortArray(String key, short[] value) { + mMap.put(key, value); + } + + /** + * Inserts a char array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a char array object, or null + */ + public void putCharArray(String key, char[] value) { + mMap.put(key, value); + } + + /** + * Inserts an int array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value an int array object, or null + */ + public void putIntArray(String key, int[] value) { + mMap.put(key, value); + } + + /** + * Inserts a long array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a long array object, or null + */ + public void putLongArray(String key, long[] value) { + mMap.put(key, value); + } + + /** + * Inserts a float array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a float array object, or null + */ + public void putFloatArray(String key, float[] value) { + mMap.put(key, value); + } + + /** + * Inserts a double array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a double array object, or null + */ + public void putDoubleArray(String key, double[] value) { + mMap.put(key, value); + } + + /** + * Inserts a String array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a String array object, or null + */ + public void putStringArray(String key, String[] value) { + mMap.put(key, value); + } + + /** + * Inserts a CharSequence array value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a CharSequence array object, or null + */ + public void putCharSequenceArray(String key, CharSequence[] value) { + mMap.put(key, value); + } + + /** + * Inserts a Bundle value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a Bundle object, or null + */ + public void putBundle(String key, Bundle value) { + mMap.put(key, value); + } + + /** + * Inserts an {@link IBinder} value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + *

You should be very careful when using this function. In many + * places where Bundles are used (such as inside of Intent objects), the Bundle + * can live longer inside of another process than the process that had originally + * created it. In that case, the IBinder you supply here will become invalid + * when your process goes away, and no longer usable, even if a new process is + * created for you later on.

+ * + * @param key a String, or null + * @param value an IBinder object, or null + */ + public void putBinder(String key, IBinder value) { + mMap.put(key, value); + } + + /** + * Inserts an IBinder value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value an IBinder object, or null + * + * @deprecated + * @hide This is the old name of the function. + */ + @Deprecated + public void putIBinder(String key, IBinder value) { + mMap.put(key, value); + } + + /** + * Returns the value associated with the given key, or false if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a boolean value + */ + public boolean getBoolean(String key) { + if (DEBUG) Log.d(TAG, "Getting boolean in " + + Integer.toHexString(System.identityHashCode(this))); + return getBoolean(key, false); + } + + // Log a message if the value was non-null but not of the expected type + private void typeWarning(String key, Object value, String className, + Object defaultValue, ClassCastException e) { + StringBuilder sb = new StringBuilder(); + sb.append("Key "); + sb.append(key); + sb.append(" expected "); + sb.append(className); + sb.append(" but value was a "); + sb.append(value.getClass().getName()); + sb.append(". The default value "); + sb.append(defaultValue); + sb.append(" was returned."); + Log.w(TAG, sb.toString()); + Log.w(TAG, "Attempt to cast generated internal exception:", e); + } + + private void typeWarning(String key, Object value, String className, + ClassCastException e) { + typeWarning(key, value, className, "", e); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a boolean value + */ + public boolean getBoolean(String key, boolean defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Boolean) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Boolean", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or (byte) 0 if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a byte value + */ + public byte getByte(String key) { + return getByte(key, (byte) 0); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a byte value + */ + public Byte getByte(String key, byte defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Byte) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Byte", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or (char) 0 if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a char value + */ + public char getChar(String key) { + return getChar(key, (char) 0); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a char value + */ + public char getChar(String key, char defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Character) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Character", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or (short) 0 if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a short value + */ + public short getShort(String key) { + return getShort(key, (short) 0); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a short value + */ + public short getShort(String key, short defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Short) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Short", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or 0 if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return an int value + */ + public int getInt(String key) { + return getInt(key, 0); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return an int value + */ + public int getInt(String key, int defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Integer) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Integer", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or 0L if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a long value + */ + public long getLong(String key) { + return getLong(key, 0L); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a long value + */ + public long getLong(String key, long defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Long) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Long", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or 0.0f if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a float value + */ + public float getFloat(String key) { + return getFloat(key, 0.0f); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a float value + */ + public float getFloat(String key, float defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Float) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Float", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or 0.0 if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @return a double value + */ + public double getDouble(String key) { + return getDouble(key, 0.0); + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String + * @param defaultValue Value to return if key does not exist + * @return a double value + */ + public double getDouble(String key, double defaultValue) { + Object o = mMap.get(key); + if (o == null) { + return defaultValue; + } + try { + return (Double) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Double", defaultValue, e); + return defaultValue; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a String value, or null + */ + public String getString(String key) { + final Object o = mMap.get(key); + try { + return (String) o; + } catch (ClassCastException e) { + typeWarning(key, o, "String", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String, or null + * @param defaultValue Value to return if key does not exist + * @return the String value associated with the given key, or defaultValue + * if no valid String object is currently mapped to that key. + */ + public String getString(String key, String defaultValue) { + final String s = getString(key); + return (s == null) ? defaultValue : s; + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a CharSequence value, or null + */ + public CharSequence getCharSequence(String key) { + final Object o = mMap.get(key); + try { + return (CharSequence) o; + } catch (ClassCastException e) { + typeWarning(key, o, "CharSequence", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or defaultValue if + * no mapping of the desired type exists for the given key. + * + * @param key a String, or null + * @param defaultValue Value to return if key does not exist + * @return the CharSequence value associated with the given key, or defaultValue + * if no valid CharSequence object is currently mapped to that key. + */ + public CharSequence getCharSequence(String key, CharSequence defaultValue) { + final CharSequence cs = getCharSequence(key); + return (cs == null) ? defaultValue : cs; + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a Bundle value, or null + */ + public Bundle getBundle(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (Bundle) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Bundle", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a Parcelable value, or null + */ + public T getParcelable(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (T) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Parcelable", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a Parcelable[] value, or null + */ + public Parcelable[] getParcelableArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (Parcelable[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Parcelable[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an ArrayList value, or null + */ + public ArrayList getParcelableArrayList(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (ArrayList) o; + } catch (ClassCastException e) { + typeWarning(key, o, "ArrayList", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * + * @return a SparseArray of T values, or null + */ + public SparseArray getSparseParcelableArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (SparseArray) o; + } catch (ClassCastException e) { + typeWarning(key, o, "SparseArray", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a Serializable value, or null + */ + public Serializable getSerializable(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (Serializable) o; + } catch (ClassCastException e) { + typeWarning(key, o, "Serializable", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an ArrayList value, or null + */ + public ArrayList getIntegerArrayList(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (ArrayList) o; + } catch (ClassCastException e) { + typeWarning(key, o, "ArrayList", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an ArrayList value, or null + */ + public ArrayList getStringArrayList(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (ArrayList) o; + } catch (ClassCastException e) { + typeWarning(key, o, "ArrayList", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an ArrayList value, or null + */ + public ArrayList getCharSequenceArrayList(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (ArrayList) o; + } catch (ClassCastException e) { + typeWarning(key, o, "ArrayList", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a boolean[] value, or null + */ + public boolean[] getBooleanArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (boolean[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "byte[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a byte[] value, or null + */ + public byte[] getByteArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (byte[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "byte[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a short[] value, or null + */ + public short[] getShortArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (short[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "short[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a char[] value, or null + */ + public char[] getCharArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (char[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "char[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an int[] value, or null + */ + public int[] getIntArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (int[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "int[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a long[] value, or null + */ + public long[] getLongArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (long[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "long[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a float[] value, or null + */ + public float[] getFloatArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (float[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "float[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a double[] value, or null + */ + public double[] getDoubleArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (double[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "double[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a String[] value, or null + */ + public String[] getStringArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (String[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "String[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return a CharSequence[] value, or null + */ + public CharSequence[] getCharSequenceArray(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (CharSequence[]) o; + } catch (ClassCastException e) { + typeWarning(key, o, "CharSequence[]", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an IBinder value, or null + */ + public IBinder getBinder(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (IBinder) o; + } catch (ClassCastException e) { + typeWarning(key, o, "IBinder", e); + return null; + } + } + + /** + * Returns the value associated with the given key, or null if + * no mapping of the desired type exists for the given key or a null + * value is explicitly associated with the key. + * + * @param key a String, or null + * @return an IBinder value, or null + * + * @deprecated + * @hide This is the old name of the function. + */ + @Deprecated + public IBinder getIBinder(String key) { + Object o = mMap.get(key); + if (o == null) { + return null; + } + try { + return (IBinder) o; + } catch (ClassCastException e) { + typeWarning(key, o, "IBinder", e); + return null; + } + } + + /** + * Report the nature of this Parcelable's contents + */ + public int describeContents() { + int mask = 0; + /* if (hasFileDescriptors()) { + mask |= Parcelable.CONTENTS_FILE_DESCRIPTOR; + }*/ + return mask; + } + + @Override + public synchronized String toString() { + return "Bundle[" + mMap.toString() + "]"; + } +} diff --git a/src/api-impl/android/os/CancellationSignal.java b/src/api-impl/android/os/CancellationSignal.java new file mode 100644 index 00000000..351c912a --- /dev/null +++ b/src/api-impl/android/os/CancellationSignal.java @@ -0,0 +1,7 @@ +package android.os; + +//import android.os.ICancellationSignal; + +public final class CancellationSignal { + +} diff --git a/src/api-impl/android/os/Environment.java b/src/api-impl/android/os/Environment.java new file mode 100644 index 00000000..f8afbb16 --- /dev/null +++ b/src/api-impl/android/os/Environment.java @@ -0,0 +1,768 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.content.Context; +//import android.text.TextUtils; +import android.util.Log; + +//import com.android.internal.annotations.GuardedBy; +//import com.google.android.collect.Lists; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +class StorageVolume {} + +/** + * Provides access to environment variables. + */ +public class Environment { + private static final String TAG = "Environment"; + + private static final String ENV_EXTERNAL_STORAGE = "EXTERNAL_STORAGE"; + private static final String ENV_EMULATED_STORAGE_SOURCE = "EMULATED_STORAGE_SOURCE"; + private static final String ENV_EMULATED_STORAGE_TARGET = "EMULATED_STORAGE_TARGET"; + private static final String ENV_MEDIA_STORAGE = "MEDIA_STORAGE"; + private static final String ENV_SECONDARY_STORAGE = "SECONDARY_STORAGE"; + private static final String ENV_ANDROID_ROOT = "ANDROID_ROOT"; + + /** {@hide} */ + public static final String DIR_ANDROID = "Android"; + private static final String DIR_DATA = "data"; + private static final String DIR_MEDIA = "media"; + private static final String DIR_OBB = "obb"; + private static final String DIR_FILES = "files"; + private static final String DIR_CACHE = "cache"; + + /** {@hide} */ + @Deprecated + public static final String DIRECTORY_ANDROID = DIR_ANDROID; + + private static final File DIR_ANDROID_ROOT = getDirectory(ENV_ANDROID_ROOT, "/system"); + private static final File DIR_MEDIA_STORAGE = getDirectory(ENV_MEDIA_STORAGE, "/data/media"); + + private static final String CANONCIAL_EMULATED_STORAGE_TARGET = getCanonicalPathOrNull( + ENV_EMULATED_STORAGE_TARGET); + + private static final String SYSTEM_PROPERTY_EFS_ENABLED = "persist.security.efs.enabled"; + + private static UserEnvironment sCurrentUser; + private static boolean sUserRequired; + + private static final Object sLock = new Object(); + + private static volatile StorageVolume sPrimaryVolume; + + private static StorageVolume getPrimaryVolume() { + return null; + } + + static { + initForCurrentUser(); + } + + /** {@hide} */ + public static void initForCurrentUser() { + final int userId = UserHandle.myUserId(); + sCurrentUser = new UserEnvironment(userId); + + synchronized (sLock) { + sPrimaryVolume = null; + } + } + + /** {@hide} */ + public static class UserEnvironment { + // TODO: generalize further to create package-specific environment + + /** External storage dirs, as visible to vold */ + private final File[] mExternalDirsForVold = null; + /** External storage dirs, as visible to apps */ + private final File[] mExternalDirsForApp = null; + /** Primary emulated storage dir for direct access */ + private final File mEmulatedDirForDirect = null; + + public UserEnvironment(int userId) { + // TODO + } + + @Deprecated + public File getExternalStorageDirectory() { + return new File("data/");/*mExternalDirsForApp[0];*/ + } + + @Deprecated + public File getExternalStoragePublicDirectory(String type) { + return buildExternalStoragePublicDirs(type)[0]; + } + + public File[] getExternalDirsForVold() { + return mExternalDirsForVold; + } + + public File[] getExternalDirsForApp() { + return mExternalDirsForApp; + } + + public File getMediaDir() { + return mEmulatedDirForDirect; + } + + public File[] buildExternalStoragePublicDirs(String type) { + return buildPaths(mExternalDirsForApp, type); + } + + public File[] buildExternalStorageAndroidDataDirs() { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_DATA); + } + + public File[] buildExternalStorageAndroidObbDirs() { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_OBB); + } + + public File[] buildExternalStorageAppDataDirs(String packageName) { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_DATA, packageName); + } + + public File[] buildExternalStorageAppDataDirsForVold(String packageName) { + return buildPaths(mExternalDirsForVold, DIR_ANDROID, DIR_DATA, packageName); + } + + public File[] buildExternalStorageAppMediaDirs(String packageName) { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_MEDIA, packageName); + } + + public File[] buildExternalStorageAppObbDirs(String packageName) { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_OBB, packageName); + } + + public File[] buildExternalStorageAppObbDirsForVold(String packageName) { + return buildPaths(mExternalDirsForVold, DIR_ANDROID, DIR_OBB, packageName); + } + + public File[] buildExternalStorageAppFilesDirs(String packageName) { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_DATA, packageName, DIR_FILES); + } + + public File[] buildExternalStorageAppCacheDirs(String packageName) { + return buildPaths(mExternalDirsForApp, DIR_ANDROID, DIR_DATA, packageName, DIR_CACHE); + } + } + + /** + * Gets the Android root directory. + */ + public static File getRootDirectory() { + return DIR_ANDROID_ROOT; + } + + /** + * Gets the system directory available for secure storage. + * If Encrypted File system is enabled, it returns an encrypted directory (/data/secure/system). + * Otherwise, it returns the unencrypted /data/system directory. + * @return File object representing the secure storage system directory. + * @hide + */ + public static File getSystemSecureDirectory() { + if (isEncryptedFilesystemEnabled()) { + return new File(SECURE_DATA_DIRECTORY, "system"); + } else { + return new File(DATA_DIRECTORY, "system"); + } + } + + /** + * Gets the data directory for secure storage. + * If Encrypted File system is enabled, it returns an encrypted directory (/data/secure). + * Otherwise, it returns the unencrypted /data directory. + * @return File object representing the data directory for secure storage. + * @hide + */ + public static File getSecureDataDirectory() { + if (isEncryptedFilesystemEnabled()) { + return SECURE_DATA_DIRECTORY; + } else { + return DATA_DIRECTORY; + } + } + + /** + * Return directory used for internal media storage, which is protected by + * {@link android.Manifest.permission#WRITE_MEDIA_STORAGE}. + * + * @hide + */ + public static File getMediaStorageDirectory() { + throwIfUserRequired(); + return sCurrentUser.getMediaDir(); + } + + /** + * Return the system directory for a user. This is for use by system services to store + * files relating to the user. This directory will be automatically deleted when the user + * is removed. + * + * @hide + */ + public static File getUserSystemDirectory(int userId) { + return new File(new File(getSystemSecureDirectory(), "users"), Integer.toString(userId)); + } + + /** + * Returns whether the Encrypted File System feature is enabled on the device or not. + * @return true if Encrypted File System feature is enabled, false + * if disabled. + * @hide + */ + public static boolean isEncryptedFilesystemEnabled() { + return false; + } + + private static final File DATA_DIRECTORY + = getDirectory("ANDROID_DATA", "/data"); + + /** + * @hide + */ + private static final File SECURE_DATA_DIRECTORY + = getDirectory("ANDROID_SECURE_DATA", "/data/secure"); + + private static final File DOWNLOAD_CACHE_DIRECTORY = getDirectory("DOWNLOAD_CACHE", "/cache"); + + /** + * Return the user data directory. + */ + public static File getDataDirectory() { + return DATA_DIRECTORY; + } + + /** + * Return the primary external storage directory. This directory may not + * currently be accessible if it has been mounted by the user on their + * computer, has been removed from the device, or some other problem has + * happened. You can determine its current state with + * {@link #getExternalStorageState()}. + *

+ * Note: don't be confused by the word "external" here. This directory + * can better be thought as media/shared storage. It is a filesystem that + * can hold a relatively large amount of data and that is shared across all + * applications (does not enforce permissions). Traditionally this is an SD + * card, but it may also be implemented as built-in storage in a device that + * is distinct from the protected internal storage and can be mounted as a + * filesystem on a computer. + *

+ * On devices with multiple users (as described by {@link UserManager}), + * each user has their own isolated external storage. Applications only have + * access to the external storage for the user they're running as. + *

+ * In devices with multiple "external" storage directories, this directory + * represents the "primary" external storage that the user will interact + * with. Access to secondary storage is available through + *

+ * Applications should not directly use this top-level directory, in order + * to avoid polluting the user's root namespace. Any files that are private + * to the application should be placed in a directory returned by + * {@link android.content.Context#getExternalFilesDir + * Context.getExternalFilesDir}, which the system will take care of deleting + * if the application is uninstalled. Other shared files should be placed in + * one of the directories returned by + * {@link #getExternalStoragePublicDirectory}. + *

+ * Writing to this path requires the + * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission, + * and starting in read access requires the + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} permission, + * which is automatically granted if you hold the write permission. + *

+ * Starting in {@link android.os.Build.VERSION_CODES#KITKAT}, if your + * application only needs to store internal data, consider using + * {@link Context#getExternalFilesDir(String)} or + * {@link Context#getExternalCacheDir()}, which require no permissions to + * read or write. + *

+ * This path may change between platform versions, so applications should + * only persist relative paths. + *

+ * Here is an example of typical code to monitor the state of external + * storage: + *

+ * {@sample + * development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java + * monitor_storage} + * + * @see #getExternalStorageState() + * @see #isExternalStorageRemovable() + */ + public static File getExternalStorageDirectory() { +// throwIfUserRequired(); + return new File("data/");/*sCurrentUser.getExternalDirsForApp()[0];*/ + } + + /** {@hide} */ + public static File getLegacyExternalStorageDirectory() { + return new File(System.getenv(ENV_EXTERNAL_STORAGE)); + } + + /** {@hide} */ + public static File getLegacyExternalStorageObbDirectory() { + return buildPath(getLegacyExternalStorageDirectory(), DIR_ANDROID, DIR_OBB); + } + + /** {@hide} */ + public static File getEmulatedStorageSource(int userId) { + // /mnt/shell/emulated/0 + return new File(System.getenv(ENV_EMULATED_STORAGE_SOURCE), String.valueOf(userId)); + } + + /** {@hide} */ + public static File getEmulatedStorageObbSource() { + // /mnt/shell/emulated/obb + return new File(System.getenv(ENV_EMULATED_STORAGE_SOURCE), DIR_OBB); + } + + /** + * Standard directory in which to place any audio files that should be + * in the regular list of music for the user. + * This may be combined with + * {@link #DIRECTORY_PODCASTS}, {@link #DIRECTORY_NOTIFICATIONS}, + * {@link #DIRECTORY_ALARMS}, and {@link #DIRECTORY_RINGTONES} as a series + * of directories to categories a particular audio file as more than one + * type. + */ + public static String DIRECTORY_MUSIC = "Music"; + + /** + * Standard directory in which to place any audio files that should be + * in the list of podcasts that the user can select (not as regular + * music). + * This may be combined with {@link #DIRECTORY_MUSIC}, + * {@link #DIRECTORY_NOTIFICATIONS}, + * {@link #DIRECTORY_ALARMS}, and {@link #DIRECTORY_RINGTONES} as a series + * of directories to categories a particular audio file as more than one + * type. + */ + public static String DIRECTORY_PODCASTS = "Podcasts"; + + /** + * Standard directory in which to place any audio files that should be + * in the list of ringtones that the user can select (not as regular + * music). + * This may be combined with {@link #DIRECTORY_MUSIC}, + * {@link #DIRECTORY_PODCASTS}, {@link #DIRECTORY_NOTIFICATIONS}, and + * {@link #DIRECTORY_ALARMS} as a series + * of directories to categories a particular audio file as more than one + * type. + */ + public static String DIRECTORY_RINGTONES = "Ringtones"; + + /** + * Standard directory in which to place any audio files that should be + * in the list of alarms that the user can select (not as regular + * music). + * This may be combined with {@link #DIRECTORY_MUSIC}, + * {@link #DIRECTORY_PODCASTS}, {@link #DIRECTORY_NOTIFICATIONS}, + * and {@link #DIRECTORY_RINGTONES} as a series + * of directories to categories a particular audio file as more than one + * type. + */ + public static String DIRECTORY_ALARMS = "Alarms"; + + /** + * Standard directory in which to place any audio files that should be + * in the list of notifications that the user can select (not as regular + * music). + * This may be combined with {@link #DIRECTORY_MUSIC}, + * {@link #DIRECTORY_PODCASTS}, + * {@link #DIRECTORY_ALARMS}, and {@link #DIRECTORY_RINGTONES} as a series + * of directories to categories a particular audio file as more than one + * type. + */ + public static String DIRECTORY_NOTIFICATIONS = "Notifications"; + + /** + * Standard directory in which to place pictures that are available to + * the user. Note that this is primarily a convention for the top-level + * public directory, as the media scanner will find and collect pictures + * in any directory. + */ + public static String DIRECTORY_PICTURES = "Pictures"; + + /** + * Standard directory in which to place movies that are available to + * the user. Note that this is primarily a convention for the top-level + * public directory, as the media scanner will find and collect movies + * in any directory. + */ + public static String DIRECTORY_MOVIES = "Movies"; + + /** + * Standard directory in which to place files that have been downloaded by + * the user. Note that this is primarily a convention for the top-level + * public directory, you are free to download files anywhere in your own + * private directories. Also note that though the constant here is + * named DIRECTORY_DOWNLOADS (plural), the actual file name is non-plural for + * backwards compatibility reasons. + */ + public static String DIRECTORY_DOWNLOADS = "Download"; + + /** + * The traditional location for pictures and videos when mounting the + * device as a camera. Note that this is primarily a convention for the + * top-level public directory, as this convention makes no sense elsewhere. + */ + public static String DIRECTORY_DCIM = "DCIM"; + + /** + * Standard directory in which to place documents that have been created by + * the user. + */ + public static String DIRECTORY_DOCUMENTS = "Documents"; + + /** + * Get a top-level public external storage directory for placing files of + * a particular type. This is where the user will typically place and + * manage their own files, so you should be careful about what you put here + * to ensure you don't erase their files or get in the way of their own + * organization. + * + *

On devices with multiple users (as described by {@link UserManager}), + * each user has their own isolated external storage. Applications only + * have access to the external storage for the user they're running as.

+ * + *

Here is an example of typical code to manipulate a picture on + * the public external storage:

+ * + * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java + * public_picture} + * + * @param type The type of storage directory to return. Should be one of + * {@link #DIRECTORY_MUSIC}, {@link #DIRECTORY_PODCASTS}, + * {@link #DIRECTORY_RINGTONES}, {@link #DIRECTORY_ALARMS}, + * {@link #DIRECTORY_NOTIFICATIONS}, {@link #DIRECTORY_PICTURES}, + * {@link #DIRECTORY_MOVIES}, {@link #DIRECTORY_DOWNLOADS}, or + * {@link #DIRECTORY_DCIM}. May not be null. + * + * @return Returns the File path for the directory. Note that this + * directory may not yet exist, so you must make sure it exists before + * using it such as with {@link File#mkdirs File.mkdirs()}. + */ + public static File getExternalStoragePublicDirectory(String type) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStoragePublicDirs(type)[0]; + } + + /** + * Returns the path for android-specific data on the SD card. + * @hide + */ + public static File[] buildExternalStorageAndroidDataDirs() { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAndroidDataDirs(); + } + + /** + * Generates the raw path to an application's data + * @hide + */ + public static File[] buildExternalStorageAppDataDirs(String packageName) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAppDataDirs(packageName); + } + + /** + * Generates the raw path to an application's media + * @hide + */ + public static File[] buildExternalStorageAppMediaDirs(String packageName) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAppMediaDirs(packageName); + } + + /** + * Generates the raw path to an application's OBB files + * @hide + */ + public static File[] buildExternalStorageAppObbDirs(String packageName) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAppObbDirs(packageName); + } + + /** + * Generates the path to an application's files. + * @hide + */ + public static File[] buildExternalStorageAppFilesDirs(String packageName) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAppFilesDirs(packageName); + } + + /** + * Generates the path to an application's cache. + * @hide + */ + public static File[] buildExternalStorageAppCacheDirs(String packageName) { + throwIfUserRequired(); + return sCurrentUser.buildExternalStorageAppCacheDirs(packageName); + } + + /** + * Return the download/cache content directory. + */ + public static File getDownloadCacheDirectory() { + return DOWNLOAD_CACHE_DIRECTORY; + } + + /** + * Unknown storage state, such as when a path isn't backed by known storage + * media. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_UNKNOWN = "unknown"; + + /** + * Storage state if the media is not present. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_REMOVED = "removed"; + + /** + * Storage state if the media is present but not mounted. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_UNMOUNTED = "unmounted"; + + /** + * Storage state if the media is present and being disk-checked. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_CHECKING = "checking"; + + /** + * Storage state if the media is present but is blank or is using an + * unsupported filesystem. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_NOFS = "nofs"; + + /** + * Storage state if the media is present and mounted at its mount point with + * read/write access. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_MOUNTED = "mounted"; + + /** + * Storage state if the media is present and mounted at its mount point with + * read-only access. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_MOUNTED_READ_ONLY = "mounted_ro"; + + /** + * Storage state if the media is present not mounted, and shared via USB + * mass storage. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_SHARED = "shared"; + + /** + * Storage state if the media was removed before it was unmounted. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_BAD_REMOVAL = "bad_removal"; + + /** + * Storage state if the media is present but cannot be mounted. Typically + * this happens if the file system on the media is corrupted. + * + * @see #getStorageState(File) + */ + public static final String MEDIA_UNMOUNTABLE = "unmountable"; + + /** + * Returns the current state of the primary "external" storage device. + * + * @see #getExternalStorageDirectory() + * @return one of {@link #MEDIA_UNKNOWN}, {@link #MEDIA_REMOVED}, + * {@link #MEDIA_UNMOUNTED}, {@link #MEDIA_CHECKING}, + * {@link #MEDIA_NOFS}, {@link #MEDIA_MOUNTED}, + * {@link #MEDIA_MOUNTED_READ_ONLY}, {@link #MEDIA_SHARED}, + * {@link #MEDIA_BAD_REMOVAL}, or {@link #MEDIA_UNMOUNTABLE}. + */ + public static String getExternalStorageState() { + final File externalDir = sCurrentUser.getExternalDirsForApp()[0]; + return getStorageState(externalDir); + } + + /** + * Returns the current state of the storage device that provides the given + * path. + * + * @return one of {@link #MEDIA_UNKNOWN}, {@link #MEDIA_REMOVED}, + * {@link #MEDIA_UNMOUNTED}, {@link #MEDIA_CHECKING}, + * {@link #MEDIA_NOFS}, {@link #MEDIA_MOUNTED}, + * {@link #MEDIA_MOUNTED_READ_ONLY}, {@link #MEDIA_SHARED}, + * {@link #MEDIA_BAD_REMOVAL}, or {@link #MEDIA_UNMOUNTABLE}. + */ + public static String getStorageState(File path) { + final String rawPath; + try { + rawPath = path.getCanonicalPath(); + } catch (IOException e) { + Log.w(TAG, "Failed to resolve target path: " + e); + return Environment.MEDIA_UNKNOWN; + } + + return Environment.MEDIA_UNKNOWN; + } + + /** + * Returns whether the primary "external" storage device is removable. + * If true is returned, this device is for example an SD card that the + * user can remove. If false is returned, the storage is built into + * the device and can not be physically removed. + * + *

See {@link #getExternalStorageDirectory()} for more information. + */ + public static boolean isExternalStorageRemovable() { + return false; + } + + /** + * Returns whether the device has an external storage device which is + * emulated. If true, the device does not have real external storage, and the directory + * returned by {@link #getExternalStorageDirectory()} will be allocated using a portion of + * the internal storage system. + * + *

Certain system services, such as the package manager, use this + * to determine where to install an application. + * + *

Emulated external storage may also be encrypted - see + * {@link android.app.admin.DevicePolicyManager#setStorageEncryption( + * android.content.ComponentName, boolean)} for additional details. + */ + public static boolean isExternalStorageEmulated() { + return false; + } + + static File getDirectory(String variableName, String defaultPath) { + String path = System.getenv(variableName); + return path == null ? new File(defaultPath) : new File(path); + } + + private static String getCanonicalPathOrNull(String variableName) { + String path = System.getenv(variableName); + if (path == null) { + return null; + } + try { + return new File(path).getCanonicalPath(); + } catch (IOException e) { + Log.w(TAG, "Unable to resolve canonical path for " + path); + return null; + } + } + + /** {@hide} */ + public static void setUserRequired(boolean userRequired) { + sUserRequired = userRequired; + } + + private static void throwIfUserRequired() { + if (sUserRequired) { + Log.wtf(TAG, "Path requests must specify a user by using UserEnvironment", + new Throwable()); + } + } + + /** + * Append path segments to each given base path, returning result. + * + * @hide + */ + public static File[] buildPaths(File[] base, String... segments) { + File[] result = new File[base.length]; + for (int i = 0; i < base.length; i++) { + result[i] = buildPath(base[i], segments); + } + return result; + } + + /** + * Append path segments to given base path, returning result. + * + * @hide + */ + public static File buildPath(File base, String... segments) { + File cur = base; + for (String segment : segments) { + if (cur == null) { + cur = new File(segment); + } else { + cur = new File(cur, segment); + } + } + return cur; + } + + /** + * If the given path exists on emulated external storage, return the + * translated backing path hosted on internal storage. This bypasses any + * emulation later, improving performance. This is only suitable + * for read-only access. + *

+ * Returns original path if given path doesn't meet these criteria. Callers + * must hold {@link android.Manifest.permission#WRITE_MEDIA_STORAGE} + * permission. + * + * @hide + */ + public static File maybeTranslateEmulatedPathToInternal(File path) { + // Fast return if not emulated, or missing variables + if (!Environment.isExternalStorageEmulated() + || CANONCIAL_EMULATED_STORAGE_TARGET == null) { + return path; + } + + try { + final String rawPath = path.getCanonicalPath(); + if (rawPath.startsWith(CANONCIAL_EMULATED_STORAGE_TARGET)) { + final File internalPath = new File(DIR_MEDIA_STORAGE, + rawPath.substring(CANONCIAL_EMULATED_STORAGE_TARGET.length())); + if (internalPath.exists()) { + return internalPath; + } + } + } catch (IOException e) { + Log.w(TAG, "Failed to resolve canonical path for " + path); + } + + // Unable to translate to internal path; use original + return path; + } +} diff --git a/src/api-impl/android/os/Handler.java b/src/api-impl/android/os/Handler.java new file mode 100644 index 00000000..1b07886a --- /dev/null +++ b/src/api-impl/android/os/Handler.java @@ -0,0 +1,796 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.Log; +import android.util.Printer; + +import java.lang.reflect.Modifier; + +/** + * A Handler allows you to send and process {@link Message} and Runnable + * objects associated with a thread's {@link MessageQueue}. Each Handler + * instance is associated with a single thread and that thread's message + * queue. When you create a new Handler, it is bound to the thread / + * message queue of the thread that is creating it -- from that point on, + * it will deliver messages and runnables to that message queue and execute + * them as they come out of the message queue. + * + *

There are two main uses for a Handler: (1) to schedule messages and + * runnables to be executed as some point in the future; and (2) to enqueue + * an action to be performed on a different thread than your own. + * + *

Scheduling messages is accomplished with the + * {@link #post}, {@link #postAtTime(Runnable, long)}, + * {@link #postDelayed}, {@link #sendEmptyMessage}, + * {@link #sendMessage}, {@link #sendMessageAtTime}, and + * {@link #sendMessageDelayed} methods. The post versions allow + * you to enqueue Runnable objects to be called by the message queue when + * they are received; the sendMessage versions allow you to enqueue + * a {@link Message} object containing a bundle of data that will be + * processed by the Handler's {@link #handleMessage} method (requiring that + * you implement a subclass of Handler). + * + *

When posting or sending to a Handler, you can either + * allow the item to be processed as soon as the message queue is ready + * to do so, or specify a delay before it gets processed or absolute time for + * it to be processed. The latter two allow you to implement timeouts, + * ticks, and other timing-based behavior. + * + *

When a + * process is created for your application, its main thread is dedicated to + * running a message queue that takes care of managing the top-level + * application objects (activities, broadcast receivers, etc) and any windows + * they create. You can create your own threads, and communicate back with + * the main application thread through a Handler. This is done by calling + * the same post or sendMessage methods as before, but from + * your new thread. The given Runnable or Message will then be scheduled + * in the Handler's message queue and processed when appropriate. + */ +public class Handler { + /* + * Set this flag to true to detect anonymous, local or member classes + * that extend this Handler class and that are not static. These kind + * of classes can potentially create leaks. + */ + private static final boolean FIND_POTENTIAL_LEAKS = false; + private static final String TAG = "Handler"; + + /** + * Callback interface you can use when instantiating a Handler to avoid + * having to implement your own subclass of Handler. + * + * @param msg A {@link android.os.Message Message} object + * @return True if no further handling is desired + */ + public interface Callback { + public boolean handleMessage(Message msg); + } + + /** + * Subclasses must implement this to receive messages. + */ + public void handleMessage(Message msg) { + } + + /** + * Handle system messages here. + */ + public void dispatchMessage(Message msg) { + if (msg.callback != null) { + handleCallback(msg); + } else { + if (mCallback != null) { + if (mCallback.handleMessage(msg)) { + return; + } + } + handleMessage(msg); + } + } + + /** + * Default constructor associates this handler with the {@link Looper} for the + * current thread. + * + * If this thread does not have a looper, this handler won't be able to receive messages + * so an exception is thrown. + */ + public Handler() { + this(null, false); + } + + /** + * Constructor associates this handler with the {@link Looper} for the + * current thread and takes a callback interface in which you can handle + * messages. + * + * If this thread does not have a looper, this handler won't be able to receive messages + * so an exception is thrown. + * + * @param callback The callback interface in which to handle messages, or null. + */ + public Handler(Callback callback) { + this(callback, false); + } + + /** + * Use the provided {@link Looper} instead of the default one. + * + * @param looper The looper, must not be null. + */ + public Handler(Looper looper) { + this(looper, null, false); + } + + /** + * Use the provided {@link Looper} instead of the default one and take a callback + * interface in which to handle messages. + * + * @param looper The looper, must not be null. + * @param callback The callback interface in which to handle messages, or null. + */ + public Handler(Looper looper, Callback callback) { + this(looper, callback, false); + } + + /** + * Use the {@link Looper} for the current thread + * and set whether the handler should be asynchronous. + * + * Handlers are synchronous by default unless this constructor is used to make + * one that is strictly asynchronous. + * + * Asynchronous messages represent interrupts or events that do not require global ordering + * with represent to synchronous messages. Asynchronous messages are not subject to + * the synchronization barriers introduced by {@link MessageQueue#enqueueSyncBarrier(long)}. + * + * @param async If true, the handler calls {@link Message#setAsynchronous(boolean)} for + * each {@link Message} that is sent to it or {@link Runnable} that is posted to it. + * + * @hide + */ + public Handler(boolean async) { + this(null, async); + } + + /** + * Use the {@link Looper} for the current thread with the specified callback interface + * and set whether the handler should be asynchronous. + * + * Handlers are synchronous by default unless this constructor is used to make + * one that is strictly asynchronous. + * + * Asynchronous messages represent interrupts or events that do not require global ordering + * with represent to synchronous messages. Asynchronous messages are not subject to + * the synchronization barriers introduced by {@link MessageQueue#enqueueSyncBarrier(long)}. + * + * @param callback The callback interface in which to handle messages, or null. + * @param async If true, the handler calls {@link Message#setAsynchronous(boolean)} for + * each {@link Message} that is sent to it or {@link Runnable} that is posted to it. + * + * @hide + */ + public Handler(Callback callback, boolean async) { + if (FIND_POTENTIAL_LEAKS) { + final Class klass = getClass(); + if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass()) && + (klass.getModifiers() & Modifier.STATIC) == 0) { + Log.w(TAG, "The following Handler class should be static or leaks might occur: " + + klass.getCanonicalName()); + } + } + + mLooper = Looper.myLooper(); + if (mLooper == null) { + throw new RuntimeException( + "Can't create handler inside thread that has not called Looper.prepare()"); + } + mQueue = mLooper.mQueue; + mCallback = callback; + mAsynchronous = async; + } + + /** + * Use the provided {@link Looper} instead of the default one and take a callback + * interface in which to handle messages. Also set whether the handler + * should be asynchronous. + * + * Handlers are synchronous by default unless this constructor is used to make + * one that is strictly asynchronous. + * + * Asynchronous messages represent interrupts or events that do not require global ordering + * with represent to synchronous messages. Asynchronous messages are not subject to + * the synchronization barriers introduced by {@link MessageQueue#enqueueSyncBarrier(long)}. + * + * @param looper The looper, must not be null. + * @param callback The callback interface in which to handle messages, or null. + * @param async If true, the handler calls {@link Message#setAsynchronous(boolean)} for + * each {@link Message} that is sent to it or {@link Runnable} that is posted to it. + * + * @hide + */ + public Handler(Looper looper, Callback callback, boolean async) { + mLooper = looper; + mQueue = looper.mQueue; + mCallback = callback; + mAsynchronous = async; + } + + /** + * Returns a string representing the name of the specified message. + * The default implementation will either return the class name of the + * message callback if any, or the hexadecimal representation of the + * message "what" field. + * + * @param message The message whose name is being queried + */ + public String getMessageName(Message message) { + if (message.callback != null) { + return message.callback.getClass().getName(); + } + return "0x" + Integer.toHexString(message.what); + } + + /** + * Returns a new {@link android.os.Message Message} from the global message pool. More efficient than + * creating and allocating new instances. The retrieved message has its handler set to this instance (Message.target == this). + * If you don't want that facility, just call Message.obtain() instead. + */ + public final Message obtainMessage() + { + return Message.obtain(this); + } + + /** + * Same as {@link #obtainMessage()}, except that it also sets the what member of the returned Message. + * + * @param what Value to assign to the returned Message.what field. + * @return A Message from the global message pool. + */ + public final Message obtainMessage(int what) + { + return Message.obtain(this, what); + } + + /** + * + * Same as {@link #obtainMessage()}, except that it also sets the what and obj members + * of the returned Message. + * + * @param what Value to assign to the returned Message.what field. + * @param obj Value to assign to the returned Message.obj field. + * @return A Message from the global message pool. + */ + public final Message obtainMessage(int what, Object obj) + { + return Message.obtain(this, what, obj); + } + + /** + * + * Same as {@link #obtainMessage()}, except that it also sets the what, arg1 and arg2 members of the returned + * Message. + * @param what Value to assign to the returned Message.what field. + * @param arg1 Value to assign to the returned Message.arg1 field. + * @param arg2 Value to assign to the returned Message.arg2 field. + * @return A Message from the global message pool. + */ + public final Message obtainMessage(int what, int arg1, int arg2) + { + return Message.obtain(this, what, arg1, arg2); + } + + /** + * + * Same as {@link #obtainMessage()}, except that it also sets the what, obj, arg1,and arg2 values on the + * returned Message. + * @param what Value to assign to the returned Message.what field. + * @param arg1 Value to assign to the returned Message.arg1 field. + * @param arg2 Value to assign to the returned Message.arg2 field. + * @param obj Value to assign to the returned Message.obj field. + * @return A Message from the global message pool. + */ + public final Message obtainMessage(int what, int arg1, int arg2, Object obj) + { + return Message.obtain(this, what, arg1, arg2, obj); + } + + /** + * Causes the Runnable r to be added to the message queue. + * The runnable will be run on the thread to which this handler is + * attached. + * + * @param r The Runnable that will be executed. + * + * @return Returns true if the Runnable was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean post(Runnable r) + { +// return sendMessageDelayed(getPostMessage(r), 0); + r.run(); + return true; + } + + /** + * Causes the Runnable r to be added to the message queue, to be run + * at a specific time given by uptimeMillis. + * The time-base is {@link android.os.SystemClock#uptimeMillis}. + * The runnable will be run on the thread to which this handler is attached. + * + * @param r The Runnable that will be executed. + * @param uptimeMillis The absolute time at which the callback should run, + * using the {@link android.os.SystemClock#uptimeMillis} time-base. + * + * @return Returns true if the Runnable was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. Note that a + * result of true does not mean the Runnable will be processed -- if + * the looper is quit before the delivery time of the message + * occurs then the message will be dropped. + */ + public final boolean postAtTime(Runnable r, long uptimeMillis) + { + return sendMessageAtTime(getPostMessage(r), uptimeMillis); + } + + /** + * Causes the Runnable r to be added to the message queue, to be run + * at a specific time given by uptimeMillis. + * The time-base is {@link android.os.SystemClock#uptimeMillis}. + * The runnable will be run on the thread to which this handler is attached. + * + * @param r The Runnable that will be executed. + * @param uptimeMillis The absolute time at which the callback should run, + * using the {@link android.os.SystemClock#uptimeMillis} time-base. + * + * @return Returns true if the Runnable was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. Note that a + * result of true does not mean the Runnable will be processed -- if + * the looper is quit before the delivery time of the message + * occurs then the message will be dropped. + * + * @see android.os.SystemClock#uptimeMillis + */ + public final boolean postAtTime(Runnable r, Object token, long uptimeMillis) + { + return sendMessageAtTime(getPostMessage(r, token), uptimeMillis); + } + + /** + * Causes the Runnable r to be added to the message queue, to be run + * after the specified amount of time elapses. + * The runnable will be run on the thread to which this handler + * is attached. + * + * @param r The Runnable that will be executed. + * @param delayMillis The delay (in milliseconds) until the Runnable + * will be executed. + * + * @return Returns true if the Runnable was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. Note that a + * result of true does not mean the Runnable will be processed -- + * if the looper is quit before the delivery time of the message + * occurs then the message will be dropped. + */ + public final boolean postDelayed(Runnable r, long delayMillis) + { + return sendMessageDelayed(getPostMessage(r), delayMillis); + } + + /** + * Posts a message to an object that implements Runnable. + * Causes the Runnable r to executed on the next iteration through the + * message queue. The runnable will be run on the thread to which this + * handler is attached. + * This method is only for use in very special circumstances -- it + * can easily starve the message queue, cause ordering problems, or have + * other unexpected side-effects. + * + * @param r The Runnable that will be executed. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean postAtFrontOfQueue(Runnable r) + { + return sendMessageAtFrontOfQueue(getPostMessage(r)); + } + + /** + * Runs the specified task synchronously. + *

+ * If the current thread is the same as the handler thread, then the runnable + * runs immediately without being enqueued. Otherwise, posts the runnable + * to the handler and waits for it to complete before returning. + *

+ * This method is dangerous! Improper use can result in deadlocks. + * Never call this method while any locks are held or use it in a + * possibly re-entrant manner. + *

+ * This method is occasionally useful in situations where a background thread + * must synchronously await completion of a task that must run on the + * handler's thread. However, this problem is often a symptom of bad design. + * Consider improving the design (if possible) before resorting to this method. + *

+ * One example of where you might want to use this method is when you just + * set up a Handler thread and need to perform some initialization steps on + * it before continuing execution. + *

+ * If timeout occurs then this method returns false but the runnable + * will remain posted on the handler and may already be in progress or + * complete at a later time. + *

+ * When using this method, be sure to use {@link Looper#quitSafely} when + * quitting the looper. Otherwise {@link #runWithScissors} may hang indefinitely. + * (TODO: We should fix this by making MessageQueue aware of blocking runnables.) + *

+ * + * @param r The Runnable that will be executed synchronously. + * @param timeout The timeout in milliseconds, or 0 to wait indefinitely. + * + * @return Returns true if the Runnable was successfully executed. + * Returns false on failure, usually because the + * looper processing the message queue is exiting. + * + * @hide This method is prone to abuse and should probably not be in the API. + * If we ever do make it part of the API, we might want to rename it to something + * less funny like runUnsafe(). + */ + public final boolean runWithScissors(final Runnable r, long timeout) { + if (r == null) { + throw new IllegalArgumentException("runnable must not be null"); + } + if (timeout < 0) { + throw new IllegalArgumentException("timeout must be non-negative"); + } + + if (Looper.myLooper() == mLooper) { + r.run(); + return true; + } + + BlockingRunnable br = new BlockingRunnable(r); + return br.postAndWait(this, timeout); + } + + /** + * Remove any pending posts of Runnable r that are in the message queue. + */ + public final void removeCallbacks(Runnable r) + { + mQueue.removeMessages(this, r, null); + } + + /** + * Remove any pending posts of Runnable r with Object + * token that are in the message queue. If token is null, + * all callbacks will be removed. + */ + public final void removeCallbacks(Runnable r, Object token) + { + mQueue.removeMessages(this, r, token); + } + + /** + * Pushes a message onto the end of the message queue after all pending messages + * before the current time. It will be received in {@link #handleMessage}, + * in the thread attached to this handler. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean sendMessage(Message msg) + { + return sendMessageDelayed(msg, 0); + } + + /** + * Sends a Message containing only the what value. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean sendEmptyMessage(int what) + { + return sendEmptyMessageDelayed(what, 0); + } + + /** + * Sends a Message containing only the what value, to be delivered + * after the specified amount of time elapses. + * @see #sendMessageDelayed(android.os.Message, long) + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean sendEmptyMessageDelayed(int what, long delayMillis) { + Message msg = Message.obtain(); + msg.what = what; + return sendMessageDelayed(msg, delayMillis); + } + + /** + * Sends a Message containing only the what value, to be delivered + * at a specific time. + * @see #sendMessageAtTime(android.os.Message, long) + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + + public final boolean sendEmptyMessageAtTime(int what, long uptimeMillis) { + Message msg = Message.obtain(); + msg.what = what; + return sendMessageAtTime(msg, uptimeMillis); + } + + /** + * Enqueue a message into the message queue after all pending messages + * before (current time + delayMillis). You will receive it in + * {@link #handleMessage}, in the thread attached to this handler. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. Note that a + * result of true does not mean the message will be processed -- if + * the looper is quit before the delivery time of the message + * occurs then the message will be dropped. + */ + public final boolean sendMessageDelayed(Message msg, long delayMillis) + { + if (delayMillis < 0) { + delayMillis = 0; + } + return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis); + } + + /** + * Enqueue a message into the message queue after all pending messages + * before the absolute time (in milliseconds) uptimeMillis. + * The time-base is {@link android.os.SystemClock#uptimeMillis}. + * You will receive it in {@link #handleMessage}, in the thread attached + * to this handler. + * + * @param uptimeMillis The absolute time at which the message should be + * delivered, using the + * {@link android.os.SystemClock#uptimeMillis} time-base. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. Note that a + * result of true does not mean the message will be processed -- if + * the looper is quit before the delivery time of the message + * occurs then the message will be dropped. + */ + public boolean sendMessageAtTime(Message msg, long uptimeMillis) { +/* MessageQueue queue = mQueue; + if (queue == null) { + RuntimeException e = new RuntimeException( + this + " sendMessageAtTime() called with no mQueue"); + Log.w("Looper", e.getMessage(), e); + return false; + } + return enqueueMessage(queue, msg, uptimeMillis);*/ + return true; + } + + /** + * Enqueue a message at the front of the message queue, to be processed on + * the next iteration of the message loop. You will receive it in + * {@link #handleMessage}, in the thread attached to this handler. + * This method is only for use in very special circumstances -- it + * can easily starve the message queue, cause ordering problems, or have + * other unexpected side-effects. + * + * @return Returns true if the message was successfully placed in to the + * message queue. Returns false on failure, usually because the + * looper processing the message queue is exiting. + */ + public final boolean sendMessageAtFrontOfQueue(Message msg) { + /*MessageQueue queue = mQueue; + if (queue == null) { + RuntimeException e = new RuntimeException( + this + " sendMessageAtTime() called with no mQueue"); + Log.w("Looper", e.getMessage(), e); + return false; + } + return enqueueMessage(queue, msg, 0);*/ + return true; + } + + private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) { + msg.target = this; + if (mAsynchronous) { + msg.setAsynchronous(true); + } + return queue.enqueueMessage(msg, uptimeMillis); + } + + /** + * Remove any pending posts of messages with code 'what' that are in the + * message queue. + */ + public final void removeMessages(int what) { + mQueue.removeMessages(this, what, null); + } + + /** + * Remove any pending posts of messages with code 'what' and whose obj is + * 'object' that are in the message queue. If object is null, + * all messages will be removed. + */ + public final void removeMessages(int what, Object object) { + mQueue.removeMessages(this, what, object); + } + + /** + * Remove any pending posts of callbacks and sent messages whose + * obj is token. If token is null, + * all callbacks and messages will be removed. + */ + public final void removeCallbacksAndMessages(Object token) { + mQueue.removeCallbacksAndMessages(this, token); + } + + /** + * Check if there are any pending posts of messages with code 'what' in + * the message queue. + */ + public final boolean hasMessages(int what) { + return mQueue.hasMessages(this, what, null); + } + + /** + * Check if there are any pending posts of messages with code 'what' and + * whose obj is 'object' in the message queue. + */ + public final boolean hasMessages(int what, Object object) { + return mQueue.hasMessages(this, what, object); + } + + /** + * Check if there are any pending posts of messages with callback r in + * the message queue. + * + * @hide + */ + public final boolean hasCallbacks(Runnable r) { + return mQueue.hasMessages(this, r, null); + } + + // if we can get rid of this method, the handler need not remember its loop + // we could instead export a getMessageQueue() method... + public final Looper getLooper() { + return mLooper; + } + + public final void dump(Printer pw, String prefix) { + pw.println(prefix + this + " @ " + SystemClock.uptimeMillis()); + if (mLooper == null) { + pw.println(prefix + "looper uninitialized"); + } else { + mLooper.dump(pw, prefix + " "); + } + } + + @Override + public String toString() { + return "Handler (" + getClass().getName() + ") {" + + Integer.toHexString(System.identityHashCode(this)) + + "}"; + } + + final IMessenger getIMessenger() { + synchronized (mQueue) { + if (mMessenger != null) { + return mMessenger; + } + mMessenger = new MessengerImpl(); + return mMessenger; + } + } + + private final class MessengerImpl implements IMessenger { + public void send(Message msg) { + Handler.this.sendMessage(msg); + } + } + + private static Message getPostMessage(Runnable r) { + Message m = Message.obtain(); + m.callback = r; + return m; + } + + private static Message getPostMessage(Runnable r, Object token) { + Message m = Message.obtain(); + m.obj = token; + m.callback = r; + return m; + } + + private static void handleCallback(Message message) { + message.callback.run(); + } + + final MessageQueue mQueue; + final Looper mLooper; + final Callback mCallback; + final boolean mAsynchronous; + IMessenger mMessenger; + + private static final class BlockingRunnable implements Runnable { + private final Runnable mTask; + private boolean mDone; + + public BlockingRunnable(Runnable task) { + mTask = task; + } + + @Override + public void run() { + try { + mTask.run(); + } finally { + synchronized (this) { + mDone = true; + notifyAll(); + } + } + } + + public boolean postAndWait(Handler handler, long timeout) { + if (!handler.post(this)) { + return false; + } + + synchronized (this) { + if (timeout > 0) { + final long expirationTime = SystemClock.uptimeMillis() + timeout; + while (!mDone) { + long delay = expirationTime - SystemClock.uptimeMillis(); + if (delay <= 0) { + return false; // timeout + } + try { + wait(delay); + } catch (InterruptedException ex) { + } + } + } else { + while (!mDone) { + try { + wait(); + } catch (InterruptedException ex) { + } + } + } + } + return true; + } + } +} diff --git a/src/api-impl/android/os/HandlerThread.java b/src/api-impl/android/os/HandlerThread.java new file mode 100644 index 00000000..cede5f90 --- /dev/null +++ b/src/api-impl/android/os/HandlerThread.java @@ -0,0 +1,19 @@ +package android.os; + +public class HandlerThread extends Thread { + String name; + + public HandlerThread() {} + + public HandlerThread(String name) { + this.name = name; + } + + public void start() { + // if(name.equals("FlurryAgent")) { return; } + } + + public Looper getLooper() { + return new Looper(); + } +} diff --git a/src/api-impl/android/os/IBinder.java b/src/api-impl/android/os/IBinder.java new file mode 100644 index 00000000..00ee8c39 --- /dev/null +++ b/src/api-impl/android/os/IBinder.java @@ -0,0 +1,5 @@ +package android.os; + +public class IBinder { + +} diff --git a/src/api-impl/android/os/IMessenger.java b/src/api-impl/android/os/IMessenger.java new file mode 100644 index 00000000..809455a9 --- /dev/null +++ b/src/api-impl/android/os/IMessenger.java @@ -0,0 +1,25 @@ +/* //device/java/android/android/app/IActivityPendingResult.aidl +** +** Copyright 2007, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.os; + +import android.os.Message; + +/** @hide */ +interface IMessenger { + void send(Message msg); +} diff --git a/src/api-impl/android/os/Looper.java b/src/api-impl/android/os/Looper.java new file mode 100644 index 00000000..99b0c4aa --- /dev/null +++ b/src/api-impl/android/os/Looper.java @@ -0,0 +1,319 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.Log; +import android.util.Printer; +import android.util.PrefixPrinter; + +/** + * Class used to run a message loop for a thread. Threads by default do + * not have a message loop associated with them; to create one, call + * {@link #prepare} in the thread that is to run the loop, and then + * {@link #loop} to have it process messages until the loop is stopped. + * + *

Most interaction with a message loop is through the + * {@link Handler} class. + * + *

This is a typical example of the implementation of a Looper thread, + * using the separation of {@link #prepare} and {@link #loop} to create an + * initial Handler to communicate with the Looper. + * + *

+  *  class LooperThread extends Thread {
+  *      public Handler mHandler;
+  *
+  *      public void run() {
+  *          Looper.prepare();
+  *
+  *          mHandler = new Handler() {
+  *              public void handleMessage(Message msg) {
+  *                  // process incoming messages here
+  *              }
+  *          };
+  *
+  *          Looper.loop();
+  *      }
+  *  }
+ */ +public final class Looper { + private static final String TAG = "Looper"; + + // FIXME + public Looper() { + mQueue = null; + mThread = Thread.currentThread(); + System.out.println("making a fake Looper object, let's hope noone tries to actually use it"); + } + + // sThreadLocal.get() will return null unless you've called prepare(). + static final ThreadLocal sThreadLocal = new ThreadLocal(); + private static Looper sMainLooper; // guarded by Looper.class + + final MessageQueue mQueue; + final Thread mThread; + + private Printer mLogging; + + /** Initialize the current thread as a looper. + * This gives you a chance to create handlers that then reference + * this looper, before actually starting the loop. Be sure to call + * {@link #loop()} after calling this method, and end it by calling + * {@link #quit()}. + */ + public static void prepare() { + prepare(true); + } + + private static void prepare(boolean quitAllowed) { + if (sThreadLocal.get() != null) { + throw new RuntimeException("Only one Looper may be created per thread"); + } + sThreadLocal.set(new Looper(/*quitAllowed*/)); + } + + /** + * Initialize the current thread as a looper, marking it as an + * application's main looper. The main looper for your application + * is created by the Android environment, so you should never need + * to call this function yourself. See also: {@link #prepare()} + */ + public static void prepareMainLooper() { + prepare(false); + synchronized (Looper.class) { + if (sMainLooper != null) { + throw new IllegalStateException("The main Looper has already been prepared."); + } + sMainLooper = myLooper(); + } + } + + /** Returns the application's main looper, which lives in the main thread of the application. + */ + public static Looper getMainLooper() { + synchronized (Looper.class) { + return sMainLooper; + } + } + + /** + * Run the message queue in this thread. Be sure to call + * {@link #quit()} to end the loop. + */ + public static void loop() {/* + final Looper me = myLooper(); + if (me == null) { + throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread."); + } + final MessageQueue queue = me.mQueue; + + // Make sure the identity of this thread is that of the local process, + // and keep track of what that identity token actually is. +// Binder.clearCallingIdentity(); +// final long ident = Binder.clearCallingIdentity(); + + for (;;) { + Message msg = queue.next(); // might block + if (msg == null) { + // No message indicates that the message queue is quitting. + return; + } + + // This must be in a local variable, in case a UI event sets the logger + Printer logging = me.mLogging; + if (logging != null) { + logging.println(">>>>> Dispatching to " + msg.target + " " + + msg.callback + ": " + msg.what); + } + + msg.target.dispatchMessage(msg); + + if (logging != null) { + logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); + } + + // Make sure that during the course of dispatching the + // identity of the thread wasn't corrupted. +// final long newIdent = Binder.clearCallingIdentity(); +/* if (ident != newIdent) { + Log.wtf(TAG, "Thread identity changed from 0x" + + Long.toHexString(ident) + " to 0x" + + Long.toHexString(newIdent) + " while dispatching to " + + msg.target.getClass().getName() + " " + + msg.callback + " what=" + msg.what); + }* / + + msg.recycle(); + }*/ + } + + /** + * Return the Looper object associated with the current thread. Returns + * null if the calling thread is not associated with a Looper. + */ + public static Looper myLooper() { + if(sThreadLocal.get() == null) { + prepare(false); + } + return sThreadLocal.get(); + } + + /** + * Control logging of messages as they are processed by this Looper. If + * enabled, a log message will be written to printer + * at the beginning and ending of each message dispatch, identifying the + * target Handler and message contents. + * + * @param printer A Printer object that will receive log messages, or + * null to disable message logging. + */ + public void setMessageLogging(Printer printer) { + mLogging = printer; + } + + /** + * Return the {@link MessageQueue} object associated with the current + * thread. This must be called from a thread running a Looper, or a + * NullPointerException will be thrown. + */ + public static MessageQueue myQueue() { + return myLooper().mQueue; + } + + private Looper(boolean quitAllowed) { + mQueue = new MessageQueue(quitAllowed); + mThread = Thread.currentThread(); + } + + /** + * Returns true if the current thread is this looper's thread. + * @hide + */ + public boolean isCurrentThread() { + return Thread.currentThread() == mThread; + } + + /** + * Quits the looper. + *

+ * Causes the {@link #loop} method to terminate without processing any + * more messages in the message queue. + *

+ * Any attempt to post messages to the queue after the looper is asked to quit will fail. + * For example, the {@link Handler#sendMessage(Message)} method will return false. + *

+ * Using this method may be unsafe because some messages may not be delivered + * before the looper terminates. Consider using {@link #quitSafely} instead to ensure + * that all pending work is completed in an orderly manner. + *

+ * + * @see #quitSafely + */ + public void quit() { + mQueue.quit(false); + } + + /** + * Quits the looper safely. + *

+ * Causes the {@link #loop} method to terminate as soon as all remaining messages + * in the message queue that are already due to be delivered have been handled. + * However pending delayed messages with due times in the future will not be + * delivered before the loop terminates. + *

+ * Any attempt to post messages to the queue after the looper is asked to quit will fail. + * For example, the {@link Handler#sendMessage(Message)} method will return false. + *

+ */ + public void quitSafely() { + mQueue.quit(true); + } + + /** + * Posts a synchronization barrier to the Looper's message queue. + * + * Message processing occurs as usual until the message queue encounters the + * synchronization barrier that has been posted. When the barrier is encountered, + * later synchronous messages in the queue are stalled (prevented from being executed) + * until the barrier is released by calling {@link #removeSyncBarrier} and specifying + * the token that identifies the synchronization barrier. + * + * This method is used to immediately postpone execution of all subsequently posted + * synchronous messages until a condition is met that releases the barrier. + * Asynchronous messages (see {@link Message#isAsynchronous} are exempt from the barrier + * and continue to be processed as usual. + * + * This call must be always matched by a call to {@link #removeSyncBarrier} with + * the same token to ensure that the message queue resumes normal operation. + * Otherwise the application will probably hang! + * + * @return A token that uniquely identifies the barrier. This token must be + * passed to {@link #removeSyncBarrier} to release the barrier. + * + * @hide + */ + public int postSyncBarrier() { + return mQueue.enqueueSyncBarrier(SystemClock.uptimeMillis()); + } + + + /** + * Removes a synchronization barrier. + * + * @param token The synchronization barrier token that was returned by + * {@link #postSyncBarrier}. + * + * @throws IllegalStateException if the barrier was not found. + * + * @hide + */ + public void removeSyncBarrier(int token) { + mQueue.removeSyncBarrier(token); + } + + /** + * Return the Thread associated with this Looper. + */ + public Thread getThread() { + return mThread; + } + + /** @hide */ + public MessageQueue getQueue() { + return mQueue; + } + + /** + * Return whether this looper's thread is currently idle, waiting for new work + * to do. This is intrinsically racy, since its state can change before you get + * the result back. + * @hide + */ + public boolean isIdling() { + return mQueue.isIdling(); + } + + public void dump(Printer pw, String prefix) { + pw.println(prefix + toString()); + mQueue.dump(pw, prefix + " "); + } + + public String toString() { + return "Looper (" + mThread.getName() + ", tid " + mThread.getId() + + ") {" + Integer.toHexString(System.identityHashCode(this)) + "}"; + } +} diff --git a/src/api-impl/android/os/MemoryFile.java b/src/api-impl/android/os/MemoryFile.java new file mode 100644 index 00000000..e8148f7e --- /dev/null +++ b/src/api-impl/android/os/MemoryFile.java @@ -0,0 +1,345 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.Log; + +import java.io.FileDescriptor; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + + +/** + * MemoryFile is a wrapper for the Linux ashmem driver. + * MemoryFiles are backed by shared memory, which can be optionally + * set to be purgeable. + * Purgeable files may have their contents reclaimed by the kernel + * in low memory conditions (only if allowPurging is set to true). + * After a file is purged, attempts to read or write the file will + * cause an IOException to be thrown. + */ +public class MemoryFile +{ + private static String TAG = "MemoryFile"; + + // mmap(2) protection flags from + private static final int PROT_READ = 0x1; + private static final int PROT_WRITE = 0x2; + + private static native FileDescriptor native_open(String name, int length) throws IOException; + // returns memory address for ashmem region + private static native int native_mmap(FileDescriptor fd, int length, int mode) + throws IOException; + private static native void native_munmap(int addr, int length) throws IOException; + private static native void native_close(FileDescriptor fd); + private static native int native_read(FileDescriptor fd, int address, byte[] buffer, + int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException; + private static native void native_write(FileDescriptor fd, int address, byte[] buffer, + int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException; + private static native void native_pin(FileDescriptor fd, boolean pin) throws IOException; + private static native int native_get_size(FileDescriptor fd) throws IOException; + + private FileDescriptor mFD; // ashmem file descriptor + private int mAddress; // address of ashmem memory + private int mLength; // total length of our ashmem region + private boolean mAllowPurging = false; // true if our ashmem region is unpinned + + /** + * Allocates a new ashmem region. The region is initially not purgable. + * + * @param name optional name for the file (can be null). + * @param length of the memory file in bytes. + * @throws IOException if the memory file could not be created. + */ + public MemoryFile(String name, int length) throws IOException { + mLength = length; + mFD = native_open(name, length); + if (length > 0) { + mAddress = native_mmap(mFD, length, PROT_READ | PROT_WRITE); + } else { + mAddress = 0; + } + } + + /** + * Closes the memory file. If there are no other open references to the memory + * file, it will be deleted. + */ + public void close() { + deactivate(); + if (!isClosed()) { + native_close(mFD); + } + } + + /** + * Unmaps the memory file from the process's memory space, but does not close it. + * After this method has been called, read and write operations through this object + * will fail, but {@link #getFileDescriptor()} will still return a valid file descriptor. + * + * @hide + */ + void deactivate() { + if (!isDeactivated()) { + try { + native_munmap(mAddress, mLength); + mAddress = 0; + } catch (IOException ex) { + Log.e(TAG, ex.toString()); + } + } + } + + /** + * Checks whether the memory file has been deactivated. + */ + private boolean isDeactivated() { + return mAddress == 0; + } + + /** + * Checks whether the memory file has been closed. + */ + private boolean isClosed() { + return !mFD.valid(); + } + + @Override + protected void finalize() { + if (!isClosed()) { + Log.e(TAG, "MemoryFile.finalize() called while ashmem still open"); + close(); + } + } + + /** + * Returns the length of the memory file. + * + * @return file length. + */ + public int length() { + return mLength; + } + + /** + * Is memory file purging enabled? + * + * @return true if the file may be purged. + */ + public boolean isPurgingAllowed() { + return mAllowPurging; + } + + /** + * Enables or disables purging of the memory file. + * + * @param allowPurging true if the operating system can purge the contents + * of the file in low memory situations + * @return previous value of allowPurging + */ + synchronized public boolean allowPurging(boolean allowPurging) throws IOException { + boolean oldValue = mAllowPurging; + if (oldValue != allowPurging) { + native_pin(mFD, !allowPurging); + mAllowPurging = allowPurging; + } + return oldValue; + } + + /** + * Creates a new InputStream for reading from the memory file. + * + @return InputStream + */ + public InputStream getInputStream() { + return new MemoryInputStream(); + } + + /** + * Creates a new OutputStream for writing to the memory file. + * + @return OutputStream + */ + public OutputStream getOutputStream() { + return new MemoryOutputStream(); + } + + /** + * Reads bytes from the memory file. + * Will throw an IOException if the file has been purged. + * + * @param buffer byte array to read bytes into. + * @param srcOffset offset into the memory file to read from. + * @param destOffset offset into the byte array buffer to read into. + * @param count number of bytes to read. + * @return number of bytes read. + * @throws IOException if the memory file has been purged or deactivated. + */ + public int readBytes(byte[] buffer, int srcOffset, int destOffset, int count) + throws IOException { + if (isDeactivated()) { + throw new IOException("Can't read from deactivated memory file."); + } + if (destOffset < 0 || destOffset > buffer.length || count < 0 + || count > buffer.length - destOffset + || srcOffset < 0 || srcOffset > mLength + || count > mLength - srcOffset) { + throw new IndexOutOfBoundsException(); + } + return native_read(mFD, mAddress, buffer, srcOffset, destOffset, count, mAllowPurging); + } + + /** + * Write bytes to the memory file. + * Will throw an IOException if the file has been purged. + * + * @param buffer byte array to write bytes from. + * @param srcOffset offset into the byte array buffer to write from. + * @param destOffset offset into the memory file to write to. + * @param count number of bytes to write. + * @throws IOException if the memory file has been purged or deactivated. + */ + public void writeBytes(byte[] buffer, int srcOffset, int destOffset, int count) + throws IOException { + if (isDeactivated()) { + throw new IOException("Can't write to deactivated memory file."); + } + if (srcOffset < 0 || srcOffset > buffer.length || count < 0 + || count > buffer.length - srcOffset + || destOffset < 0 || destOffset > mLength + || count > mLength - destOffset) { + throw new IndexOutOfBoundsException(); + } + native_write(mFD, mAddress, buffer, srcOffset, destOffset, count, mAllowPurging); + } + + /** + * Gets a FileDescriptor for the memory file. + * + * The returned file descriptor is not duplicated. + * + * @throws IOException If the memory file has been closed. + * + * @hide + */ + public FileDescriptor getFileDescriptor() throws IOException { + return mFD; + } + + /** + * Returns the size of the memory file that the file descriptor refers to, + * or -1 if the file descriptor does not refer to a memory file. + * + * @throws IOException If fd is not a valid file descriptor. + * + * @hide + */ + public static int getSize(FileDescriptor fd) throws IOException { + return native_get_size(fd); + } + + private class MemoryInputStream extends InputStream { + + private int mMark = 0; + private int mOffset = 0; + private byte[] mSingleByte; + + @Override + public int available() throws IOException { + if (mOffset >= mLength) { + return 0; + } + return mLength - mOffset; + } + + @Override + public boolean markSupported() { + return true; + } + + @Override + public void mark(int readlimit) { + mMark = mOffset; + } + + @Override + public void reset() throws IOException { + mOffset = mMark; + } + + @Override + public int read() throws IOException { + if (mSingleByte == null) { + mSingleByte = new byte[1]; + } + int result = read(mSingleByte, 0, 1); + if (result != 1) { + return -1; + } + return mSingleByte[0]; + } + + @Override + public int read(byte buffer[], int offset, int count) throws IOException { + if (offset < 0 || count < 0 || offset + count > buffer.length) { + // readBytes() also does this check, but we need to do it before + // changing count. + throw new IndexOutOfBoundsException(); + } + count = Math.min(count, available()); + if (count < 1) { + return -1; + } + int result = readBytes(buffer, mOffset, offset, count); + if (result > 0) { + mOffset += result; + } + return result; + } + + @Override + public long skip(long n) throws IOException { + if (mOffset + n > mLength) { + n = mLength - mOffset; + } + mOffset += n; + return n; + } + } + + private class MemoryOutputStream extends OutputStream { + + private int mOffset = 0; + private byte[] mSingleByte; + + @Override + public void write(byte buffer[], int offset, int count) throws IOException { + writeBytes(buffer, offset, mOffset, count); + mOffset += count; + } + + @Override + public void write(int oneByte) throws IOException { + if (mSingleByte == null) { + mSingleByte = new byte[1]; + } + mSingleByte[0] = (byte)oneByte; + write(mSingleByte, 0, 1); + } + } +} diff --git a/src/api-impl/android/os/Message.java b/src/api-impl/android/os/Message.java new file mode 100644 index 00000000..0e216ba3 --- /dev/null +++ b/src/api-impl/android/os/Message.java @@ -0,0 +1,479 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +/** + * + * Defines a message containing a description and arbitrary data object that can be + * sent to a {@link Handler}. This object contains two extra int fields and an + * extra object field that allow you to not do allocations in many cases. + * + *

While the constructor of Message is public, the best way to get + * one of these is to call {@link #obtain Message.obtain()} or one of the + * {@link Handler#obtainMessage Handler.obtainMessage()} methods, which will pull + * them from a pool of recycled objects.

+ */ +public final class Message { + /** + * User-defined message code so that the recipient can identify + * what this message is about. Each {@link Handler} has its own name-space + * for message codes, so you do not need to worry about yours conflicting + * with other handlers. + */ + public int what; + + /** + * arg1 and arg2 are lower-cost alternatives to using + * {@link #setData(Bundle) setData()} if you only need to store a + * few integer values. + */ + public int arg1; + + /** + * arg1 and arg2 are lower-cost alternatives to using + * {@link #setData(Bundle) setData()} if you only need to store a + * few integer values. + */ + public int arg2; + + /** + * An arbitrary object to send to the recipient. When using + * {@link Messenger} to send the message across processes this can only + * be non-null if it contains a Parcelable of a framework class (not one + * implemented by the application). For other data transfer use + * {@link #setData}. + * + *

Note that Parcelable objects here are not supported prior to + * the {@link android.os.Build.VERSION_CODES#FROYO} release. + */ + public Object obj; + + /** + * Optional Messenger where replies to this message can be sent. The + * semantics of exactly how this is used are up to the sender and + * receiver. + */ + public Messenger replyTo; + + /** If set message is in use */ + /*package*/ static final int FLAG_IN_USE = 1 << 0; + + /** If set message is asynchronous */ + /*package*/ static final int FLAG_ASYNCHRONOUS = 1 << 1; + + /** Flags to clear in the copyFrom method */ + /*package*/ static final int FLAGS_TO_CLEAR_ON_COPY_FROM = FLAG_IN_USE; + + /*package*/ int flags; + + /*package*/ long when; + + /*package*/ Bundle data; + + /*package*/ Handler target; + + /*package*/ Runnable callback; + + // sometimes we store linked lists of these things + /*package*/ Message next; + + private static final Object sPoolSync = new Object(); + private static Message sPool; + private static int sPoolSize = 0; + + private static final int MAX_POOL_SIZE = 50; + + /** + * Return a new Message instance from the global pool. Allows us to + * avoid allocating new objects in many cases. + */ + public static Message obtain() { + synchronized (sPoolSync) { + if (sPool != null) { + Message m = sPool; + sPool = m.next; + m.next = null; + sPoolSize--; + return m; + } + } + return new Message(); + } + + /** + * Same as {@link #obtain()}, but copies the values of an existing + * message (including its target) into the new one. + * @param orig Original message to copy. + * @return A Message object from the global pool. + */ + public static Message obtain(Message orig) { + Message m = obtain(); + m.what = orig.what; + m.arg1 = orig.arg1; + m.arg2 = orig.arg2; + m.obj = orig.obj; + m.replyTo = orig.replyTo; + if (orig.data != null) { + m.data = new Bundle(orig.data); + } + m.target = orig.target; + m.callback = orig.callback; + + return m; + } + + /** + * Same as {@link #obtain()}, but sets the value for the target member on the Message returned. + * @param h Handler to assign to the returned Message object's target member. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h) { + Message m = obtain(); + m.target = h; + + return m; + } + + /** + * Same as {@link #obtain(Handler)}, but assigns a callback Runnable on + * the Message that is returned. + * @param h Handler to assign to the returned Message object's target member. + * @param callback Runnable that will execute when the message is handled. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h, Runnable callback) { + Message m = obtain(); + m.target = h; + m.callback = callback; + + return m; + } + + /** + * Same as {@link #obtain()}, but sets the values for both target and + * what members on the Message. + * @param h Value to assign to the target member. + * @param what Value to assign to the what member. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h, int what) { + Message m = obtain(); + m.target = h; + m.what = what; + + return m; + } + + /** + * Same as {@link #obtain()}, but sets the values of the target, what, and obj + * members. + * @param h The target value to set. + * @param what The what value to set. + * @param obj The object method to set. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h, int what, Object obj) { + Message m = obtain(); + m.target = h; + m.what = what; + m.obj = obj; + + return m; + } + + /** + * Same as {@link #obtain()}, but sets the values of the target, what, + * arg1, and arg2 members. + * + * @param h The target value to set. + * @param what The what value to set. + * @param arg1 The arg1 value to set. + * @param arg2 The arg2 value to set. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h, int what, int arg1, int arg2) { + Message m = obtain(); + m.target = h; + m.what = what; + m.arg1 = arg1; + m.arg2 = arg2; + + return m; + } + + /** + * Same as {@link #obtain()}, but sets the values of the target, what, + * arg1, arg2, and obj members. + * + * @param h The target value to set. + * @param what The what value to set. + * @param arg1 The arg1 value to set. + * @param arg2 The arg2 value to set. + * @param obj The obj value to set. + * @return A Message object from the global pool. + */ + public static Message obtain(Handler h, int what, + int arg1, int arg2, Object obj) { + Message m = obtain(); + m.target = h; + m.what = what; + m.arg1 = arg1; + m.arg2 = arg2; + m.obj = obj; + + return m; + } + + /** + * Return a Message instance to the global pool. You MUST NOT touch + * the Message after calling this function -- it has effectively been + * freed. + */ + public void recycle() { + clearForRecycle(); + + synchronized (sPoolSync) { + if (sPoolSize < MAX_POOL_SIZE) { + next = sPool; + sPool = this; + sPoolSize++; + } + } + } + + /** + * Make this message like o. Performs a shallow copy of the data field. + * Does not copy the linked list fields, nor the timestamp or + * target/callback of the original message. + */ + public void copyFrom(Message o) { + this.flags = o.flags & ~FLAGS_TO_CLEAR_ON_COPY_FROM; + this.what = o.what; + this.arg1 = o.arg1; + this.arg2 = o.arg2; + this.obj = o.obj; + this.replyTo = o.replyTo; + + if (o.data != null) { + this.data = (Bundle) o.data.clone(); + } else { + this.data = null; + } + } + + /** + * Return the targeted delivery time of this message, in milliseconds. + */ + public long getWhen() { + return when; + } + + public void setTarget(Handler target) { + this.target = target; + } + + /** + * Retrieve the a {@link android.os.Handler Handler} implementation that + * will receive this message. The object must implement + * {@link android.os.Handler#handleMessage(android.os.Message) + * Handler.handleMessage()}. Each Handler has its own name-space for + * message codes, so you do not need to + * worry about yours conflicting with other handlers. + */ + public Handler getTarget() { + return target; + } + + /** + * Retrieve callback object that will execute when this message is handled. + * This object must implement Runnable. This is called by + * the target {@link Handler} that is receiving this Message to + * dispatch it. If + * not set, the message will be dispatched to the receiving Handler's + * {@link Handler#handleMessage(Message Handler.handleMessage())}. + */ + public Runnable getCallback() { + return callback; + } + + /** + * Obtains a Bundle of arbitrary data associated with this + * event, lazily creating it if necessary. Set this value by calling + * {@link #setData(Bundle)}. Note that when transferring data across + * processes via {@link Messenger}, you will need to set your ClassLoader + * on the Bundle via {@link Bundle#setClassLoader(ClassLoader) + * Bundle.setClassLoader()} so that it can instantiate your objects when + * you retrieve them. + * @see #peekData() + * @see #setData(Bundle) + */ + public Bundle getData() { + if (data == null) { + data = new Bundle(); + } + + return data; + } + + /** + * Like getData(), but does not lazily create the Bundle. A null + * is returned if the Bundle does not already exist. See + * {@link #getData} for further information on this. + * @see #getData() + * @see #setData(Bundle) + */ + public Bundle peekData() { + return data; + } + + /** + * Sets a Bundle of arbitrary data values. Use arg1 and arg1 members + * as a lower cost way to send a few simple integer values, if you can. + * @see #getData() + * @see #peekData() + */ + public void setData(Bundle data) { + this.data = data; + } + + /** + * Sends this Message to the Handler specified by {@link #getTarget}. + * Throws a null pointer exception if this field has not been set. + */ + public void sendToTarget() { + target.sendMessage(this); + } + + /** + * Returns true if the message is asynchronous. + * + * Asynchronous messages represent interrupts or events that do not require global ordering + * with represent to synchronous messages. Asynchronous messages are not subject to + * the synchronization barriers introduced by {@link MessageQueue#enqueueSyncBarrier(long)}. + * + * @return True if the message is asynchronous. + * + * @see #setAsynchronous(boolean) + * @see MessageQueue#enqueueSyncBarrier(long) + * @see MessageQueue#removeSyncBarrier(int) + * + * @hide + */ + public boolean isAsynchronous() { + return (flags & FLAG_ASYNCHRONOUS) != 0; + } + + /** + * Sets whether the message is asynchronous. + * + * Asynchronous messages represent interrupts or events that do not require global ordering + * with represent to synchronous messages. Asynchronous messages are not subject to + * the synchronization barriers introduced by {@link MessageQueue#enqueueSyncBarrier(long)}. + * + * @param async True if the message is asynchronous. + * + * @see #isAsynchronous() + * @see MessageQueue#enqueueSyncBarrier(long) + * @see MessageQueue#removeSyncBarrier(int) + * + * @hide + */ + public void setAsynchronous(boolean async) { + if (async) { + flags |= FLAG_ASYNCHRONOUS; + } else { + flags &= ~FLAG_ASYNCHRONOUS; + } + } + + /*package*/ void clearForRecycle() { + flags = 0; + what = 0; + arg1 = 0; + arg2 = 0; + obj = null; + replyTo = null; + when = 0; + target = null; + callback = null; + data = null; + } + + /*package*/ boolean isInUse() { + return ((flags & FLAG_IN_USE) == FLAG_IN_USE); + } + + /*package*/ void markInUse() { + flags |= FLAG_IN_USE; + } + + /** Constructor (but the preferred way to get a Message is to call {@link #obtain() Message.obtain()}). + */ + public Message() { + } + + @Override + public String toString() { + return toString(SystemClock.uptimeMillis()); + } + + String toString(long now) { + StringBuilder b = new StringBuilder(); + b.append("{ when="); + b.append(when); + b.append(" - "); + b.append(now); + + if (target != null) { + if (callback != null) { + b.append(" callback="); + b.append(callback.getClass().getName()); + } else { + b.append(" what="); + b.append(what); + } + + if (arg1 != 0) { + b.append(" arg1="); + b.append(arg1); + } + + if (arg2 != 0) { + b.append(" arg2="); + b.append(arg2); + } + + if (obj != null) { + b.append(" obj="); + b.append(obj); + } + + b.append(" target="); + b.append(target.getClass().getName()); + } else { + b.append(" barrier="); + b.append(arg1); + } + + b.append(" }"); + return b.toString(); + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/os/MessageQueue.java b/src/api-impl/android/os/MessageQueue.java new file mode 100644 index 00000000..9eb13a5d --- /dev/null +++ b/src/api-impl/android/os/MessageQueue.java @@ -0,0 +1,559 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.AndroidRuntimeException; +import android.util.Log; +import android.util.Printer; + +import java.util.ArrayList; + +/** + * Low-level class holding the list of messages to be dispatched by a + * {@link Looper}. Messages are not added directly to a MessageQueue, + * but rather through {@link Handler} objects associated with the Looper. + * + *

You can retrieve the MessageQueue for the current thread with + * {@link Looper#myQueue() Looper.myQueue()}. + */ +public final class MessageQueue { + // True if the message queue can be quit. + private final boolean mQuitAllowed; + + @SuppressWarnings("unused") + private int mPtr; // used by native code + + Message mMessages; + private final ArrayList mIdleHandlers = new ArrayList(); + private IdleHandler[] mPendingIdleHandlers; + private boolean mQuitting; + + // Indicates whether next() is blocked waiting in pollOnce() with a non-zero timeout. + private boolean mBlocked; + + // The next barrier token. + // Barriers are indicated by messages with a null target whose arg1 field carries the token. + private int mNextBarrierToken; + + private native static int nativeInit(); + private native static void nativeDestroy(int ptr); + private native static void nativePollOnce(int ptr, int timeoutMillis); + private native static void nativeWake(int ptr); + private native static boolean nativeIsIdling(int ptr); + + /** + * Callback interface for discovering when a thread is going to block + * waiting for more messages. + */ + public static interface IdleHandler { + /** + * Called when the message queue has run out of messages and will now + * wait for more. Return true to keep your idle handler active, false + * to have it removed. This may be called if there are still messages + * pending in the queue, but they are all scheduled to be dispatched + * after the current time. + */ + boolean queueIdle(); + } + + /** + * Add a new {@link IdleHandler} to this message queue. This may be + * removed automatically for you by returning false from + * {@link IdleHandler#queueIdle IdleHandler.queueIdle()} when it is + * invoked, or explicitly removing it with {@link #removeIdleHandler}. + * + *

This method is safe to call from any thread. + * + * @param handler The IdleHandler to be added. + */ + public void addIdleHandler(IdleHandler handler) { + if (handler == null) { + throw new NullPointerException("Can't add a null IdleHandler"); + } + synchronized (this) { + mIdleHandlers.add(handler); + } + } + + /** + * Remove an {@link IdleHandler} from the queue that was previously added + * with {@link #addIdleHandler}. If the given object is not currently + * in the idle list, nothing is done. + * + * @param handler The IdleHandler to be removed. + */ + public void removeIdleHandler(IdleHandler handler) { + synchronized (this) { + mIdleHandlers.remove(handler); + } + } + + MessageQueue(boolean quitAllowed) { + mQuitAllowed = quitAllowed; + mPtr = nativeInit(); + } + + @Override + protected void finalize() throws Throwable { + try { + dispose(); + } finally { + super.finalize(); + } + } + + // Disposes of the underlying message queue. + // Must only be called on the looper thread or the finalizer. + private void dispose() { + if (mPtr != 0) { + nativeDestroy(mPtr); + mPtr = 0; + } + } + + Message next() { + int pendingIdleHandlerCount = -1; // -1 only during first iteration + int nextPollTimeoutMillis = 0; + for (;;) { + if (nextPollTimeoutMillis != 0) { +// Binder.flushPendingCommands(); + } + + // We can assume mPtr != 0 because the loop is obviously still running. + // The looper will not call this method after the loop quits. + nativePollOnce(mPtr, nextPollTimeoutMillis); + + synchronized (this) { + // Try to retrieve the next message. Return if found. + final long now = SystemClock.uptimeMillis(); + Message prevMsg = null; + Message msg = mMessages; + if (msg != null && msg.target == null) { + // Stalled by a barrier. Find the next asynchronous message in the queue. + do { + prevMsg = msg; + msg = msg.next; + } while (msg != null && !msg.isAsynchronous()); + } + if (msg != null) { + if (now < msg.when) { + // Next message is not ready. Set a timeout to wake up when it is ready. + nextPollTimeoutMillis = (int) Math.min(msg.when - now, Integer.MAX_VALUE); + } else { + // Got a message. + mBlocked = false; + if (prevMsg != null) { + prevMsg.next = msg.next; + } else { + mMessages = msg.next; + } + msg.next = null; + if (false) Log.v("MessageQueue", "Returning message: " + msg); + msg.markInUse(); + return msg; + } + } else { + // No more messages. + nextPollTimeoutMillis = -1; + } + + // Process the quit message now that all pending messages have been handled. + if (mQuitting) { + dispose(); + return null; + } + + // If first time idle, then get the number of idlers to run. + // Idle handles only run if the queue is empty or if the first message + // in the queue (possibly a barrier) is due to be handled in the future. + if (pendingIdleHandlerCount < 0 + && (mMessages == null || now < mMessages.when)) { + pendingIdleHandlerCount = mIdleHandlers.size(); + } + if (pendingIdleHandlerCount <= 0) { + // No idle handlers to run. Loop and wait some more. + mBlocked = true; + continue; + } + + if (mPendingIdleHandlers == null) { + mPendingIdleHandlers = new IdleHandler[Math.max(pendingIdleHandlerCount, 4)]; + } + mPendingIdleHandlers = mIdleHandlers.toArray(mPendingIdleHandlers); + } + + // Run the idle handlers. + // We only ever reach this code block during the first iteration. + for (int i = 0; i < pendingIdleHandlerCount; i++) { + final IdleHandler idler = mPendingIdleHandlers[i]; + mPendingIdleHandlers[i] = null; // release the reference to the handler + + boolean keep = false; + try { + keep = idler.queueIdle(); + } catch (Throwable t) { + Log.wtf("MessageQueue", "IdleHandler threw exception", t); + } + + if (!keep) { + synchronized (this) { + mIdleHandlers.remove(idler); + } + } + } + + // Reset the idle handler count to 0 so we do not run them again. + pendingIdleHandlerCount = 0; + + // While calling an idle handler, a new message could have been delivered + // so go back and look again for a pending message without waiting. + nextPollTimeoutMillis = 0; + } + } + + void quit(boolean safe) { + if (!mQuitAllowed) { + throw new RuntimeException("Main thread not allowed to quit."); + } + + synchronized (this) { + if (mQuitting) { + return; + } + mQuitting = true; + + if (safe) { + removeAllFutureMessagesLocked(); + } else { + removeAllMessagesLocked(); + } + + // We can assume mPtr != 0 because mQuitting was previously false. + nativeWake(mPtr); + } + } + + int enqueueSyncBarrier(long when) { + // Enqueue a new sync barrier token. + // We don't need to wake the queue because the purpose of a barrier is to stall it. + synchronized (this) { + final int token = mNextBarrierToken++; + final Message msg = Message.obtain(); + msg.when = when; + msg.arg1 = token; + + Message prev = null; + Message p = mMessages; + if (when != 0) { + while (p != null && p.when <= when) { + prev = p; + p = p.next; + } + } + if (prev != null) { // invariant: p == prev.next + msg.next = p; + prev.next = msg; + } else { + msg.next = p; + mMessages = msg; + } + return token; + } + } + + void removeSyncBarrier(int token) { + // Remove a sync barrier token from the queue. + // If the queue is no longer stalled by a barrier then wake it. + synchronized (this) { + Message prev = null; + Message p = mMessages; + while (p != null && (p.target != null || p.arg1 != token)) { + prev = p; + p = p.next; + } + if (p == null) { + throw new IllegalStateException("The specified message queue synchronization " + + " barrier token has not been posted or has already been removed."); + } + final boolean needWake; + if (prev != null) { + prev.next = p.next; + needWake = false; + } else { + mMessages = p.next; + needWake = mMessages == null || mMessages.target != null; + } + p.recycle(); + + // If the loop is quitting then it is already awake. + // We can assume mPtr != 0 when mQuitting is false. + if (needWake && !mQuitting) { + nativeWake(mPtr); + } + } + } + + boolean enqueueMessage(Message msg, long when) { + if (msg.isInUse()) { + throw new AndroidRuntimeException(msg + " This message is already in use."); + } + if (msg.target == null) { + throw new AndroidRuntimeException("Message must have a target."); + } + + synchronized (this) { + if (mQuitting) { + RuntimeException e = new RuntimeException( + msg.target + " sending message to a Handler on a dead thread"); + Log.w("MessageQueue", e.getMessage(), e); + return false; + } + + msg.when = when; + Message p = mMessages; + boolean needWake; + if (p == null || when == 0 || when < p.when) { + // New head, wake up the event queue if blocked. + msg.next = p; + mMessages = msg; + needWake = mBlocked; + } else { + // Inserted within the middle of the queue. Usually we don't have to wake + // up the event queue unless there is a barrier at the head of the queue + // and the message is the earliest asynchronous message in the queue. + needWake = mBlocked && p.target == null && msg.isAsynchronous(); + Message prev; + for (;;) { + prev = p; + p = p.next; + if (p == null || when < p.when) { + break; + } + if (needWake && p.isAsynchronous()) { + needWake = false; + } + } + msg.next = p; // invariant: p == prev.next + prev.next = msg; + } + + // We can assume mPtr != 0 because mQuitting is false. + if (needWake) { + nativeWake(mPtr); + } + } + return true; + } + + boolean hasMessages(Handler h, int what, Object object) { + if (h == null) { + return false; + } + + synchronized (this) { + Message p = mMessages; + while (p != null) { + if (p.target == h && p.what == what && (object == null || p.obj == object)) { + return true; + } + p = p.next; + } + return false; + } + } + + boolean hasMessages(Handler h, Runnable r, Object object) { + if (h == null) { + return false; + } + + synchronized (this) { + Message p = mMessages; + while (p != null) { + if (p.target == h && p.callback == r && (object == null || p.obj == object)) { + return true; + } + p = p.next; + } + return false; + } + } + + boolean isIdling() { + synchronized (this) { + return isIdlingLocked(); + } + } + + private boolean isIdlingLocked() { + // If the loop is quitting then it must not be idling. + // We can assume mPtr != 0 when mQuitting is false. + return !mQuitting && nativeIsIdling(mPtr); + } + + void removeMessages(Handler h, int what, Object object) { + if (h == null) { + return; + } + + synchronized (this) { + Message p = mMessages; + + // Remove all messages at front. + while (p != null && p.target == h && p.what == what + && (object == null || p.obj == object)) { + Message n = p.next; + mMessages = n; + p.recycle(); + p = n; + } + + // Remove all messages after front. + while (p != null) { + Message n = p.next; + if (n != null) { + if (n.target == h && n.what == what + && (object == null || n.obj == object)) { + Message nn = n.next; + n.recycle(); + p.next = nn; + continue; + } + } + p = n; + } + } + } + + void removeMessages(Handler h, Runnable r, Object object) { + if (h == null || r == null) { + return; + } + + synchronized (this) { + Message p = mMessages; + + // Remove all messages at front. + while (p != null && p.target == h && p.callback == r + && (object == null || p.obj == object)) { + Message n = p.next; + mMessages = n; + p.recycle(); + p = n; + } + + // Remove all messages after front. + while (p != null) { + Message n = p.next; + if (n != null) { + if (n.target == h && n.callback == r + && (object == null || n.obj == object)) { + Message nn = n.next; + n.recycle(); + p.next = nn; + continue; + } + } + p = n; + } + } + } + + void removeCallbacksAndMessages(Handler h, Object object) { + if (h == null) { + return; + } + + synchronized (this) { + Message p = mMessages; + + // Remove all messages at front. + while (p != null && p.target == h + && (object == null || p.obj == object)) { + Message n = p.next; + mMessages = n; + p.recycle(); + p = n; + } + + // Remove all messages after front. + while (p != null) { + Message n = p.next; + if (n != null) { + if (n.target == h && (object == null || n.obj == object)) { + Message nn = n.next; + n.recycle(); + p.next = nn; + continue; + } + } + p = n; + } + } + } + + private void removeAllMessagesLocked() { + Message p = mMessages; + while (p != null) { + Message n = p.next; + p.recycle(); + p = n; + } + mMessages = null; + } + + private void removeAllFutureMessagesLocked() { + final long now = SystemClock.uptimeMillis(); + Message p = mMessages; + if (p != null) { + if (p.when > now) { + removeAllMessagesLocked(); + } else { + Message n; + for (;;) { + n = p.next; + if (n == null) { + return; + } + if (n.when > now) { + break; + } + p = n; + } + p.next = null; + do { + p = n; + n = p.next; + p.recycle(); + } while (n != null); + } + } + } + + void dump(Printer pw, String prefix) { + synchronized (this) { + long now = SystemClock.uptimeMillis(); + int n = 0; + for (Message msg = mMessages; msg != null; msg = msg.next) { + pw.println(prefix + "Message " + n + ": " + msg.toString(now)); + n++; + } + pw.println(prefix + "(Total messages: " + n + ", idling=" + isIdlingLocked() + + ", quitting=" + mQuitting + ")"); + } + } +} diff --git a/src/api-impl/android/os/Messenger.java b/src/api-impl/android/os/Messenger.java new file mode 100644 index 00000000..a6614114 --- /dev/null +++ b/src/api-impl/android/os/Messenger.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +/** + * Reference to a Handler, which others can use to send messages to it. + * This allows for the implementation of message-based communication across + * processes, by creating a Messenger pointing to a Handler in one process, + * and handing that Messenger to another process. + */ +public final class Messenger { + private final IMessenger mTarget; + + /** + * Create a new Messenger pointing to the given Handler. Any Message + * objects sent through this Messenger will appear in the Handler as if + * {@link Handler#sendMessage(Message) Handler.sendMessage(Message)} had + * been called directly. + * + * @param target The Handler that will receive sent messages. + */ + public Messenger(Handler target) { + mTarget = target.getIMessenger(); + } + + /** + * Send a Message to this Messenger's Handler. + * + * @param message The Message to send. Usually retrieved through + * {@link Message#obtain() Message.obtain()}. + * + * @throws RemoteException Throws DeadObjectException if the target + * Handler no longer exists. + */ + public void send(Message message) throws RemoteException { + mTarget.send(message); + } + + /** + * Retrieve the IBinder that this Messenger is using to communicate with + * its associated Handler. + * + * @return Returns the IBinder backing this Messenger. + */ + public IBinder getBinder() { + return null;//mTarget.asBinder(); + } + + /** + * Comparison operator on two Messenger objects, such that true + * is returned then they both point to the same Handler. + */ + public boolean equals(Object otherObj) { + /*if (otherObj == null) { + return false; + } + try { + return mTarget.asBinder().equals(((Messenger)otherObj) + .mTarget.asBinder()); + } catch (ClassCastException e) { + }*/ + return false; + } + + public int hashCode() { + return 0;//mTarget.asBinder().hashCode(); + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/os/ParcelFileDescriptor.java b/src/api-impl/android/os/ParcelFileDescriptor.java new file mode 100644 index 00000000..90da52f1 --- /dev/null +++ b/src/api-impl/android/os/ParcelFileDescriptor.java @@ -0,0 +1,976 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import static android.system.OsConstants.AF_UNIX; +import static android.system.OsConstants.SEEK_SET; +import static android.system.OsConstants.SOCK_STREAM; +import static android.system.OsConstants.S_ISLNK; +import static android.system.OsConstants.S_ISREG; + +//import android.content.BroadcastReceiver; +//import android.content.ContentProvider; +import android.util.Log; + +import dalvik.system.CloseGuard; + +import android.system.ErrnoException; +import libcore.io.IoUtils; +import libcore.io.Libcore; +import libcore.io.Memory; +import android.system.OsConstants; +import android.system.StructStat; + +import java.io.Closeable; +import java.io.File; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.InterruptedIOException; +import java.io.IOException; +import java.net.DatagramSocket; +import java.net.Socket; +import java.nio.ByteOrder; + +/** + * The FileDescriptor returned by {@link Parcel#readFileDescriptor}, allowing + * you to close it when done with it. + */ +public class ParcelFileDescriptor implements Closeable { + private static final String TAG = "ParcelFileDescriptor"; + + private final FileDescriptor mFd; + + /** + * Optional socket used to communicate close events, status at close, and + * detect remote process crashes. + */ + private FileDescriptor mCommFd; + + /** + * Wrapped {@link ParcelFileDescriptor}, if any. Used to avoid + * double-closing {@link #mFd}. + */ + private final ParcelFileDescriptor mWrapped; + + /** + * Maximum {@link #mStatusBuf} size; longer status messages will be + * truncated. + */ + private static final int MAX_STATUS = 1024; + + /** + * Temporary buffer used by {@link #readCommStatus(FileDescriptor, byte[])}, + * allocated on-demand. + */ + private byte[] mStatusBuf; + + /** + * Status read by {@link #checkError()}, or null if not read yet. + */ + private Status mStatus; + + private volatile boolean mClosed; + + private final CloseGuard mGuard = CloseGuard.get(); + + /** + * For use with {@link #open}: if {@link #MODE_CREATE} has been supplied and + * this file doesn't already exist, then create the file with permissions + * such that any application can read it. + * + * @deprecated Creating world-readable files is very dangerous, and likely + * to cause security holes in applications. It is strongly + * discouraged; instead, applications should use more formal + * mechanism for interactions such as {@link ContentProvider}, + * {@link BroadcastReceiver}, and {@link android.app.Service}. + * There are no guarantees that this access mode will remain on + * a file, such as when it goes through a backup and restore. + */ + @Deprecated + public static final int MODE_WORLD_READABLE = 0x00000001; + + /** + * For use with {@link #open}: if {@link #MODE_CREATE} has been supplied and + * this file doesn't already exist, then create the file with permissions + * such that any application can write it. + * + * @deprecated Creating world-writable files is very dangerous, and likely + * to cause security holes in applications. It is strongly + * discouraged; instead, applications should use more formal + * mechanism for interactions such as {@link ContentProvider}, + * {@link BroadcastReceiver}, and {@link android.app.Service}. + * There are no guarantees that this access mode will remain on + * a file, such as when it goes through a backup and restore. + */ + @Deprecated + public static final int MODE_WORLD_WRITEABLE = 0x00000002; + + /** + * For use with {@link #open}: open the file with read-only access. + */ + public static final int MODE_READ_ONLY = 0x10000000; + + /** + * For use with {@link #open}: open the file with write-only access. + */ + public static final int MODE_WRITE_ONLY = 0x20000000; + + /** + * For use with {@link #open}: open the file with read and write access. + */ + public static final int MODE_READ_WRITE = 0x30000000; + + /** + * For use with {@link #open}: create the file if it doesn't already exist. + */ + public static final int MODE_CREATE = 0x08000000; + + /** + * For use with {@link #open}: erase contents of file when opening. + */ + public static final int MODE_TRUNCATE = 0x04000000; + + /** + * For use with {@link #open}: append to end of file while writing. + */ + public static final int MODE_APPEND = 0x02000000; + + /** + * Create a new ParcelFileDescriptor wrapped around another descriptor. By + * default all method calls are delegated to the wrapped descriptor. + */ + public ParcelFileDescriptor(ParcelFileDescriptor wrapped) { + // We keep a strong reference to the wrapped PFD, and rely on its + // finalizer to trigger CloseGuard. All calls are delegated to wrapper. + mWrapped = wrapped; + mFd = null; + mCommFd = null; + mClosed = true; + } + + /** {@hide} */ + public ParcelFileDescriptor(FileDescriptor fd) { + this(fd, null); + } + + /** {@hide} */ + public ParcelFileDescriptor(FileDescriptor fd, FileDescriptor commChannel) { + if (fd == null) { + throw new NullPointerException("FileDescriptor must not be null"); + } + mWrapped = null; + mFd = fd; + mCommFd = commChannel; + mGuard.open("close"); + } + + /** + * Create a new ParcelFileDescriptor accessing a given file. + * + * @param file The file to be opened. + * @param mode The desired access mode, must be one of + * {@link #MODE_READ_ONLY}, {@link #MODE_WRITE_ONLY}, or + * {@link #MODE_READ_WRITE}; may also be any combination of + * {@link #MODE_CREATE}, {@link #MODE_TRUNCATE}, + * {@link #MODE_WORLD_READABLE}, and + * {@link #MODE_WORLD_WRITEABLE}. + * @return a new ParcelFileDescriptor pointing to the given file. + * @throws FileNotFoundException if the given file does not exist or can not + * be opened with the requested mode. + * @see #parseMode(String) + */ + public static ParcelFileDescriptor open(File file, int mode) throws FileNotFoundException { + final FileDescriptor fd = openInternal(file, mode); + if (fd == null) return null; + + return new ParcelFileDescriptor(fd); + } + + /** + * Create a new ParcelFileDescriptor accessing a given file. + * + * @param file The file to be opened. + * @param mode The desired access mode, must be one of + * {@link #MODE_READ_ONLY}, {@link #MODE_WRITE_ONLY}, or + * {@link #MODE_READ_WRITE}; may also be any combination of + * {@link #MODE_CREATE}, {@link #MODE_TRUNCATE}, + * {@link #MODE_WORLD_READABLE}, and + * {@link #MODE_WORLD_WRITEABLE}. + * @param handler to call listener from; must not be null. + * @param listener to be invoked when the returned descriptor has been + * closed; must not be null. + * @return a new ParcelFileDescriptor pointing to the given file. + * @throws FileNotFoundException if the given file does not exist or can not + * be opened with the requested mode. + * @see #parseMode(String) + */ + public static ParcelFileDescriptor open( + File file, int mode, Handler handler, OnCloseListener listener) throws IOException { + if (handler == null) { + throw new IllegalArgumentException("Handler must not be null"); + } + if (listener == null) { + throw new IllegalArgumentException("Listener must not be null"); + } + + final FileDescriptor fd = openInternal(file, mode); + if (fd == null) return null; + + final FileDescriptor[] comm = createCommSocketPair(); + final ParcelFileDescriptor pfd = new ParcelFileDescriptor(fd, comm[0]); + + // Kick off thread to watch for status updates + IoUtils.setBlocking(comm[1], true); + final ListenerBridge bridge = new ListenerBridge(comm[1], handler.getLooper(), listener); + bridge.start(); + + return pfd; + } + + private static FileDescriptor openInternal(File file, int mode) throws FileNotFoundException {/* + if ((mode & MODE_READ_WRITE) == 0) { + throw new IllegalArgumentException( + "Must specify MODE_READ_ONLY, MODE_WRITE_ONLY, or MODE_READ_WRITE"); + } + + final String path = file.getPath(); + return Parcel.openFileDescriptor(path, mode);*/return null; + } + + /** + * Create a new ParcelFileDescriptor that is a dup of an existing + * FileDescriptor. This obeys standard POSIX semantics, where the + * new file descriptor shared state such as file position with the + * original file descriptor. + */ + public static ParcelFileDescriptor dup(FileDescriptor orig) throws IOException { + try { + final FileDescriptor fd = android.system.Os.dup(orig); + return new ParcelFileDescriptor(fd); + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * Create a new ParcelFileDescriptor that is a dup of the existing + * FileDescriptor. This obeys standard POSIX semantics, where the + * new file descriptor shared state such as file position with the + * original file descriptor. + */ + public ParcelFileDescriptor dup() throws IOException { + if (mWrapped != null) { + return mWrapped.dup(); + } else { + return dup(getFileDescriptor()); + } + } + + /** + * Create a new ParcelFileDescriptor from a raw native fd. The new + * ParcelFileDescriptor holds a dup of the original fd passed in here, + * so you must still close that fd as well as the new ParcelFileDescriptor. + * + * @param fd The native fd that the ParcelFileDescriptor should dup. + * + * @return Returns a new ParcelFileDescriptor holding a FileDescriptor + * for a dup of the given fd. + */ + public static ParcelFileDescriptor fromFd(int fd) throws IOException { + final FileDescriptor original = new FileDescriptor(); + original.setInt$(fd); + + try { + final FileDescriptor dup = android.system.Os.dup(original); + return new ParcelFileDescriptor(dup); + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * Take ownership of a raw native fd in to a new ParcelFileDescriptor. + * The returned ParcelFileDescriptor now owns the given fd, and will be + * responsible for closing it. You must not close the fd yourself. + * + * @param fd The native fd that the ParcelFileDescriptor should adopt. + * + * @return Returns a new ParcelFileDescriptor holding a FileDescriptor + * for the given fd. + */ + public static ParcelFileDescriptor adoptFd(int fd) { + final FileDescriptor fdesc = new FileDescriptor(); + fdesc.setInt$(fd); + + return new ParcelFileDescriptor(fdesc); + } + + /** + * Create a new ParcelFileDescriptor from the specified Socket. The new + * ParcelFileDescriptor holds a dup of the original FileDescriptor in + * the Socket, so you must still close the Socket as well as the new + * ParcelFileDescriptor. + * + * @param socket The Socket whose FileDescriptor is used to create + * a new ParcelFileDescriptor. + * + * @return A new ParcelFileDescriptor with the FileDescriptor of the + * specified Socket. + */ + public static ParcelFileDescriptor fromSocket(Socket socket) { + FileDescriptor fd = socket.getFileDescriptor$(); + return fd != null ? new ParcelFileDescriptor(fd) : null; + } + + /** + * Create a new ParcelFileDescriptor from the specified DatagramSocket. + * + * @param datagramSocket The DatagramSocket whose FileDescriptor is used + * to create a new ParcelFileDescriptor. + * + * @return A new ParcelFileDescriptor with the FileDescriptor of the + * specified DatagramSocket. + */ + public static ParcelFileDescriptor fromDatagramSocket(DatagramSocket datagramSocket) { + FileDescriptor fd = datagramSocket.getFileDescriptor$(); + return fd != null ? new ParcelFileDescriptor(fd) : null; + } + + /** + * Create two ParcelFileDescriptors structured as a data pipe. The first + * ParcelFileDescriptor in the returned array is the read side; the second + * is the write side. + */ + public static ParcelFileDescriptor[] createPipe() throws IOException { + try { + final FileDescriptor[] fds = android.system.Os.pipe(); + return new ParcelFileDescriptor[] { + new ParcelFileDescriptor(fds[0]), + new ParcelFileDescriptor(fds[1]) }; + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * Create two ParcelFileDescriptors structured as a data pipe. The first + * ParcelFileDescriptor in the returned array is the read side; the second + * is the write side. + *

+ * The write end has the ability to deliver an error message through + * {@link #closeWithError(String)} which can be handled by the read end + * calling {@link #checkError()}, usually after detecting an EOF. + * This can also be used to detect remote crashes. + */ + public static ParcelFileDescriptor[] createReliablePipe() throws IOException { + try { + final FileDescriptor[] comm = createCommSocketPair(); + final FileDescriptor[] fds = android.system.Os.pipe(); + return new ParcelFileDescriptor[] { + new ParcelFileDescriptor(fds[0], comm[0]), + new ParcelFileDescriptor(fds[1], comm[1]) }; + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * Create two ParcelFileDescriptors structured as a pair of sockets + * connected to each other. The two sockets are indistinguishable. + */ + public static ParcelFileDescriptor[] createSocketPair() throws IOException { + try { + final FileDescriptor fd0 = new FileDescriptor(); + final FileDescriptor fd1 = new FileDescriptor(); + android.system.Os.socketpair(AF_UNIX, SOCK_STREAM, 0, fd0, fd1); + return new ParcelFileDescriptor[] { + new ParcelFileDescriptor(fd0), + new ParcelFileDescriptor(fd1) }; + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * Create two ParcelFileDescriptors structured as a pair of sockets + * connected to each other. The two sockets are indistinguishable. + *

+ * Both ends have the ability to deliver an error message through + * {@link #closeWithError(String)} which can be detected by the other end + * calling {@link #checkError()}, usually after detecting an EOF. + * This can also be used to detect remote crashes. + */ + public static ParcelFileDescriptor[] createReliableSocketPair() throws IOException { + try { + final FileDescriptor[] comm = createCommSocketPair(); + final FileDescriptor fd0 = new FileDescriptor(); + final FileDescriptor fd1 = new FileDescriptor(); + android.system.Os.socketpair(AF_UNIX, SOCK_STREAM, 0, fd0, fd1); + return new ParcelFileDescriptor[] { + new ParcelFileDescriptor(fd0, comm[0]), + new ParcelFileDescriptor(fd1, comm[1]) }; + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + private static FileDescriptor[] createCommSocketPair() throws IOException { + try { + final FileDescriptor comm1 = new FileDescriptor(); + final FileDescriptor comm2 = new FileDescriptor(); + android.system.Os.socketpair(AF_UNIX, SOCK_STREAM, 0, comm1, comm2); + IoUtils.setBlocking(comm1, false); + IoUtils.setBlocking(comm2, false); + return new FileDescriptor[] { comm1, comm2 }; + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + + /** + * @hide Please use createPipe() or ContentProvider.openPipeHelper(). + * Gets a file descriptor for a read-only copy of the given data. + * + * @param data Data to copy. + * @param name Name for the shared memory area that may back the file descriptor. + * This is purely informative and may be {@code null}. + * @return A ParcelFileDescriptor. + * @throws IOException if there is an error while creating the shared memory area. + */ + @Deprecated + public static ParcelFileDescriptor fromData(byte[] data, String name) throws IOException { + if (data == null) return null; + MemoryFile file = new MemoryFile(name, data.length); + if (data.length > 0) { + file.writeBytes(data, 0, 0, data.length); + } + file.deactivate(); + FileDescriptor fd = file.getFileDescriptor(); + return fd != null ? new ParcelFileDescriptor(fd) : null; + } + + /** + * Converts a string representing a file mode, such as "rw", into a bitmask suitable for use + * with {@link #open}. + *

+ * @param mode The string representation of the file mode. + * @return A bitmask representing the given file mode. + * @throws IllegalArgumentException if the given string does not match a known file mode. + */ + public static int parseMode(String mode) { + final int modeBits; + if ("r".equals(mode)) { + modeBits = ParcelFileDescriptor.MODE_READ_ONLY; + } else if ("w".equals(mode) || "wt".equals(mode)) { + modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY + | ParcelFileDescriptor.MODE_CREATE + | ParcelFileDescriptor.MODE_TRUNCATE; + } else if ("wa".equals(mode)) { + modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY + | ParcelFileDescriptor.MODE_CREATE + | ParcelFileDescriptor.MODE_APPEND; + } else if ("rw".equals(mode)) { + modeBits = ParcelFileDescriptor.MODE_READ_WRITE + | ParcelFileDescriptor.MODE_CREATE; + } else if ("rwt".equals(mode)) { + modeBits = ParcelFileDescriptor.MODE_READ_WRITE + | ParcelFileDescriptor.MODE_CREATE + | ParcelFileDescriptor.MODE_TRUNCATE; + } else { + throw new IllegalArgumentException("Bad mode '" + mode + "'"); + } + return modeBits; + } + + /** + * Retrieve the actual FileDescriptor associated with this object. + * + * @return Returns the FileDescriptor associated with this object. + */ + public FileDescriptor getFileDescriptor() { + if (mWrapped != null) { + return mWrapped.getFileDescriptor(); + } else { + return mFd; + } + } + + /** + * Return the total size of the file representing this fd, as determined by + * {@code stat()}. Returns -1 if the fd is not a file. + */ + public long getStatSize() { + if (mWrapped != null) { + return mWrapped.getStatSize(); + } else { + try { + final StructStat st = android.system.Os.fstat(mFd); + if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) { + return st.st_size; + } else { + return -1; + } + } catch (ErrnoException e) { + Log.w(TAG, "fstat() failed: " + e); + return -1; + } + } + } + + /** + * This is needed for implementing AssetFileDescriptor.AutoCloseOutputStream, + * and I really don't think we want it to be public. + * @hide + */ + public long seekTo(long pos) throws IOException { + if (mWrapped != null) { + return mWrapped.seekTo(pos); + } else { + try { + return android.system.Os.lseek(mFd, pos, SEEK_SET); + } catch (ErrnoException e) { + throw e.rethrowAsIOException(); + } + } + } + + /** + * Return the native fd int for this ParcelFileDescriptor. The + * ParcelFileDescriptor still owns the fd, and it still must be closed + * through this API. + */ + public int getFd() { + if (mWrapped != null) { + return mWrapped.getFd(); + } else { + if (mClosed) { + throw new IllegalStateException("Already closed"); + } + return mFd.getInt$(); + } + } + + /** + * Return the native fd int for this ParcelFileDescriptor and detach it from + * the object here. You are now responsible for closing the fd in native + * code. + *

+ * You should not detach when the original creator of the descriptor is + * expecting a reliable signal through {@link #close()} or + * {@link #closeWithError(String)}. + * + * @see #canDetectErrors() + */ + public int detachFd() {/* + if (mWrapped != null) { + return mWrapped.detachFd(); + } else { + if (mClosed) { + throw new IllegalStateException("Already closed"); + } + final int fd = getFd(); + Parcel.clearFileDescriptor(mFd); + writeCommStatusAndClose(Status.DETACHED, null); + return fd; + }*/return -1; + } + + /** + * Close the ParcelFileDescriptor. This implementation closes the underlying + * OS resources allocated to represent this stream. + * + * @throws IOException + * If an error occurs attempting to close this ParcelFileDescriptor. + */ + @Override + public void close() throws IOException { + if (mWrapped != null) { + try { + mWrapped.close(); + } finally { + releaseResources(); + } + } else { + closeWithStatus(Status.OK, null); + } + } + + /** + * Close the ParcelFileDescriptor, informing any peer that an error occurred + * while processing. If the creator of this descriptor is not observing + * errors, it will close normally. + * + * @param msg describing the error; must not be null. + */ + public void closeWithError(String msg) throws IOException { + if (mWrapped != null) { + try { + mWrapped.closeWithError(msg); + } finally { + releaseResources(); + } + } else { + if (msg == null) { + throw new IllegalArgumentException("Message must not be null"); + } + closeWithStatus(Status.ERROR, msg); + } + } + + private void closeWithStatus(int status, String msg) { + if (mClosed) return; + mClosed = true; + mGuard.close(); + // Status MUST be sent before closing actual descriptor + writeCommStatusAndClose(status, msg); + IoUtils.closeQuietly(mFd); + releaseResources(); + } + + /** + * Called when the fd is being closed, for subclasses to release any other resources + * associated with it, such as acquired providers. + * @hide + */ + public void releaseResources() { + } + + private byte[] getOrCreateStatusBuffer() { + if (mStatusBuf == null) { + mStatusBuf = new byte[MAX_STATUS]; + } + return mStatusBuf; + } + + private void writeCommStatusAndClose(int status, String msg) { + if (mCommFd == null) { + // Not reliable, or someone already sent status + if (msg != null) { + Log.w(TAG, "Unable to inform peer: " + msg); + } + return; + } + + if (status == Status.DETACHED) { + Log.w(TAG, "Peer expected signal when closed; unable to deliver after detach"); + } + + try { + if (status == Status.SILENCE) return; + + // Since we're about to close, read off any remote status. It's + // okay to remember missing here. + mStatus = readCommStatus(mCommFd, getOrCreateStatusBuffer()); + + // Skip writing status when other end has already gone away. + if (mStatus != null) return; + + try { + final byte[] buf = getOrCreateStatusBuffer(); + int writePtr = 0; + + Memory.pokeInt(buf, writePtr, status, ByteOrder.BIG_ENDIAN); + writePtr += 4; + + if (msg != null) { + final byte[] rawMsg = msg.getBytes(); + final int len = Math.min(rawMsg.length, buf.length - writePtr); + System.arraycopy(rawMsg, 0, buf, writePtr, len); + writePtr += len; + } + + android.system.Os.write(mCommFd, buf, 0, writePtr); + } catch (ErrnoException | InterruptedIOException e) { + // Reporting status is best-effort + Log.w(TAG, "Failed to report status: " + e); + } + + } finally { + IoUtils.closeQuietly(mCommFd); + mCommFd = null; + } + } + + private static Status readCommStatus(FileDescriptor comm, byte[] buf) { + try { + final int n = android.system.Os.read(comm, buf, 0, buf.length); + if (n == 0) { + // EOF means they're dead + return new Status(Status.DEAD); + } else { + final int status = Memory.peekInt(buf, 0, ByteOrder.BIG_ENDIAN); + if (status == Status.ERROR) { + final String msg = new String(buf, 4, n - 4); + return new Status(status, msg); + } + return new Status(status); + } + } catch (ErrnoException e) { + if (e.errno == OsConstants.EAGAIN) { + // Remote is still alive, but no status written yet + return null; + } else { + Log.d(TAG, "Failed to read status; assuming dead: " + e); + return new Status(Status.DEAD); + } + } catch (InterruptedIOException e) { + Log.d(TAG, "Failed to read status; assuming dead: " + e); + return new Status(Status.DEAD); + } + } + + /** + * Indicates if this ParcelFileDescriptor can communicate and detect remote + * errors/crashes. + * + * @see #checkError() + */ + public boolean canDetectErrors() { + if (mWrapped != null) { + return mWrapped.canDetectErrors(); + } else { + return mCommFd != null; + } + } + + /** + * Detect and throw if the other end of a pipe or socket pair encountered an + * error or crashed. This allows a reader to distinguish between a valid EOF + * and an error/crash. + *

+ * If this ParcelFileDescriptor is unable to detect remote errors, it will + * return silently. + * + * @throws IOException for normal errors. + * @throws FileDescriptorDetachedException + * if the remote side called {@link #detachFd()}. Once detached, the remote + * side is unable to communicate any errors through + * {@link #closeWithError(String)}. + * @see #canDetectErrors() + */ + public void checkError() throws IOException { + if (mWrapped != null) { + mWrapped.checkError(); + } else { + if (mStatus == null) { + if (mCommFd == null) { + Log.w(TAG, "Peer didn't provide a comm channel; unable to check for errors"); + return; + } + + // Try reading status; it might be null if nothing written yet. + // Either way, we keep comm open to write our status later. + mStatus = readCommStatus(mCommFd, getOrCreateStatusBuffer()); + } + + if (mStatus == null || mStatus.status == Status.OK) { + // No status yet, or everything is peachy! + return; + } else { + throw mStatus.asIOException(); + } + } + } + + /** + * An InputStream you can create on a ParcelFileDescriptor, which will + * take care of calling {@link ParcelFileDescriptor#close + * ParcelFileDescriptor.close()} for you when the stream is closed. + */ + public static class AutoCloseInputStream extends FileInputStream { + private final ParcelFileDescriptor mPfd; + + public AutoCloseInputStream(ParcelFileDescriptor pfd) { + super(pfd.getFileDescriptor()); + mPfd = pfd; + } + + @Override + public void close() throws IOException { + try { + mPfd.close(); + } finally { + super.close(); + } + } + } + + /** + * An OutputStream you can create on a ParcelFileDescriptor, which will + * take care of calling {@link ParcelFileDescriptor#close + * ParcelFileDescriptor.close()} for you when the stream is closed. + */ + public static class AutoCloseOutputStream extends FileOutputStream { + private final ParcelFileDescriptor mPfd; + + public AutoCloseOutputStream(ParcelFileDescriptor pfd) { + super(pfd.getFileDescriptor()); + mPfd = pfd; + } + + @Override + public void close() throws IOException { + try { + mPfd.close(); + } finally { + super.close(); + } + } + } + + @Override + public String toString() { + if (mWrapped != null) { + return mWrapped.toString(); + } else { + return "{ParcelFileDescriptor: " + mFd + "}"; + } + } + + @Override + protected void finalize() throws Throwable { + if (mWrapped != null) { + releaseResources(); + } + if (mGuard != null) { + mGuard.warnIfOpen(); + } + try { + if (!mClosed) { + closeWithStatus(Status.LEAKED, null); + } + } finally { + super.finalize(); + } + } + + /** + * Callback indicating that a ParcelFileDescriptor has been closed. + */ + public interface OnCloseListener { + /** + * Event indicating the ParcelFileDescriptor to which this listener was + * attached has been closed. + * + * @param e error state, or {@code null} if closed cleanly. + * If the close event was the result of + * {@link ParcelFileDescriptor#detachFd()}, this will be a + * {@link FileDescriptorDetachedException}. After detach the + * remote side may continue reading/writing to the underlying + * {@link FileDescriptor}, but they can no longer deliver + * reliable close/error events. + */ + public void onClose(IOException e); + } + + /** + * Exception that indicates that the file descriptor was detached. + */ + public static class FileDescriptorDetachedException extends IOException { + + private static final long serialVersionUID = 0xDe7ac4edFdL; + + public FileDescriptorDetachedException() { + super("Remote side is detached"); + } + } + + /** + * Internal class representing a remote status read by + * {@link ParcelFileDescriptor#readCommStatus(FileDescriptor, byte[])}. + */ + private static class Status { + /** Special value indicating remote side died. */ + public static final int DEAD = -2; + /** Special value indicating no status should be written. */ + public static final int SILENCE = -1; + + /** Remote reported that everything went better than expected. */ + public static final int OK = 0; + /** Remote reported error; length and message follow. */ + public static final int ERROR = 1; + /** Remote reported {@link #detachFd()} and went rogue. */ + public static final int DETACHED = 2; + /** Remote reported their object was finalized. */ + public static final int LEAKED = 3; + + public final int status; + public final String msg; + + public Status(int status) { + this(status, null); + } + + public Status(int status, String msg) { + this.status = status; + this.msg = msg; + } + + public IOException asIOException() { + switch (status) { + case DEAD: + return new IOException("Remote side is dead"); + case OK: + return null; + case ERROR: + return new IOException("Remote error: " + msg); + case DETACHED: + return new FileDescriptorDetachedException(); + case LEAKED: + return new IOException("Remote side was leaked"); + default: + return new IOException("Unknown status: " + status); + } + } + } + + /** + * Bridge to watch for remote status, and deliver to listener. Currently + * requires that communication socket is blocking. + */ + private static final class ListenerBridge extends Thread { + // TODO: switch to using Looper to avoid burning a thread + + private FileDescriptor mCommFd; + private final Handler mHandler; + + public ListenerBridge(FileDescriptor comm, Looper looper, final OnCloseListener listener) { + mCommFd = comm; + mHandler = new Handler(looper) { + @Override + public void handleMessage(Message msg) { + final Status s = (Status) msg.obj; + listener.onClose(s != null ? s.asIOException() : null); + } + }; + } + + @Override + public void run() { + try { + final byte[] buf = new byte[MAX_STATUS]; + final Status status = readCommStatus(mCommFd, buf); + mHandler.obtainMessage(0, status).sendToTarget(); + } finally { + IoUtils.closeQuietly(mCommFd); + mCommFd = null; + } + } + } +} diff --git a/src/api-impl/android/os/Parcelable.java b/src/api-impl/android/os/Parcelable.java new file mode 100644 index 00000000..4435365e --- /dev/null +++ b/src/api-impl/android/os/Parcelable.java @@ -0,0 +1,5 @@ +package android.os; + +public interface Parcelable { + +} diff --git a/src/api-impl/android/os/PatternMatcher.java b/src/api-impl/android/os/PatternMatcher.java new file mode 100644 index 00000000..ad038bed --- /dev/null +++ b/src/api-impl/android/os/PatternMatcher.java @@ -0,0 +1,176 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +/** + * A simple pattern matcher, which is safe to use on untrusted data: it does + * not provide full reg-exp support, only simple globbing that can not be + * used maliciously. + */ +public class PatternMatcher { + /** + * Pattern type: the given pattern must exactly match the string it is + * tested against. + */ + public static final int PATTERN_LITERAL = 0; + + /** + * Pattern type: the given pattern must match the + * beginning of the string it is tested against. + */ + public static final int PATTERN_PREFIX = 1; + + /** + * Pattern type: the given pattern is interpreted with a + * simple glob syntax for matching against the string it is tested against. + * In this syntax, you can use the '*' character to match against zero or + * more occurrences of the character immediately before. If the + * character before it is '.' it will match any character. The character + * '\' can be used as an escape. This essentially provides only the '*' + * wildcard part of a normal regexp. + */ + public static final int PATTERN_SIMPLE_GLOB = 2; + + private final String mPattern; + private final int mType; + + public PatternMatcher(String pattern, int type) { + mPattern = pattern; + mType = type; + } + + public final String getPath() { + return mPattern; + } + + public final int getType() { + return mType; + } + + public boolean match(String str) { + return matchPattern(mPattern, str, mType); + } + + public String toString() { + String type = "? "; + switch (mType) { + case PATTERN_LITERAL: + type = "LITERAL: "; + break; + case PATTERN_PREFIX: + type = "PREFIX: "; + break; + case PATTERN_SIMPLE_GLOB: + type = "GLOB: "; + break; + } + return "PatternMatcher{" + type + mPattern + "}"; + } + + public int describeContents() { + return 0; + } + + static boolean matchPattern(String pattern, String match, int type) { + if (match == null) return false; + if (type == PATTERN_LITERAL) { + return pattern.equals(match); + } if (type == PATTERN_PREFIX) { + return match.startsWith(pattern); + } else if (type != PATTERN_SIMPLE_GLOB) { + return false; + } + + final int NP = pattern.length(); + if (NP <= 0) { + return match.length() <= 0; + } + final int NM = match.length(); + int ip = 0, im = 0; + char nextChar = pattern.charAt(0); + while ((ip= (NP-1)) { + // at the end with a pattern match, so + // all is good without checking! + return true; + } + ip++; + nextChar = pattern.charAt(ip); + // Consume everything until the next character in the + // pattern is found. + if (nextChar == '\\') { + ip++; + nextChar = ip < NP ? pattern.charAt(ip) : 0; + } + do { + if (match.charAt(im) == nextChar) { + break; + } + im++; + } while (im < NM); + if (im == NM) { + // Whoops, the next character in the pattern didn't + // exist in the match. + return false; + } + ip++; + nextChar = ip < NP ? pattern.charAt(ip) : 0; + im++; + } else { + // Consume only characters matching the one before '*'. + do { + if (match.charAt(im) != c) { + break; + } + im++; + } while (im < NM); + ip++; + nextChar = ip < NP ? pattern.charAt(ip) : 0; + } + } else { + if (c != '.' && match.charAt(im) != c) return false; + im++; + } + } + + if (ip >= NP && im >= NM) { + // Reached the end of both strings, all is good! + return true; + } + + // One last check: we may have finished the match string, but still + // have a '.*' at the end of the pattern, which should still count + // as a match. + if (ip == NP-2 && pattern.charAt(ip) == '.' + && pattern.charAt(ip+1) == '*') { + return true; + } + + return false; + } +} diff --git a/src/api-impl/android/os/Process.java b/src/api-impl/android/os/Process.java new file mode 100644 index 00000000..2f7e708e --- /dev/null +++ b/src/api-impl/android/os/Process.java @@ -0,0 +1,784 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import android.util.Log; + + +import java.io.BufferedWriter; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.util.ArrayList; + +import libcore.io.Libcore; + +/** + * Tools for managing OS processes. + */ +public class Process { + private static final String LOG_TAG = "Process"; + + /** + * Name of a process for running the platform's media services. + * {@hide} + */ + public static final String ANDROID_SHARED_MEDIA = "com.android.process.media"; + + /** + * Name of the process that Google content providers can share. + * {@hide} + */ + public static final String GOOGLE_SHARED_APP_CONTENT = "com.google.process.content"; + + /** + * Defines the UID/GID under which system code runs. + */ + public static final int SYSTEM_UID = 1000; + + /** + * Defines the UID/GID under which the telephony code runs. + */ + public static final int PHONE_UID = 1001; + + /** + * Defines the UID/GID for the user shell. + * @hide + */ + public static final int SHELL_UID = 2000; + + /** + * Defines the UID/GID for the log group. + * @hide + */ + public static final int LOG_UID = 1007; + + /** + * Defines the UID/GID for the WIFI supplicant process. + * @hide + */ + public static final int WIFI_UID = 1010; + + /** + * Defines the UID/GID for the mediaserver process. + * @hide + */ + public static final int MEDIA_UID = 1013; + + /** + * Defines the UID/GID for the DRM process. + * @hide + */ + public static final int DRM_UID = 1019; + + /** + * Defines the UID/GID for the group that controls VPN services. + * @hide + */ + public static final int VPN_UID = 1016; + + /** + * Defines the UID/GID for the NFC service process. + * @hide + */ + public static final int NFC_UID = 1027; + + /** + * Defines the UID/GID for the Bluetooth service process. + * @hide + */ + public static final int BLUETOOTH_UID = 1002; + + /** + * Defines the GID for the group that allows write access to the internal media storage. + * @hide + */ + public static final int MEDIA_RW_GID = 1023; + + /** + * Access to installed package details + * @hide + */ + public static final int PACKAGE_INFO_GID = 1032; + + /** + * Defines the start of a range of UIDs (and GIDs), going from this + * number to {@link #LAST_APPLICATION_UID} that are reserved for assigning + * to applications. + */ + public static final int FIRST_APPLICATION_UID = 10000; + + /** + * Last of application-specific UIDs starting at + * {@link #FIRST_APPLICATION_UID}. + */ + public static final int LAST_APPLICATION_UID = 19999; + + /** + * First uid used for fully isolated sandboxed processes (with no permissions of their own) + * @hide + */ + public static final int FIRST_ISOLATED_UID = 99000; + + /** + * Last uid used for fully isolated sandboxed processes (with no permissions of their own) + * @hide + */ + public static final int LAST_ISOLATED_UID = 99999; + + /** + * First gid for applications to share resources. Used when forward-locking + * is enabled but all UserHandles need to be able to read the resources. + * @hide + */ + public static final int FIRST_SHARED_APPLICATION_GID = 50000; + + /** + * Last gid for applications to share resources. Used when forward-locking + * is enabled but all UserHandles need to be able to read the resources. + * @hide + */ + public static final int LAST_SHARED_APPLICATION_GID = 59999; + + /** + * Standard priority of application threads. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_DEFAULT = 0; + + /* + * *************************************** + * ** Keep in sync with utils/threads.h ** + * *************************************** + */ + + /** + * Lowest available thread priority. Only for those who really, really + * don't want to run if anything else is happening. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_LOWEST = 19; + + /** + * Standard priority background threads. This gives your thread a slightly + * lower than normal priority, so that it will have less chance of impacting + * the responsiveness of the user interface. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_BACKGROUND = 10; + + /** + * Standard priority of threads that are currently running a user interface + * that the user is interacting with. Applications can not normally + * change to this priority; the system will automatically adjust your + * application threads as the user moves through the UI. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_FOREGROUND = -2; + + /** + * Standard priority of system display threads, involved in updating + * the user interface. Applications can not + * normally change to this priority. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_DISPLAY = -4; + + /** + * Standard priority of the most important display threads, for compositing + * the screen and retrieving input events. Applications can not normally + * change to this priority. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_URGENT_DISPLAY = -8; + + /** + * Standard priority of audio threads. Applications can not normally + * change to this priority. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_AUDIO = -16; + + /** + * Standard priority of the most important audio threads. + * Applications can not normally change to this priority. + * Use with {@link #setThreadPriority(int)} and + * {@link #setThreadPriority(int, int)}, not with the normal + * {@link java.lang.Thread} class. + */ + public static final int THREAD_PRIORITY_URGENT_AUDIO = -19; + + /** + * Minimum increment to make a priority more favorable. + */ + public static final int THREAD_PRIORITY_MORE_FAVORABLE = -1; + + /** + * Minimum increment to make a priority less favorable. + */ + public static final int THREAD_PRIORITY_LESS_FAVORABLE = +1; + + /** + * Default scheduling policy + * @hide + */ + public static final int SCHED_OTHER = 0; + + /** + * First-In First-Out scheduling policy + * @hide + */ + public static final int SCHED_FIFO = 1; + + /** + * Round-Robin scheduling policy + * @hide + */ + public static final int SCHED_RR = 2; + + /** + * Batch scheduling policy + * @hide + */ + public static final int SCHED_BATCH = 3; + + /** + * Idle scheduling policy + * @hide + */ + public static final int SCHED_IDLE = 5; + + // Keep in sync with SP_* constants of enum type SchedPolicy + // declared in system/core/include/cutils/sched_policy.h, + // except THREAD_GROUP_DEFAULT does not correspond to any SP_* value. + + /** + * Default thread group - + * has meaning with setProcessGroup() only, cannot be used with setThreadGroup(). + * When used with setProcessGroup(), the group of each thread in the process + * is conditionally changed based on that thread's current priority, as follows: + * threads with priority numerically less than THREAD_PRIORITY_BACKGROUND + * are moved to foreground thread group. All other threads are left unchanged. + * @hide + */ + public static final int THREAD_GROUP_DEFAULT = -1; + + /** + * Background thread group - All threads in + * this group are scheduled with a reduced share of the CPU. + * Value is same as constant SP_BACKGROUND of enum SchedPolicy. + * FIXME rename to THREAD_GROUP_BACKGROUND. + * @hide + */ + public static final int THREAD_GROUP_BG_NONINTERACTIVE = 0; + + /** + * Foreground thread group - All threads in + * this group are scheduled with a normal share of the CPU. + * Value is same as constant SP_FOREGROUND of enum SchedPolicy. + * Not used at this level. + * @hide + **/ + private static final int THREAD_GROUP_FOREGROUND = 1; + + /** + * System thread group. + * @hide + **/ + public static final int THREAD_GROUP_SYSTEM = 2; + + /** + * Application audio thread group. + * @hide + **/ + public static final int THREAD_GROUP_AUDIO_APP = 3; + + /** + * System audio thread group. + * @hide + **/ + public static final int THREAD_GROUP_AUDIO_SYS = 4; + + public static final int SIGNAL_QUIT = 3; + public static final int SIGNAL_KILL = 9; + public static final int SIGNAL_USR1 = 10; + + /** + * Start a new process. + * + *

If processes are enabled, a new process is created and the + * static main() function of a processClass is executed there. + * The process will continue running after this function returns. + * + *

If processes are not enabled, a new thread in the caller's + * process is created and main() of processClass called there. + * + *

The niceName parameter, if not an empty string, is a custom name to + * give to the process instead of using processClass. This allows you to + * make easily identifyable processes even if you are using the same base + * processClass to start them. + * + * @param processClass The class to use as the process's main entry + * point. + * @param niceName A more readable name to use for the process. + * @param uid The user-id under which the process will run. + * @param gid The group-id under which the process will run. + * @param gids Additional group-ids associated with the process. + * @param debugFlags Additional flags. + * @param targetSdkVersion The target SDK version for the app. + * @param seInfo null-ok SE Android information for the new process. + * @param zygoteArgs Additional arguments to supply to the zygote process. + * + * @return An object that describes the result of the attempt to start the process. + * @throws RuntimeException on fatal start failure + * + * {@hide} + */ + public static final ProcessStartResult start(final String processClass, + final String niceName, + int uid, int gid, int[] gids, + int debugFlags, int mountExternal, + int targetSdkVersion, + String seInfo, + String[] zygoteArgs) { + System.out.println("NOT starting a process"); + + return null; + } + + /** retry interval for opening a zygote socket */ + static final int ZYGOTE_RETRY_MILLIS = 500; + + /** + * Returns elapsed milliseconds of the time this process has run. + * @return Returns the number of milliseconds this process has return. + */ + public static final native long getElapsedCpuTime(); + + /** + * Returns the identifier of this process, which can be used with + * {@link #killProcess} and {@link #sendSignal}. + */ + public static final int myPid() { + return Libcore.os.getpid(); + } + + /** + * Returns the identifier of this process' parent. + * @hide + */ + public static final int myPpid() { + return Libcore.os.getppid(); + } + + /** + * Returns the identifier of the calling thread, which be used with + * {@link #setThreadPriority(int, int)}. + */ + public static final int myTid() { + return Libcore.os.gettid(); + } + + /** + * Returns the identifier of this process's uid. This is the kernel uid + * that the process is running under, which is the identity of its + * app-specific sandbox. It is different from {@link #myUserHandle} in that + * a uid identifies a specific app sandbox in a specific user. + */ + public static final int myUid() { + return Libcore.os.getuid(); + } + + /** + * Returns this process's user handle. This is the + * user the process is running under. It is distinct from + * {@link #myUid()} in that a particular user will have multiple + * distinct apps running under it each with their own uid. + */ + public static final UserHandle myUserHandle() { + return new UserHandle(UserHandle.getUserId(myUid())); + } + + /** + * Returns whether the current process is in an isolated sandbox. + * @hide + */ + public static final boolean isIsolated() { + return false; + } + + /** + * Returns the UID assigned to a particular user name, or -1 if there is + * none. If the given string consists of only numbers, it is converted + * directly to a uid. + */ + public static final native int getUidForName(String name); + + /** + * Returns the GID assigned to a particular user name, or -1 if there is + * none. If the given string consists of only numbers, it is converted + * directly to a gid. + */ + public static final native int getGidForName(String name); + + /** + * Returns a uid for a currently running process. + * @param pid the process id + * @return the uid of the process, or -1 if the process is not running. + * @hide pending API council review + */ + public static final int getUidForPid(int pid) { + String[] procStatusLabels = { "Uid:" }; + long[] procStatusValues = new long[1]; + procStatusValues[0] = -1; + Process.readProcLines("/proc/" + pid + "/status", procStatusLabels, procStatusValues); + return (int) procStatusValues[0]; + } + + /** + * Returns the parent process id for a currently running process. + * @param pid the process id + * @return the parent process id of the process, or -1 if the process is not running. + * @hide + */ + public static final int getParentPid(int pid) { + String[] procStatusLabels = { "PPid:" }; + long[] procStatusValues = new long[1]; + procStatusValues[0] = -1; + Process.readProcLines("/proc/" + pid + "/status", procStatusLabels, procStatusValues); + return (int) procStatusValues[0]; + } + + /** + * Returns the thread group leader id for a currently running thread. + * @param tid the thread id + * @return the thread group leader id of the thread, or -1 if the thread is not running. + * This is same as what getpid(2) would return if called by tid. + * @hide + */ + public static final int getThreadGroupLeader(int tid) { + String[] procStatusLabels = { "Tgid:" }; + long[] procStatusValues = new long[1]; + procStatusValues[0] = -1; + Process.readProcLines("/proc/" + tid + "/status", procStatusLabels, procStatusValues); + return (int) procStatusValues[0]; + } + + /** + * Set the priority of a thread, based on Linux priorities. + * + * @param tid The identifier of the thread/process to change. + * @param priority A Linux priority level, from -20 for highest scheduling + * priority to 19 for lowest scheduling priority. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist. + * @throws SecurityException Throws SecurityException if your process does + * not have permission to modify the given thread, or to use the given + * priority. + */ + public static final native void setThreadPriority(int tid, int priority) + throws IllegalArgumentException, SecurityException; + + /** + * Call with 'false' to cause future calls to {@link #setThreadPriority(int)} to + * throw an exception if passed a background-level thread priority. This is only + * effective if the JNI layer is built with GUARD_THREAD_PRIORITY defined to 1. + * + * @hide + */ + public static final native void setCanSelfBackground(boolean backgroundOk); + + /** + * Sets the scheduling group for a thread. + * @hide + * @param tid The identifier of the thread to change. + * @param group The target group for this thread from THREAD_GROUP_*. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist. + * @throws SecurityException Throws SecurityException if your process does + * not have permission to modify the given thread, or to use the given + * priority. + * If the thread is a thread group leader, that is it's gettid() == getpid(), + * then the other threads in the same thread group are _not_ affected. + */ + public static final native void setThreadGroup(int tid, int group) + throws IllegalArgumentException, SecurityException; + + /** + * Sets the scheduling group for a process and all child threads + * @hide + * @param pid The identifier of the process to change. + * @param group The target group for this process from THREAD_GROUP_*. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist. + * @throws SecurityException Throws SecurityException if your process does + * not have permission to modify the given thread, or to use the given + * priority. + * + * group == THREAD_GROUP_DEFAULT means to move all non-background priority + * threads to the foreground scheduling group, but to leave background + * priority threads alone. group == THREAD_GROUP_BG_NONINTERACTIVE moves all + * threads, regardless of priority, to the background scheduling group. + * group == THREAD_GROUP_FOREGROUND is not allowed. + */ + public static final native void setProcessGroup(int pid, int group) + throws IllegalArgumentException, SecurityException; + + /** + * Return the scheduling group of requested process. + * + * @hide + */ + public static final native int getProcessGroup(int pid) + throws IllegalArgumentException, SecurityException; + + /** + * Set the priority of the calling thread, based on Linux priorities. See + * {@link #setThreadPriority(int, int)} for more information. + * + * @param priority A Linux priority level, from -20 for highest scheduling + * priority to 19 for lowest scheduling priority. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist. + * @throws SecurityException Throws SecurityException if your process does + * not have permission to modify the given thread, or to use the given + * priority. + * + * @see #setThreadPriority(int, int) + */ + public static final /*native*/ void setThreadPriority(int priority) + throws IllegalArgumentException, SecurityException {} + + /** + * Return the current priority of a thread, based on Linux priorities. + * + * @param tid The identifier of the thread/process to change. + * + * @return Returns the current priority, as a Linux priority level, + * from -20 for highest scheduling priority to 19 for lowest scheduling + * priority. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist. + */ + public static final native int getThreadPriority(int tid) + throws IllegalArgumentException; + + /** + * Set the scheduling policy and priority of a thread, based on Linux. + * + * @param tid The identifier of the thread/process to change. + * @param policy A Linux scheduling policy such as SCHED_OTHER etc. + * @param priority A Linux priority level in a range appropriate for the given policy. + * + * @throws IllegalArgumentException Throws IllegalArgumentException if + * tid does not exist, or if priority is out of range for the policy. + * @throws SecurityException Throws SecurityException if your process does + * not have permission to modify the given thread, or to use the given + * scheduling policy or priority. + * + * {@hide} + */ + public static final native void setThreadScheduler(int tid, int policy, int priority) + throws IllegalArgumentException; + + /** + * Determine whether the current environment supports multiple processes. + * + * @return Returns true if the system can run in multiple processes, else + * false if everything is running in a single process. + * + * @deprecated This method always returns true. Do not use. + */ + @Deprecated + public static final boolean supportsProcesses() { + return true; + } + + /** + * Set the out-of-memory badness adjustment for a process. + * + * @param pid The process identifier to set. + * @param amt Adjustment value -- linux allows -16 to +15. + * + * @return Returns true if the underlying system supports this + * feature, else false. + * + * {@hide} + */ + public static final native boolean setOomAdj(int pid, int amt); + + /** + * Adjust the swappiness level for a process. + * + * @param pid The process identifier to set. + * @param is_increased Whether swappiness should be increased or default. + * + * @return Returns true if the underlying system supports this + * feature, else false. + * + * {@hide} + */ + public static final native boolean setSwappiness(int pid, boolean is_increased); + + /** + * Change this process's argv[0] parameter. This can be useful to show + * more descriptive information in things like the 'ps' command. + * + * @param text The new name of this process. + * + * {@hide} + */ + public static final native void setArgV0(String text); + + /** + * Kill the process with the given PID. + * Note that, though this API allows us to request to + * kill any process based on its PID, the kernel will + * still impose standard restrictions on which PIDs you + * are actually able to kill. Typically this means only + * the process running the caller's packages/application + * and any additional processes created by that app; packages + * sharing a common UID will also be able to kill each + * other's processes. + */ + public static final void killProcess(int pid) { + sendSignal(pid, SIGNAL_KILL); + } + + /** @hide */ + public static final native int setUid(int uid); + + /** @hide */ + public static final native int setGid(int uid); + + /** + * Send a signal to the given process. + * + * @param pid The pid of the target process. + * @param signal The signal to send. + */ + public static final native void sendSignal(int pid, int signal); + + /** + * @hide + * Private impl for avoiding a log message... DO NOT USE without doing + * your own log, or the Android Illuminati will find you some night and + * beat you up. + */ + public static final void killProcessQuiet(int pid) { + sendSignalQuiet(pid, SIGNAL_KILL); + } + + /** + * @hide + * Private impl for avoiding a log message... DO NOT USE without doing + * your own log, or the Android Illuminati will find you some night and + * beat you up. + */ + public static final native void sendSignalQuiet(int pid, int signal); + + /** @hide */ + public static final native long getFreeMemory(); + + /** @hide */ + public static final native long getTotalMemory(); + + /** @hide */ + public static final native void readProcLines(String path, + String[] reqFields, long[] outSizes); + + /** @hide */ + public static final native int[] getPids(String path, int[] lastArray); + + /** @hide */ + public static final int PROC_TERM_MASK = 0xff; + /** @hide */ + public static final int PROC_ZERO_TERM = 0; + /** @hide */ + public static final int PROC_SPACE_TERM = (int)' '; + /** @hide */ + public static final int PROC_TAB_TERM = (int)'\t'; + /** @hide */ + public static final int PROC_COMBINE = 0x100; + /** @hide */ + public static final int PROC_PARENS = 0x200; + /** @hide */ + public static final int PROC_QUOTES = 0x400; + /** @hide */ + public static final int PROC_OUT_STRING = 0x1000; + /** @hide */ + public static final int PROC_OUT_LONG = 0x2000; + /** @hide */ + public static final int PROC_OUT_FLOAT = 0x4000; + + /** @hide */ + public static final native boolean readProcFile(String file, int[] format, + String[] outStrings, long[] outLongs, float[] outFloats); + + /** @hide */ + public static final native boolean parseProcLine(byte[] buffer, int startIndex, + int endIndex, int[] format, String[] outStrings, long[] outLongs, float[] outFloats); + + /** @hide */ + public static final native int[] getPidsForCommands(String[] cmds); + + /** + * Gets the total Pss value for a given process, in bytes. + * + * @param pid the process to the Pss for + * @return the total Pss value for the given process in bytes, + * or -1 if the value cannot be determined + * @hide + */ + public static final native long getPss(int pid); + + /** + * Specifies the outcome of having started a process. + * @hide + */ + public static final class ProcessStartResult { + /** + * The PID of the newly started process. + * Always >= 0. (If the start failed, an exception will have been thrown instead.) + */ + public int pid; + + /** + * True if the process was started with a wrapper attached. + */ + public boolean usingWrapper; + } +} diff --git a/src/api-impl/android/os/RemoteException.java b/src/api-impl/android/os/RemoteException.java new file mode 100644 index 00000000..e30d24fa --- /dev/null +++ b/src/api-impl/android/os/RemoteException.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; +import android.util.AndroidException; + +/** + * Parent exception for all Binder remote-invocation errors + */ +public class RemoteException extends AndroidException { + public RemoteException() { + super(); + } + + public RemoteException(String message) { + super(message); + } +} diff --git a/src/api-impl/android/os/ResultReceiver.java b/src/api-impl/android/os/ResultReceiver.java new file mode 100644 index 00000000..6fa56f87 --- /dev/null +++ b/src/api-impl/android/os/ResultReceiver.java @@ -0,0 +1,6 @@ +package android.os; + +public class ResultReceiver { + public ResultReceiver(Handler handler) { + } +} diff --git a/src/api-impl/android/os/SystemClock.java b/src/api-impl/android/os/SystemClock.java new file mode 100644 index 00000000..796e80af --- /dev/null +++ b/src/api-impl/android/os/SystemClock.java @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + + +/** + * Core timekeeping facilities. + * + *

Three different clocks are available, and they should not be confused: + * + *

    + *
  • {@link System#currentTimeMillis System.currentTimeMillis()} + * is the standard "wall" clock (time and date) expressing milliseconds + * since the epoch. The wall clock can be set by the user or the phone + * network (see {@link #setCurrentTimeMillis}), so the time may jump + * backwards or forwards unpredictably. This clock should only be used + * when correspondence with real-world dates and times is important, such + * as in a calendar or alarm clock application. Interval or elapsed + * time measurements should use a different clock. If you are using + * System.currentTimeMillis(), consider listening to the + * {@link android.content.Intent#ACTION_TIME_TICK ACTION_TIME_TICK}, + * {@link android.content.Intent#ACTION_TIME_CHANGED ACTION_TIME_CHANGED} + * and {@link android.content.Intent#ACTION_TIMEZONE_CHANGED + * ACTION_TIMEZONE_CHANGED} {@link android.content.Intent Intent} + * broadcasts to find out when the time changes. + * + *

  • {@link #uptimeMillis} is counted in milliseconds since the + * system was booted. This clock stops when the system enters deep + * sleep (CPU off, display dark, device waiting for external input), + * but is not affected by clock scaling, idle, or other power saving + * mechanisms. This is the basis for most interval timing + * such as {@link Thread#sleep(long) Thread.sleep(millls)}, + * {@link Object#wait(long) Object.wait(millis)}, and + * {@link System#nanoTime System.nanoTime()}. This clock is guaranteed + * to be monotonic, and is suitable for interval timing when the + * interval does not span device sleep. Most methods that accept a + * timestamp value currently expect the {@link #uptimeMillis} clock. + * + *

  • {@link #elapsedRealtime} and {@link #elapsedRealtimeNanos} + * return the time since the system was booted, and include deep sleep. + * This clock is guaranteed to be monotonic, and continues to tick even + * when the CPU is in power saving modes, so is the recommend basis + * for general purpose interval timing. + * + *

+ * + * There are several mechanisms for controlling the timing of events: + * + *
    + *
  • Standard functions like {@link Thread#sleep(long) + * Thread.sleep(millis)} and {@link Object#wait(long) Object.wait(millis)} + * are always available. These functions use the {@link #uptimeMillis} + * clock; if the device enters sleep, the remainder of the time will be + * postponed until the device wakes up. These synchronous functions may + * be interrupted with {@link Thread#interrupt Thread.interrupt()}, and + * you must handle {@link InterruptedException}. + * + *

  • {@link #sleep SystemClock.sleep(millis)} is a utility function + * very similar to {@link Thread#sleep(long) Thread.sleep(millis)}, but it + * ignores {@link InterruptedException}. Use this function for delays if + * you do not use {@link Thread#interrupt Thread.interrupt()}, as it will + * preserve the interrupted state of the thread. + * + *

  • The {@link android.os.Handler} class can schedule asynchronous + * callbacks at an absolute or relative time. Handler objects also use the + * {@link #uptimeMillis} clock, and require an {@link android.os.Looper + * event loop} (normally present in any GUI application). + * + *

  • The {@link android.app.AlarmManager} can trigger one-time or + * recurring events which occur even when the device is in deep sleep + * or your application is not running. Events may be scheduled with your + * choice of {@link java.lang.System#currentTimeMillis} (RTC) or + * {@link #elapsedRealtime} (ELAPSED_REALTIME), and cause an + * {@link android.content.Intent} broadcast when they occur. + *

+ */ +public final class SystemClock { + /** + * This class is uninstantiable. + */ + private SystemClock() { + // This space intentionally left blank. + } + + /** + * Waits a given number of milliseconds (of uptimeMillis) before returning. + * Similar to {@link java.lang.Thread#sleep(long)}, but does not throw + * {@link InterruptedException}; {@link Thread#interrupt()} events are + * deferred until the next interruptible operation. Does not return until + * at least the specified number of milliseconds has elapsed. + * + * @param ms to sleep before returning, in milliseconds of uptime. + */ + public static void sleep(long ms) + { + System.out.println("!!! sleep(...) doesn't work, need to implement uptimeMillis"); + /* + long start = uptimeMillis(); + long duration = ms; + boolean interrupted = false; + do { + try { + Thread.sleep(duration); + } + catch (InterruptedException e) { + interrupted = true; + } + duration = start + ms - uptimeMillis(); + } while (duration > 0); + + if (interrupted) { + // Important: we don't want to quietly eat an interrupt() event, + // so we make sure to re-interrupt the thread so that the next + // call to Thread.sleep() or Object.wait() will be interrupted. + Thread.currentThread().interrupt(); + } + */} + + /** + * Sets the current wall time, in milliseconds. Requires the calling + * process to have appropriate permissions. + * + * @return if the clock was successfully set to the specified time. + */ + native public static boolean setCurrentTimeMillis(long millis); + + /** + * Returns milliseconds since boot, not counting time spent in deep sleep. + * + * @return milliseconds of non-sleep uptime since boot. + */ + /*native */public static long uptimeMillis() { + return 654000; // FIXME + } + + /** + * Returns milliseconds since boot, including time spent in sleep. + * + * @return elapsed milliseconds since boot. + */ + native public static long elapsedRealtime(); + + /** + * Returns nanoseconds since boot, including time spent in sleep. + * + * @return elapsed nanoseconds since boot. + */ + public static native long elapsedRealtimeNanos(); + + /** + * Returns milliseconds running in the current thread. + * + * @return elapsed milliseconds in the thread + */ + public static native long currentThreadTimeMillis(); + + /** + * Returns microseconds running in the current thread. + * + * @return elapsed microseconds in the thread + * + * @hide + */ + public static native long currentThreadTimeMicro(); + + /** + * Returns current wall time in microseconds. + * + * @return elapsed microseconds in wall time + * + * @hide + */ + public static native long currentTimeMicro(); +} diff --git a/src/api-impl/android/os/Trace.java b/src/api-impl/android/os/Trace.java new file mode 100644 index 00000000..436ba23f --- /dev/null +++ b/src/api-impl/android/os/Trace.java @@ -0,0 +1,286 @@ +/* + * 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 android.os; + +import android.util.Log; + +/** + * Writes trace events to the system trace buffer. These trace events can be + * collected and visualized using the Systrace tool. + * + * This tracing mechanism is independent of the method tracing mechanism + * offered by {@link Debug#startMethodTracing}. In particular, it enables + * tracing of events that occur across multiple processes. + */ +public final class Trace { + /* + * Writes trace events to the kernel trace buffer. These trace events can be + * collected using the "atrace" program for offline analysis. + */ + + private static final String TAG = "Trace"; + + // These tags must be kept in sync with system/core/include/cutils/trace.h. + /** @hide */ + public static final long TRACE_TAG_NEVER = 0; + /** @hide */ + public static final long TRACE_TAG_ALWAYS = 1L << 0; + /** @hide */ + public static final long TRACE_TAG_GRAPHICS = 1L << 1; + /** @hide */ + public static final long TRACE_TAG_INPUT = 1L << 2; + /** @hide */ + public static final long TRACE_TAG_VIEW = 1L << 3; + /** @hide */ + public static final long TRACE_TAG_WEBVIEW = 1L << 4; + /** @hide */ + public static final long TRACE_TAG_WINDOW_MANAGER = 1L << 5; + /** @hide */ + public static final long TRACE_TAG_ACTIVITY_MANAGER = 1L << 6; + /** @hide */ + public static final long TRACE_TAG_SYNC_MANAGER = 1L << 7; + /** @hide */ + public static final long TRACE_TAG_AUDIO = 1L << 8; + /** @hide */ + public static final long TRACE_TAG_VIDEO = 1L << 9; + /** @hide */ + public static final long TRACE_TAG_CAMERA = 1L << 10; + /** @hide */ + public static final long TRACE_TAG_HAL = 1L << 11; + /** @hide */ + public static final long TRACE_TAG_APP = 1L << 12; + /** @hide */ + public static final long TRACE_TAG_RESOURCES = 1L << 13; + /** @hide */ + public static final long TRACE_TAG_DALVIK = 1L << 14; + /** @hide */ + public static final long TRACE_TAG_RS = 1L << 15; + + private static final long TRACE_TAG_NOT_READY = 1L << 63; + private static final int MAX_SECTION_NAME_LEN = 127; + + // Must be volatile to avoid word tearing. + private static volatile long sEnabledTags = TRACE_TAG_NOT_READY; + + private static native long nativeGetEnabledTags(); + private static native void nativeTraceCounter(long tag, String name, int value); + private static native void nativeTraceBegin(long tag, String name); + private static native void nativeTraceEnd(long tag); + private static native void nativeAsyncTraceBegin(long tag, String name, int cookie); + private static native void nativeAsyncTraceEnd(long tag, String name, int cookie); + private static native void nativeSetAppTracingAllowed(boolean allowed); + private static native void nativeSetTracingEnabled(boolean allowed); + + static { + // We configure two separate change callbacks, one in Trace.cpp and one here. The + // native callback reads the tags from the system property, and this callback + // reads the value that the native code retrieved. It's essential that the native + // callback executes first. + // + // The system provides ordering through a priority level. Callbacks made through + // SystemProperties.addChangeCallback currently have a negative priority, while + // our native code is using a priority of zero. + /*SystemProperties.addChangeCallback(new Runnable() { + @Override public void run() { + cacheEnabledTags(); + } + });*/ + } + + private Trace() { + } + + /** + * Caches a copy of the enabled-tag bits. The "master" copy is held by the native code, + * and comes from the PROPERTY_TRACE_TAG_ENABLEFLAGS property. + *

+ * If the native code hasn't yet read the property, we will cause it to do one-time + * initialization. We don't want to do this during class init, because this class is + * preloaded, so all apps would be stuck with whatever the zygote saw. (The zygote + * doesn't see the system-property update broadcasts.) + *

+ * We want to defer initialization until the first use by an app, post-zygote. + *

+ * We're okay if multiple threads call here simultaneously -- the native state is + * synchronized, and sEnabledTags is volatile (prevents word tearing). + */ + private static long cacheEnabledTags() { + long tags = nativeGetEnabledTags(); + sEnabledTags = tags; + return tags; + } + + /** + * Returns true if a trace tag is enabled. + * + * @param traceTag The trace tag to check. + * @return True if the trace tag is valid. + * + * @hide + */ + public static boolean isTagEnabled(long traceTag) { + long tags = sEnabledTags; + if (tags == TRACE_TAG_NOT_READY) { + tags = cacheEnabledTags(); + } + return (tags & traceTag) != 0; + } + + /** + * Writes trace message to indicate the value of a given counter. + * + * @param traceTag The trace tag. + * @param counterName The counter name to appear in the trace. + * @param counterValue The counter value. + * + * @hide + */ + public static void traceCounter(long traceTag, String counterName, int counterValue) { + if (isTagEnabled(traceTag)) { + nativeTraceCounter(traceTag, counterName, counterValue); + } + } + + /** + * Set whether application tracing is allowed for this process. This is intended to be set + * once at application start-up time based on whether the application is debuggable. + * + * @hide + */ + public static void setAppTracingAllowed(boolean allowed) { + nativeSetAppTracingAllowed(allowed); + + // Setting whether app tracing is allowed may change the tags, so we update the cached + // tags here. + cacheEnabledTags(); + } + + /** + * Set whether tracing is enabled in this process. Tracing is disabled shortly after Zygote + * initializes and re-enabled after processes fork from Zygote. This is done because Zygote + * has no way to be notified about changes to the tracing tags, and if Zygote ever reads and + * caches the tracing tags, forked processes will inherit those stale tags. + * + * @hide + */ + public static void setTracingEnabled(boolean enabled) { + nativeSetTracingEnabled(enabled); + + // Setting whether tracing is enabled may change the tags, so we update the cached tags + // here. + cacheEnabledTags(); + } + + /** + * Writes a trace message to indicate that a given section of code has + * begun. Must be followed by a call to {@link #traceEnd} using the same + * tag. + * + * @param traceTag The trace tag. + * @param methodName The method name to appear in the trace. + * + * @hide + */ + public static void traceBegin(long traceTag, String methodName) { + if (isTagEnabled(traceTag)) { + nativeTraceBegin(traceTag, methodName); + } + } + + /** + * Writes a trace message to indicate that the current method has ended. + * Must be called exactly once for each call to {@link #traceBegin} using the same tag. + * + * @param traceTag The trace tag. + * + * @hide + */ + public static void traceEnd(long traceTag) { + if (isTagEnabled(traceTag)) { + nativeTraceEnd(traceTag); + } + } + + /** + * Writes a trace message to indicate that a given section of code has + * begun. Must be followed by a call to {@link #asyncTraceEnd} using the same + * tag. Unlike {@link #traceBegin(long, String)} and {@link #traceEnd(long)}, + * asynchronous events do not need to be nested. The name and cookie used to + * begin an event must be used to end it. + * + * @param traceTag The trace tag. + * @param methodName The method name to appear in the trace. + * @param cookie Unique identifier for distinguishing simultaneous events + * + * @hide + */ + public static void asyncTraceBegin(long traceTag, String methodName, int cookie) { + if (isTagEnabled(traceTag)) { + nativeAsyncTraceBegin(traceTag, methodName, cookie); + } + } + + /** + * Writes a trace message to indicate that the current method has ended. + * Must be called exactly once for each call to {@link #asyncTraceBegin(long, String, int)} + * using the same tag, name and cookie. + * + * @param traceTag The trace tag. + * @param methodName The method name to appear in the trace. + * @param cookie Unique identifier for distinguishing simultaneous events + * + * @hide + */ + public static void asyncTraceEnd(long traceTag, String methodName, int cookie) { + if (isTagEnabled(traceTag)) { + nativeAsyncTraceEnd(traceTag, methodName, cookie); + } + } + + /** + * Writes a trace message to indicate that a given section of code has begun. This call must + * be followed by a corresponding call to {@link #endSection()} on the same thread. + * + *

At this time the vertical bar character '|', newline character '\n', and + * null character '\0' are used internally by the tracing mechanism. If sectionName contains + * these characters they will be replaced with a space character in the trace. + * + * @param sectionName The name of the code section to appear in the trace. This may be at + * most 127 Unicode code units long. + */ + public static void beginSection(String sectionName) { + if (isTagEnabled(TRACE_TAG_APP)) { + if (sectionName.length() > MAX_SECTION_NAME_LEN) { + throw new IllegalArgumentException("sectionName is too long"); + } + nativeTraceBegin(TRACE_TAG_APP, sectionName); + } + } + + /** + * Writes a trace message to indicate that a given section of code has ended. This call must + * be preceeded by a corresponding call to {@link #beginSection(String)}. Calling this method + * will mark the end of the most recently begun section of code, so care must be taken to + * ensure that beginSection / endSection pairs are properly nested and called from the same + * thread. + */ + public static void endSection() { + if (isTagEnabled(TRACE_TAG_APP)) { + nativeTraceEnd(TRACE_TAG_APP); + } + } +} diff --git a/src/api-impl/android/os/UserHandle.java b/src/api-impl/android/os/UserHandle.java new file mode 100644 index 00000000..a76a3bfb --- /dev/null +++ b/src/api-impl/android/os/UserHandle.java @@ -0,0 +1,207 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import java.io.PrintWriter; + +/** + * Representation of a user on the device. + */ +public final class UserHandle { + /** + * @hide Range of uids allocated for a user. + */ + public static final int PER_USER_RANGE = 100000; + + /** @hide A user id to indicate all users on the device */ + public static final int USER_ALL = -1; + + /** @hide A user handle to indicate all users on the device */ + public static final UserHandle ALL = new UserHandle(USER_ALL); + + /** @hide A user id to indicate the currently active user */ + public static final int USER_CURRENT = -2; + + /** @hide A user handle to indicate the current user of the device */ + public static final UserHandle CURRENT = new UserHandle(USER_CURRENT); + + /** @hide A user id to indicate that we would like to send to the current + * user, but if this is calling from a user process then we will send it + * to the caller's user instead of failing wiht a security exception */ + public static final int USER_CURRENT_OR_SELF = -3; + + /** @hide A user handle to indicate that we would like to send to the current + * user, but if this is calling from a user process then we will send it + * to the caller's user instead of failing wiht a security exception */ + public static final UserHandle CURRENT_OR_SELF = new UserHandle(USER_CURRENT_OR_SELF); + + /** @hide An undefined user id */ + public static final int USER_NULL = -10000; + + /** @hide A user id constant to indicate the "owner" user of the device */ + public static final int USER_OWNER = 0; + + /** @hide A user handle to indicate the primary/owner user of the device */ + public static final UserHandle OWNER = new UserHandle(USER_OWNER); + + /** + * @hide Enable multi-user related side effects. Set this to false if + * there are problems with single user use-cases. + */ + public static final boolean MU_ENABLED = true; + + final int mHandle; + + /** + * Checks to see if the user id is the same for the two uids, i.e., they belong to the same + * user. + * @hide + */ + public static final boolean isSameUser(int uid1, int uid2) { + return getUserId(uid1) == getUserId(uid2); + } + + /** + * Checks to see if both uids are referring to the same app id, ignoring the user id part of the + * uids. + * @param uid1 uid to compare + * @param uid2 other uid to compare + * @return whether the appId is the same for both uids + * @hide + */ + public static final boolean isSameApp(int uid1, int uid2) { + return getAppId(uid1) == getAppId(uid2); + } + + /** @hide */ + public static final boolean isIsolated(int uid) { + return false; + } + + /** @hide */ + public static boolean isApp(int uid) { + return true; + } + + /** + * Returns the user id for a given uid. + * @hide + */ + public static final int getUserId(int uid) { + if (MU_ENABLED) { + return uid / PER_USER_RANGE; + } else { + return 0; + } + } + + /** @hide */ + public static final int getCallingUserId() { + return 1000; // FIXME + } + + /** + * Returns the uid that is composed from the userId and the appId. + * @hide + */ + public static final int getUid(int userId, int appId) { + if (MU_ENABLED) { + return userId * PER_USER_RANGE + (appId % PER_USER_RANGE); + } else { + return appId; + } + } + + /** + * Returns the app id (or base uid) for a given uid, stripping out the user id from it. + * @hide + */ + public static final int getAppId(int uid) { + return uid % PER_USER_RANGE; + } + + /** + * Returns the shared app gid for a given uid or appId. + * @hide + */ + public static final int getSharedAppGid(int id) { + return id; // TODO wtf is this + } + + /** + * Generate a text representation of the uid, breaking out its individual + * components -- user, app, isolated, etc. + * @hide + */ + public static void formatUid(StringBuilder sb, int uid) { + sb.append(uid); + } + + /** + * Generate a text representation of the uid, breaking out its individual + * components -- user, app, isolated, etc. + * @hide + */ + public static void formatUid(PrintWriter pw, int uid) { + pw.print(uid); + } + + /** + * Returns the user id of the current process + * @return user id of the current process + * @hide + */ + public static final int myUserId() { + return 1000; + } + + /** @hide */ + public UserHandle(int h) { + mHandle = h; + } + + /** @hide */ + public int getIdentifier() { + return mHandle; + } + + @Override + public String toString() { + return "UserHandle{" + mHandle + "}"; + } + + @Override + public boolean equals(Object obj) { + try { + if (obj != null) { + UserHandle other = (UserHandle)obj; + return mHandle == other.mHandle; + } + } catch (ClassCastException e) { + } + return false; + } + + @Override + public int hashCode() { + return mHandle; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/preference/PreferenceManager.java b/src/api-impl/android/preference/PreferenceManager.java new file mode 100644 index 00000000..cdce73ec --- /dev/null +++ b/src/api-impl/android/preference/PreferenceManager.java @@ -0,0 +1,11 @@ +package android.preference; + +import android.content.Context; +import android.content.SharedPreferences; +import android.app.SharedPreferencesImpl; + +public class PreferenceManager { + public static SharedPreferences getDefaultSharedPreferences (Context context) { + return Context.this_application.getSharedPreferences("default", 0); // is this correct? + } +} diff --git a/src/api-impl/android/provider/Settings.java b/src/api-impl/android/provider/Settings.java new file mode 100644 index 00000000..0988ead6 --- /dev/null +++ b/src/api-impl/android/provider/Settings.java @@ -0,0 +1,40 @@ +package android.provider; + +import android.content.ContentResolver; +import android.util.AndroidException; + +public class Settings { + public static final class Secure { + public static String getString(ContentResolver content_resolver, String key) { + switch(key) { + case "android_id": + return "_totally_an_androidID"; // TODO: is this a good ID? :P + default: + java.lang.System.out.println("!!!! Settings$Secure.getString: unknown key: >"+key+"<"); + return "NOTICEME"; + } + } + public static int getInt(ContentResolver content_resolver, String key) { + switch(key) { + case "limit_ad_tracking": + return 1; // obviously, duh + default: + java.lang.System.out.println("!!!! Settings$Secure.getInt: unknown key: >"+key+"<"); + return -1; + } + } + } + public static final class System { + public static int getInt (ContentResolver cr, String key, int def) { + java.lang.System.out.println("!!!! Settings$System.getInt(def: "+def+"): unknown key: >"+key+"<"); + return def; // FIXME + } + + public static int getInt (ContentResolver cr, String key) { + java.lang.System.out.println("!!!! Settings$System.getInt: unknown key: >"+key+"<"); + return 0; + } + } + + public static class SettingNotFoundException extends AndroidException {} +} diff --git a/src/api-impl/android/support/v4/app/FragmentActivity.java b/src/api-impl/android/support/v4/app/FragmentActivity.java new file mode 100644 index 00000000..a69914de --- /dev/null +++ b/src/api-impl/android/support/v4/app/FragmentActivity.java @@ -0,0 +1,34 @@ +package android.support.v4.app; + +import android.os.Bundle; +import android.app.Activity; + +public class FragmentActivity extends Activity { + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + protected void onStart() { + super.onStart(); + } + + protected void onRestart() { + super.onRestart(); + } + + protected void onResume() { + super.onResume(); + } + + protected void onPause() { + super.onPause(); + } + + protected void onStop() { + super.onStop(); + } + + protected void onDestroy() { + super.onDestroy(); + } +} diff --git a/src/api-impl/android/telephony/TelephonyManager.java b/src/api-impl/android/telephony/TelephonyManager.java new file mode 100644 index 00000000..154bd474 --- /dev/null +++ b/src/api-impl/android/telephony/TelephonyManager.java @@ -0,0 +1,7 @@ +package android.telephony; + +public class TelephonyManager { + public String getNetworkOperatorName() { + return "none"; // FIXME: can we return null here? + } +} diff --git a/src/api-impl/android/text/ClipboardManager.java b/src/api-impl/android/text/ClipboardManager.java new file mode 100644 index 00000000..eeb27488 --- /dev/null +++ b/src/api-impl/android/text/ClipboardManager.java @@ -0,0 +1,5 @@ +package android.text; + +public class ClipboardManager { + +} diff --git a/src/api-impl/android/text/GetChars.java b/src/api-impl/android/text/GetChars.java new file mode 100644 index 00000000..348a911a --- /dev/null +++ b/src/api-impl/android/text/GetChars.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +/** + * Please implement this interface if your CharSequence has a + * getChars() method like the one in String that is faster than + * calling charAt() multiple times. + */ +public interface GetChars +extends CharSequence +{ + /** + * Exactly like String.getChars(): copy chars start + * through end - 1 from this CharSequence into dest + * beginning at offset destoff. + */ + public void getChars(int start, int end, char[] dest, int destoff); +} diff --git a/src/api-impl/android/text/Html.java b/src/api-impl/android/text/Html.java new file mode 100644 index 00000000..48fec9f5 --- /dev/null +++ b/src/api-impl/android/text/Html.java @@ -0,0 +1,7 @@ +package android.text; + +public class Html { + public static Spanned fromHtml(String source) { + return new SpannableString(source.replace("
", "\n")); // TODO when JTidy is in use: s/
//g + } +} diff --git a/src/api-impl/android/text/InputFilter.java b/src/api-impl/android/text/InputFilter.java new file mode 100644 index 00000000..b7657902 --- /dev/null +++ b/src/api-impl/android/text/InputFilter.java @@ -0,0 +1,12 @@ +package android.text; + +public interface InputFilter { + public static class LengthFilter extends Object implements InputFilter { + public LengthFilter(int max) { + } + + public CharSequence filter (CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { + return ""; + } + } +} diff --git a/src/api-impl/android/text/NoCopySpan.java b/src/api-impl/android/text/NoCopySpan.java new file mode 100644 index 00000000..0855c0b2 --- /dev/null +++ b/src/api-impl/android/text/NoCopySpan.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +/** + * This interface should be added to a span object that should not be copied + * into a new Spenned when performing a slice or copy operation on the original + * Spanned it was placed in. + */ +public interface NoCopySpan { + /** + * Convenience equivalent for when you would just want a new Object() for + * a span but want it to be no-copy. Use this instead. + */ + public class Concrete implements NoCopySpan { + } +} diff --git a/src/api-impl/android/text/SpanWatcher.java b/src/api-impl/android/text/SpanWatcher.java new file mode 100644 index 00000000..01e82c81 --- /dev/null +++ b/src/api-impl/android/text/SpanWatcher.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +/** + * When an object of this type is attached to a Spannable, its methods + * will be called to notify it that other markup objects have been + * added, changed, or removed. + */ +public interface SpanWatcher extends NoCopySpan { + /** + * This method is called to notify you that the specified object + * has been attached to the specified range of the text. + */ + public void onSpanAdded(Spannable text, Object what, int start, int end); + /** + * This method is called to notify you that the specified object + * has been detached from the specified range of the text. + */ + public void onSpanRemoved(Spannable text, Object what, int start, int end); + /** + * This method is called to notify you that the specified object + * has been relocated from the range ostart…oend + * to the new range nstart…nend of the text. + */ + public void onSpanChanged(Spannable text, Object what, int ostart, int oend, + int nstart, int nend); +} diff --git a/src/api-impl/android/text/Spannable.java b/src/api-impl/android/text/Spannable.java new file mode 100644 index 00000000..ae5d3562 --- /dev/null +++ b/src/api-impl/android/text/Spannable.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +/** + * This is the interface for text to which markup objects can be + * attached and detached. Not all Spannable classes have mutable text; + * see {@link Editable} for that. + */ +public interface Spannable +extends Spanned +{ + /** + * Attach the specified markup object to the range start…end + * of the text, or move the object to that range if it was already + * attached elsewhere. See {@link Spanned} for an explanation of + * what the flags mean. The object can be one that has meaning only + * within your application, or it can be one that the text system will + * use to affect text display or behavior. Some noteworthy ones are + * the subclasses of {@link android.text.style.CharacterStyle} and + * {@link android.text.style.ParagraphStyle}, and + * {@link android.text.TextWatcher} and + * {@link android.text.SpanWatcher}. + */ + public void setSpan(Object what, int start, int end, int flags); + + /** + * Remove the specified object from the range of text to which it + * was attached, if any. It is OK to remove an object that was never + * attached in the first place. + */ + public void removeSpan(Object what); + + /** + * Factory used by TextView to create new Spannables. You can subclass + * it to provide something other than SpannableString. + */ + public static class Factory { + private static Spannable.Factory sInstance = new Spannable.Factory(); + + /** + * Returns the standard Spannable Factory. + */ + public static Spannable.Factory getInstance() { + return sInstance; + } + + /** + * Returns a new SpannableString from the specified CharSequence. + * You can override this to provide a different kind of Spannable. + */ + public Spannable newSpannable(CharSequence source) { + return new SpannableString(source); + } + } +} diff --git a/src/api-impl/android/text/SpannableString.java b/src/api-impl/android/text/SpannableString.java new file mode 100644 index 00000000..56d0946b --- /dev/null +++ b/src/api-impl/android/text/SpannableString.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + + +/** + * This is the class for text whose content is immutable but to which + * markup objects can be attached and detached. + * For mutable text, see {@link SpannableStringBuilder}. + */ +public class SpannableString +extends SpannableStringInternal +implements CharSequence, GetChars, Spannable +{ + public SpannableString(CharSequence source) { + super(source, 0, source.length()); + } + + private SpannableString(CharSequence source, int start, int end) { + super(source, start, end); + } + + public static SpannableString valueOf(CharSequence source) { + if (source instanceof SpannableString) { + return (SpannableString) source; + } else { + return new SpannableString(source); + } + } + + public void setSpan(Object what, int start, int end, int flags) { + super.setSpan(what, start, end, flags); + } + + public void removeSpan(Object what) { + super.removeSpan(what); + } + + public final CharSequence subSequence(int start, int end) { + return new SpannableString(this, start, end); + } +} diff --git a/src/api-impl/android/text/SpannableStringInternal.java b/src/api-impl/android/text/SpannableStringInternal.java new file mode 100644 index 00000000..456a3e5a --- /dev/null +++ b/src/api-impl/android/text/SpannableStringInternal.java @@ -0,0 +1,421 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +import com.android.internal.util.ArrayUtils; + +import java.lang.reflect.Array; + +/* package */ abstract class SpannableStringInternal +{ + /* package */ SpannableStringInternal(CharSequence source, + int start, int end) { + if (start == 0 && end == source.length()) + mText = source.toString(); + else + mText = source.toString().substring(start, end); + + int initial = ArrayUtils.idealIntArraySize(0); + mSpans = new Object[initial]; + mSpanData = new int[initial * 3]; + + if (source instanceof Spanned) { + Spanned sp = (Spanned) source; + Object[] spans = sp.getSpans(start, end, Object.class); + + for (int i = 0; i < spans.length; i++) { + int st = sp.getSpanStart(spans[i]); + int en = sp.getSpanEnd(spans[i]); + int fl = sp.getSpanFlags(spans[i]); + + if (st < start) + st = start; + if (en > end) + en = end; + + setSpan(spans[i], st - start, en - start, fl); + } + } + } + + public final int length() { + return mText.length(); + } + + public final char charAt(int i) { + return mText.charAt(i); + } + + public final String toString() { + return mText; + } + + /* subclasses must do subSequence() to preserve type */ + + public final void getChars(int start, int end, char[] dest, int off) { + mText.getChars(start, end, dest, off); + } + + /* package */ void setSpan(Object what, int start, int end, int flags) { + int nstart = start; + int nend = end; + + checkRange("setSpan", start, end); + + if ((flags & Spannable.SPAN_PARAGRAPH) == Spannable.SPAN_PARAGRAPH) { + if (start != 0 && start != length()) { + char c = charAt(start - 1); + + if (c != '\n') + throw new RuntimeException( + "PARAGRAPH span must start at paragraph boundary" + + " (" + start + " follows " + c + ")"); + } + + if (end != 0 && end != length()) { + char c = charAt(end - 1); + + if (c != '\n') + throw new RuntimeException( + "PARAGRAPH span must end at paragraph boundary" + + " (" + end + " follows " + c + ")"); + } + } + + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + for (int i = 0; i < count; i++) { + if (spans[i] == what) { + int ostart = data[i * COLUMNS + START]; + int oend = data[i * COLUMNS + END]; + + data[i * COLUMNS + START] = start; + data[i * COLUMNS + END] = end; + data[i * COLUMNS + FLAGS] = flags; + + sendSpanChanged(what, ostart, oend, nstart, nend); + return; + } + } + + if (mSpanCount + 1 >= mSpans.length) { + int newsize = ArrayUtils.idealIntArraySize(mSpanCount + 1); + Object[] newtags = new Object[newsize]; + int[] newdata = new int[newsize * 3]; + + System.arraycopy(mSpans, 0, newtags, 0, mSpanCount); + System.arraycopy(mSpanData, 0, newdata, 0, mSpanCount * 3); + + mSpans = newtags; + mSpanData = newdata; + } + + mSpans[mSpanCount] = what; + mSpanData[mSpanCount * COLUMNS + START] = start; + mSpanData[mSpanCount * COLUMNS + END] = end; + mSpanData[mSpanCount * COLUMNS + FLAGS] = flags; + mSpanCount++; + + if (this instanceof Spannable) + sendSpanAdded(what, nstart, nend); + } + + /* package */ void removeSpan(Object what) { + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + for (int i = count - 1; i >= 0; i--) { + if (spans[i] == what) { + int ostart = data[i * COLUMNS + START]; + int oend = data[i * COLUMNS + END]; + + int c = count - (i + 1); + + System.arraycopy(spans, i + 1, spans, i, c); + System.arraycopy(data, (i + 1) * COLUMNS, + data, i * COLUMNS, c * COLUMNS); + + mSpanCount--; + + sendSpanRemoved(what, ostart, oend); + return; + } + } + } + + public int getSpanStart(Object what) { + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + for (int i = count - 1; i >= 0; i--) { + if (spans[i] == what) { + return data[i * COLUMNS + START]; + } + } + + return -1; + } + + public int getSpanEnd(Object what) { + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + for (int i = count - 1; i >= 0; i--) { + if (spans[i] == what) { + return data[i * COLUMNS + END]; + } + } + + return -1; + } + + public int getSpanFlags(Object what) { + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + for (int i = count - 1; i >= 0; i--) { + if (spans[i] == what) { + return data[i * COLUMNS + FLAGS]; + } + } + + return 0; + } + + public T[] getSpans(int queryStart, int queryEnd, Class kind) { + int count = 0; + + int spanCount = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + Object[] ret = null; + Object ret1 = null; + + for (int i = 0; i < spanCount; i++) { + if (kind != null && !kind.isInstance(spans[i])) { + continue; + } + + int spanStart = data[i * COLUMNS + START]; + int spanEnd = data[i * COLUMNS + END]; + + if (spanStart > queryEnd) { + continue; + } + if (spanEnd < queryStart) { + continue; + } + + if (spanStart != spanEnd && queryStart != queryEnd) { + if (spanStart == queryEnd) { + continue; + } + if (spanEnd == queryStart) { + continue; + } + } + + if (count == 0) { + ret1 = spans[i]; + count++; + } else { + if (count == 1) { + ret = (Object[]) Array.newInstance(kind, spanCount - i + 1); + ret[0] = ret1; + } + + int prio = data[i * COLUMNS + FLAGS] & Spanned.SPAN_PRIORITY; + if (prio != 0) { + int j; + + for (j = 0; j < count; j++) { + int p = getSpanFlags(ret[j]) & Spanned.SPAN_PRIORITY; + + if (prio > p) { + break; + } + } + + System.arraycopy(ret, j, ret, j + 1, count - j); + ret[j] = spans[i]; + count++; + } else { + ret[count++] = spans[i]; + } + } + } + + if (count == 0) { + return (T[]) ArrayUtils.emptyArray(kind); + } + if (count == 1) { + ret = (Object[]) Array.newInstance(kind, 1); + ret[0] = ret1; + return (T[]) ret; + } + if (count == ret.length) { + return (T[]) ret; + } + + Object[] nret = (Object[]) Array.newInstance(kind, count); + System.arraycopy(ret, 0, nret, 0, count); + return (T[]) nret; + } + + public int nextSpanTransition(int start, int limit, Class kind) { + int count = mSpanCount; + Object[] spans = mSpans; + int[] data = mSpanData; + + if (kind == null) { + kind = Object.class; + } + + for (int i = 0; i < count; i++) { + int st = data[i * COLUMNS + START]; + int en = data[i * COLUMNS + END]; + + if (st > start && st < limit && kind.isInstance(spans[i])) + limit = st; + if (en > start && en < limit && kind.isInstance(spans[i])) + limit = en; + } + + return limit; + } + + private void sendSpanAdded(Object what, int start, int end) { + SpanWatcher[] recip = getSpans(start, end, SpanWatcher.class); + int n = recip.length; + + for (int i = 0; i < n; i++) { + recip[i].onSpanAdded((Spannable) this, what, start, end); + } + } + + private void sendSpanRemoved(Object what, int start, int end) { + SpanWatcher[] recip = getSpans(start, end, SpanWatcher.class); + int n = recip.length; + + for (int i = 0; i < n; i++) { + recip[i].onSpanRemoved((Spannable) this, what, start, end); + } + } + + private void sendSpanChanged(Object what, int s, int e, int st, int en) { + SpanWatcher[] recip = getSpans(Math.min(s, st), Math.max(e, en), + SpanWatcher.class); + int n = recip.length; + + for (int i = 0; i < n; i++) { + recip[i].onSpanChanged((Spannable) this, what, s, e, st, en); + } + } + + private static String region(int start, int end) { + return "(" + start + " ... " + end + ")"; + } + + private void checkRange(final String operation, int start, int end) { + if (end < start) { + throw new IndexOutOfBoundsException(operation + " " + + region(start, end) + + " has end before start"); + } + + int len = length(); + + if (start > len || end > len) { + throw new IndexOutOfBoundsException(operation + " " + + region(start, end) + + " ends beyond length " + len); + } + + if (start < 0 || end < 0) { + throw new IndexOutOfBoundsException(operation + " " + + region(start, end) + + " starts before 0"); + } + } + + // Same as SpannableStringBuilder + @Override + public boolean equals(Object o) { + if (o instanceof Spanned && + toString().equals(o.toString())) { + Spanned other = (Spanned) o; + // Check span data + Object[] otherSpans = other.getSpans(0, other.length(), Object.class); + if (mSpanCount == otherSpans.length) { + for (int i = 0; i < mSpanCount; ++i) { + Object thisSpan = mSpans[i]; + Object otherSpan = otherSpans[i]; + if (thisSpan == this) { + if (other != otherSpan || + getSpanStart(thisSpan) != other.getSpanStart(otherSpan) || + getSpanEnd(thisSpan) != other.getSpanEnd(otherSpan) || + getSpanFlags(thisSpan) != other.getSpanFlags(otherSpan)) { + return false; + } + } else if (!thisSpan.equals(otherSpan) || + getSpanStart(thisSpan) != other.getSpanStart(otherSpan) || + getSpanEnd(thisSpan) != other.getSpanEnd(otherSpan) || + getSpanFlags(thisSpan) != other.getSpanFlags(otherSpan)) { + return false; + } + } + return true; + } + } + return false; + } + + // Same as SpannableStringBuilder + @Override + public int hashCode() { + int hash = toString().hashCode(); + hash = hash * 31 + mSpanCount; + for (int i = 0; i < mSpanCount; ++i) { + Object span = mSpans[i]; + if (span != this) { + hash = hash * 31 + span.hashCode(); + } + hash = hash * 31 + getSpanStart(span); + hash = hash * 31 + getSpanEnd(span); + hash = hash * 31 + getSpanFlags(span); + } + return hash; + } + + private String mText; + private Object[] mSpans; + private int[] mSpanData; + private int mSpanCount; + + /* package */ static final Object[] EMPTY = new Object[0]; + + private static final int START = 0; + private static final int END = 1; + private static final int FLAGS = 2; + private static final int COLUMNS = 3; +} diff --git a/src/api-impl/android/text/Spanned.java b/src/api-impl/android/text/Spanned.java new file mode 100644 index 00000000..b4622e0c --- /dev/null +++ b/src/api-impl/android/text/Spanned.java @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +/** + * This is the interface for text that has markup objects attached to + * ranges of it. Not all text classes have mutable markup or text; + * see {@link Spannable} for mutable markup and {@link Editable} for + * mutable text. + */ +public interface Spanned +extends CharSequence +{ + /** + * Bitmask of bits that are relevent for controlling point/mark behavior + * of spans. + * + * MARK and POINT are conceptually located between two adjacent characters. + * A MARK is "attached" to the character before, while a POINT will stick to the character + * after. The insertion cursor is conceptually located between the MARK and the POINT. + * + * As a result, inserting a new character between a MARK and a POINT will leave the MARK + * unchanged, while the POINT will be shifted, now located after the inserted character and + * still glued to the same character after it. + * + * Depending on whether the insertion happens at the beginning or the end of a span, the span + * will hence be expanded to include the new character (when the span is using a MARK at + * its beginning or a POINT at its end) or it will be excluded. + * + * Note that before and after here refer to offsets in the String, which are + * independent from the visual representation of the text (left-to-right or right-to-left). + */ + public static final int SPAN_POINT_MARK_MASK = 0x33; + + /** + * 0-length spans with type SPAN_MARK_MARK behave like text marks: + * they remain at their original offset when text is inserted + * at that offset. Conceptually, the text is added after the mark. + */ + public static final int SPAN_MARK_MARK = 0x11; + /** + * SPAN_MARK_POINT is a synonym for {@link #SPAN_INCLUSIVE_INCLUSIVE}. + */ + public static final int SPAN_MARK_POINT = 0x12; + /** + * SPAN_POINT_MARK is a synonym for {@link #SPAN_EXCLUSIVE_EXCLUSIVE}. + */ + public static final int SPAN_POINT_MARK = 0x21; + + /** + * 0-length spans with type SPAN_POINT_POINT behave like cursors: + * they are pushed forward by the length of the insertion when text + * is inserted at their offset. + * The text is conceptually inserted before the point. + */ + public static final int SPAN_POINT_POINT = 0x22; + + /** + * SPAN_PARAGRAPH behaves like SPAN_INCLUSIVE_EXCLUSIVE + * (SPAN_MARK_MARK), except that if either end of the span is + * at the end of the buffer, that end behaves like _POINT + * instead (so SPAN_INCLUSIVE_INCLUSIVE if it starts in the + * middle and ends at the end, or SPAN_EXCLUSIVE_INCLUSIVE + * if it both starts and ends at the end). + *

+ * Its endpoints must be the start or end of the buffer or + * immediately after a \n character, and if the \n + * that anchors it is deleted, the endpoint is pulled to the + * next \n that follows in the buffer (or to the end of + * the buffer). + */ + public static final int SPAN_PARAGRAPH = 0x33; + + /** + * Non-0-length spans of type SPAN_INCLUSIVE_EXCLUSIVE expand + * to include text inserted at their starting point but not at their + * ending point. When 0-length, they behave like marks. + */ + public static final int SPAN_INCLUSIVE_EXCLUSIVE = SPAN_MARK_MARK; + + /** + * Spans of type SPAN_INCLUSIVE_INCLUSIVE expand + * to include text inserted at either their starting or ending point. + */ + public static final int SPAN_INCLUSIVE_INCLUSIVE = SPAN_MARK_POINT; + + /** + * Spans of type SPAN_EXCLUSIVE_EXCLUSIVE do not expand + * to include text inserted at either their starting or ending point. + * They can never have a length of 0 and are automatically removed + * from the buffer if all the text they cover is removed. + */ + public static final int SPAN_EXCLUSIVE_EXCLUSIVE = SPAN_POINT_MARK; + + /** + * Non-0-length spans of type SPAN_EXCLUSIVE_INCLUSIVE expand + * to include text inserted at their ending point but not at their + * starting point. When 0-length, they behave like points. + */ + public static final int SPAN_EXCLUSIVE_INCLUSIVE = SPAN_POINT_POINT; + + /** + * This flag is set on spans that are being used to apply temporary + * styling information on the composing text of an input method, so that + * they can be found and removed when the composing text is being + * replaced. + */ + public static final int SPAN_COMPOSING = 0x100; + + /** + * This flag will be set for intermediate span changes, meaning there + * is guaranteed to be another change following it. Typically it is + * used for {@link Selection} which automatically uses this with the first + * offset it sets when updating the selection. + */ + public static final int SPAN_INTERMEDIATE = 0x200; + + /** + * The bits numbered SPAN_USER_SHIFT and above are available + * for callers to use to store scalar data associated with their + * span object. + */ + public static final int SPAN_USER_SHIFT = 24; + /** + * The bits specified by the SPAN_USER bitfield are available + * for callers to use to store scalar data associated with their + * span object. + */ + public static final int SPAN_USER = 0xFFFFFFFF << SPAN_USER_SHIFT; + + /** + * The bits numbered just above SPAN_PRIORITY_SHIFT determine the order + * of change notifications -- higher numbers go first. You probably + * don't need to set this; it is used so that when text changes, the + * text layout gets the chance to update itself before any other + * callbacks can inquire about the layout of the text. + */ + public static final int SPAN_PRIORITY_SHIFT = 16; + /** + * The bits specified by the SPAN_PRIORITY bitmap determine the order + * of change notifications -- higher numbers go first. You probably + * don't need to set this; it is used so that when text changes, the + * text layout gets the chance to update itself before any other + * callbacks can inquire about the layout of the text. + */ + public static final int SPAN_PRIORITY = 0xFF << SPAN_PRIORITY_SHIFT; + + /** + * Return an array of the markup objects attached to the specified + * slice of this CharSequence and whose type is the specified type + * or a subclass of it. Specify Object.class for the type if you + * want all the objects regardless of type. + */ + public T[] getSpans(int start, int end, Class type); + + /** + * Return the beginning of the range of text to which the specified + * markup object is attached, or -1 if the object is not attached. + */ + public int getSpanStart(Object tag); + + /** + * Return the end of the range of text to which the specified + * markup object is attached, or -1 if the object is not attached. + */ + public int getSpanEnd(Object tag); + + /** + * Return the flags that were specified when {@link Spannable#setSpan} was + * used to attach the specified markup object, or 0 if the specified + * object has not been attached. + */ + public int getSpanFlags(Object tag); + + /** + * Return the first offset greater than or equal to start + * where a markup object of class type begins or ends, + * or limit if there are no starts or ends greater than or + * equal to start but less than limit. Specify + * null or Object.class for the type if you want every + * transition regardless of type. + */ + public int nextSpanTransition(int start, int limit, Class type); +} diff --git a/src/api-impl/android/text/SpannedString.java b/src/api-impl/android/text/SpannedString.java new file mode 100644 index 00000000..afed221f --- /dev/null +++ b/src/api-impl/android/text/SpannedString.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + + +/** + * This is the class for text whose content and markup are immutable. + * For mutable markup, see {@link SpannableString}; for mutable text, + * see {@link SpannableStringBuilder}. + */ +public final class SpannedString +extends SpannableStringInternal +implements CharSequence, GetChars, Spanned +{ + public SpannedString(CharSequence source) { + super(source, 0, source.length()); + } + + private SpannedString(CharSequence source, int start, int end) { + super(source, start, end); + } + + public CharSequence subSequence(int start, int end) { + return new SpannedString(this, start, end); + } + + public static SpannedString valueOf(CharSequence source) { + if (source instanceof SpannedString) { + return (SpannedString) source; + } else { + return new SpannedString(source); + } + } +} diff --git a/src/api-impl/android/text/TextPaint.java b/src/api-impl/android/text/TextPaint.java new file mode 100644 index 00000000..9557dbd5 --- /dev/null +++ b/src/api-impl/android/text/TextPaint.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.text; + +import android.graphics.Paint; + +/** + * TextPaint is an extension of Paint that leaves room for some extra + * data used during text measuring and drawing. + */ +public class TextPaint extends Paint { + + // Special value 0 means no background paint + public int bgColor; + public int baselineShift; + public int linkColor; + public int[] drawableState; + public float density = 1.0f; + /** + * Special value 0 means no custom underline + * @hide + */ + public int underlineColor = 0; + /** + * Defined as a multiplier of the default underline thickness. Use 1.0f for default thickness. + * @hide + */ + public float underlineThickness; + + public TextPaint() { + super(); + } + + public TextPaint(int flags) { + super(/*flags*/); + } + + public TextPaint(Paint p) { + super(/*p*/); + } + + /** + * Copy the fields from tp into this TextPaint, including the + * fields inherited from Paint. + */ + public void set(TextPaint tp) { +// super.set(tp); + + bgColor = tp.bgColor; + baselineShift = tp.baselineShift; + linkColor = tp.linkColor; + drawableState = tp.drawableState; + density = tp.density; + underlineColor = tp.underlineColor; + underlineThickness = tp.underlineThickness; + } + + /** + * Defines a custom underline for this Paint. + * @param color underline solid color + * @param thickness underline thickness + * @hide + */ + public void setUnderlineText(int color, float thickness) { + underlineColor = color; + underlineThickness = thickness; + } +} diff --git a/src/api-impl/android/text/TextUtils.java b/src/api-impl/android/text/TextUtils.java new file mode 100644 index 00000000..b3e366b8 --- /dev/null +++ b/src/api-impl/android/text/TextUtils.java @@ -0,0 +1,64 @@ +package android.text; + +import java.util.regex.Pattern; + +public class TextUtils { + // unchanged from android source + + /* split */ + + private static String[] EMPTY_STRING_ARRAY = new String[]{}; + + public static String[] split(String text, String expression) { + if (text.length() == 0) { + return EMPTY_STRING_ARRAY; + } else { + return text.split(expression, -1); + } + } + + public static String[] split(String text, Pattern pattern) { + if (text.length() == 0) { + return EMPTY_STRING_ARRAY; + } else { + return pattern.split(text, -1); + } + } + + /* join */ + + + public static String join(CharSequence delimiter, Object[] tokens) { + StringBuilder sb = new StringBuilder(); + boolean firstTime = true; + for (Object token: tokens) { + if (firstTime) { + firstTime = false; + } else { + sb.append(delimiter); + } + sb.append(token); + } + return sb.toString(); + } + + public static String join(CharSequence delimiter, Iterable tokens) { + StringBuilder sb = new StringBuilder(); + boolean firstTime = true; + for (Object token: tokens) { + if (firstTime) { + firstTime = false; + } else { + sb.append(delimiter); + } + sb.append(token); + } + return sb.toString(); + } + // end of unchanged from android source + + public static CharSequence join(Iterable list) { + final CharSequence delimiter = ","; // ???? + return join(delimiter, list); + } +} diff --git a/src/api-impl/android/text/TextWatcher.java b/src/api-impl/android/text/TextWatcher.java new file mode 100644 index 00000000..4ab52e5c --- /dev/null +++ b/src/api-impl/android/text/TextWatcher.java @@ -0,0 +1,5 @@ +package android.text; + +public interface TextWatcher { + +} diff --git a/src/api-impl/android/text/util/Linkify.java b/src/api-impl/android/text/util/Linkify.java new file mode 100644 index 00000000..aa457ead --- /dev/null +++ b/src/api-impl/android/text/util/Linkify.java @@ -0,0 +1,9 @@ +package android.text.util; + +import android.text.Spannable; +import android.widget.TextView; + +public class Linkify { + public static final boolean addLinks(Spannable text, int mask) { return true; } + public static final boolean addLinks(TextView text, int mask) { return true; } +} diff --git a/src/api-impl/android/util/AndroidException.java b/src/api-impl/android/util/AndroidException.java new file mode 100644 index 00000000..dfe00c9b --- /dev/null +++ b/src/api-impl/android/util/AndroidException.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * Base class for all checked exceptions thrown by the Android frameworks. + */ +public class AndroidException extends Exception { + public AndroidException() { + } + + public AndroidException(String name) { + super(name); + } + + public AndroidException(String name, Throwable cause) { + super(name, cause); + } + + public AndroidException(Exception cause) { + super(cause); + } +}; + diff --git a/src/api-impl/android/util/AndroidRuntimeException.java b/src/api-impl/android/util/AndroidRuntimeException.java new file mode 100644 index 00000000..2b824bf9 --- /dev/null +++ b/src/api-impl/android/util/AndroidRuntimeException.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * Base class for all unchecked exceptions thrown by the Android frameworks. + */ +public class AndroidRuntimeException extends RuntimeException { + public AndroidRuntimeException() { + } + + public AndroidRuntimeException(String name) { + super(name); + } + + public AndroidRuntimeException(String name, Throwable cause) { + super(name, cause); + } + + public AndroidRuntimeException(Exception cause) { + super(cause); + } +}; + diff --git a/src/api-impl/android/util/ArrayMap.java b/src/api-impl/android/util/ArrayMap.java new file mode 100644 index 00000000..df1d4cd7 --- /dev/null +++ b/src/api-impl/android/util/ArrayMap.java @@ -0,0 +1,829 @@ +/* + * 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 android.util; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +/** + * ArrayMap is a generic key->value mapping data structure that is + * designed to be more memory efficient than a traditional {@link java.util.HashMap}. + * It keeps its mappings in an array data structure -- an integer array of hash + * codes for each item, and an Object array of the key/value pairs. This allows it to + * avoid having to create an extra object for every entry put in to the map, and it + * also tries to control the growth of the size of these arrays more aggressively + * (since growing them only requires copying the entries in the array, not rebuilding + * a hash map). + * + *

Note that this implementation is not intended to be appropriate for data structures + * that may contain large numbers of items. It is generally slower than a traditional + * HashMap, since lookups require a binary search and adds and removes require inserting + * and deleting entries in the array. For containers holding up to hundreds of items, + * the performance difference is not significant, less than 50%.

+ * + *

Because this container is intended to better balance memory use, unlike most other + * standard Java containers it will shrink its array as items are removed from it. Currently + * you have no control over this shrinking -- if you set a capacity and then remove an + * item, it may reduce the capacity to better match the current size. In the future an + * explicit call to set the capacity should turn off this aggressive shrinking behavior.

+ */ +public final class ArrayMap implements Map { + private static final boolean DEBUG = false; + private static final String TAG = "ArrayMap"; + + /** + * The minimum amount by which the capacity of a ArrayMap will increase. + * This is tuned to be relatively space-efficient. + */ + private static final int BASE_SIZE = 4; + + /** + * Maximum number of entries to have in array caches. + */ + private static final int CACHE_SIZE = 10; + + /** + * @hide Special immutable empty ArrayMap. + */ + public static final ArrayMap EMPTY = new ArrayMap(true); + + /** + * Caches of small array objects to avoid spamming garbage. The cache + * Object[] variable is a pointer to a linked list of array objects. + * The first entry in the array is a pointer to the next array in the + * list; the second entry is a pointer to the int[] hash code array for it. + */ + static Object[] mBaseCache; + static int mBaseCacheSize; + static Object[] mTwiceBaseCache; + static int mTwiceBaseCacheSize; + + /** + * Special hash array value that indicates the container is immutable. + */ + static final int[] EMPTY_IMMUTABLE_INTS = new int[0]; + + int[] mHashes; + Object[] mArray; + int mSize; + MapCollections mCollections; + + int indexOf(Object key, int hash) { + final int N = mSize; + + // Important fast case: if nothing is in here, nothing to look for. + if (N == 0) { + return ~0; + } + + int index = ContainerHelpers.binarySearch(mHashes, N, hash); + + // If the hash code wasn't found, then we have no entry for this key. + if (index < 0) { + return index; + } + + // If the key at the returned index matches, that's what we want. + if (key.equals(mArray[index<<1])) { + return index; + } + + // Search for a matching key after the index. + int end; + for (end = index + 1; end < N && mHashes[end] == hash; end++) { + if (key.equals(mArray[end << 1])) return end; + } + + // Search for a matching key before the index. + for (int i = index - 1; i >= 0 && mHashes[i] == hash; i--) { + if (key.equals(mArray[i << 1])) return i; + } + + // Key not found -- return negative value indicating where a + // new entry for this key should go. We use the end of the + // hash chain to reduce the number of array entries that will + // need to be copied when inserting. + return ~end; + } + + int indexOfNull() { + final int N = mSize; + + // Important fast case: if nothing is in here, nothing to look for. + if (N == 0) { + return ~0; + } + + int index = ContainerHelpers.binarySearch(mHashes, N, 0); + + // If the hash code wasn't found, then we have no entry for this key. + if (index < 0) { + return index; + } + + // If the key at the returned index matches, that's what we want. + if (null == mArray[index<<1]) { + return index; + } + + // Search for a matching key after the index. + int end; + for (end = index + 1; end < N && mHashes[end] == 0; end++) { + if (null == mArray[end << 1]) return end; + } + + // Search for a matching key before the index. + for (int i = index - 1; i >= 0 && mHashes[i] == 0; i--) { + if (null == mArray[i << 1]) return i; + } + + // Key not found -- return negative value indicating where a + // new entry for this key should go. We use the end of the + // hash chain to reduce the number of array entries that will + // need to be copied when inserting. + return ~end; + } + + private void allocArrays(final int size) { + if (mHashes == EMPTY_IMMUTABLE_INTS) { + throw new UnsupportedOperationException("ArrayMap is immutable"); + } + if (size == (BASE_SIZE*2)) { + synchronized (ArrayMap.class) { + if (mTwiceBaseCache != null) { + final Object[] array = mTwiceBaseCache; + mArray = array; + mTwiceBaseCache = (Object[])array[0]; + mHashes = (int[])array[1]; + array[0] = array[1] = null; + mTwiceBaseCacheSize--; + if (DEBUG) Log.d(TAG, "Retrieving 2x cache " + mHashes + + " now have " + mTwiceBaseCacheSize + " entries"); + return; + } + } + } else if (size == BASE_SIZE) { + synchronized (ArrayMap.class) { + if (mBaseCache != null) { + final Object[] array = mBaseCache; + mArray = array; + mBaseCache = (Object[])array[0]; + mHashes = (int[])array[1]; + array[0] = array[1] = null; + mBaseCacheSize--; + if (DEBUG) Log.d(TAG, "Retrieving 1x cache " + mHashes + + " now have " + mBaseCacheSize + " entries"); + return; + } + } + } + + mHashes = new int[size]; + mArray = new Object[size<<1]; + } + + private static void freeArrays(final int[] hashes, final Object[] array, final int size) { + if (hashes.length == (BASE_SIZE*2)) { + synchronized (ArrayMap.class) { + if (mTwiceBaseCacheSize < CACHE_SIZE) { + array[0] = mTwiceBaseCache; + array[1] = hashes; + for (int i=(size<<1)-1; i>=2; i--) { + array[i] = null; + } + mTwiceBaseCache = array; + mTwiceBaseCacheSize++; + if (DEBUG) Log.d(TAG, "Storing 2x cache " + array + + " now have " + mTwiceBaseCacheSize + " entries"); + } + } + } else if (hashes.length == BASE_SIZE) { + synchronized (ArrayMap.class) { + if (mBaseCacheSize < CACHE_SIZE) { + array[0] = mBaseCache; + array[1] = hashes; + for (int i=(size<<1)-1; i>=2; i--) { + array[i] = null; + } + mBaseCache = array; + mBaseCacheSize++; + if (DEBUG) Log.d(TAG, "Storing 1x cache " + array + + " now have " + mBaseCacheSize + " entries"); + } + } + } + } + + /** + * Create a new empty ArrayMap. The default capacity of an array map is 0, and + * will grow once items are added to it. + */ + public ArrayMap() { + mHashes = ContainerHelpers.EMPTY_INTS; + mArray = ContainerHelpers.EMPTY_OBJECTS; + mSize = 0; + } + + /** + * Create a new ArrayMap with a given initial capacity. + */ + public ArrayMap(int capacity) { + if (capacity == 0) { + mHashes = ContainerHelpers.EMPTY_INTS; + mArray = ContainerHelpers.EMPTY_OBJECTS; + } else { + allocArrays(capacity); + } + mSize = 0; + } + + private ArrayMap(boolean immutable) { + mHashes = EMPTY_IMMUTABLE_INTS; + mArray = ContainerHelpers.EMPTY_OBJECTS; + mSize = 0; + } + + /** + * Create a new ArrayMap with the mappings from the given ArrayMap. + */ + public ArrayMap(ArrayMap map) { + this(); + if (map != null) { + putAll(map); + } + } + + /** + * Make the array map empty. All storage is released. + */ + @Override + public void clear() { + if (mSize > 0) { + freeArrays(mHashes, mArray, mSize); + mHashes = ContainerHelpers.EMPTY_INTS; + mArray = ContainerHelpers.EMPTY_OBJECTS; + mSize = 0; + } + } + + /** + * @hide + * Like {@link #clear}, but doesn't reduce the capacity of the ArrayMap. + */ + public void erase() { + if (mSize > 0) { + final int N = mSize<<1; + final Object[] array = mArray; + for (int i=0; iminimumCapacity + * items. + */ + public void ensureCapacity(int minimumCapacity) { + if (mHashes.length < minimumCapacity) { + final int[] ohashes = mHashes; + final Object[] oarray = mArray; + allocArrays(minimumCapacity); + if (mSize > 0) { + System.arraycopy(ohashes, 0, mHashes, 0, mSize); + System.arraycopy(oarray, 0, mArray, 0, mSize<<1); + } + freeArrays(ohashes, oarray, mSize); + } + } + + /** + * Check whether a key exists in the array. + * + * @param key The key to search for. + * @return Returns true if the key exists, else false. + */ + @Override + public boolean containsKey(Object key) { + return key == null ? (indexOfNull() >= 0) : (indexOf(key, key.hashCode()) >= 0); + } + + int indexOfValue(Object value) { + final int N = mSize*2; + final Object[] array = mArray; + if (value == null) { + for (int i=1; i>1; + } + } + } else { + for (int i=1; i>1; + } + } + } + return -1; + } + + /** + * Check whether a value exists in the array. This requires a linear search + * through the entire array. + * + * @param value The value to search for. + * @return Returns true if the value exists, else false. + */ + @Override + public boolean containsValue(Object value) { + return indexOfValue(value) >= 0; + } + + /** + * Retrieve a value from the array. + * @param key The key of the value to retrieve. + * @return Returns the value associated with the given key, + * or null if there is no such key. + */ + @Override + public V get(Object key) { + final int index = key == null ? indexOfNull() : indexOf(key, key.hashCode()); + return index >= 0 ? (V)mArray[(index<<1)+1] : null; + } + + /** + * Return the key at the given index in the array. + * @param index The desired index, must be between 0 and {@link #size()}-1. + * @return Returns the key stored at the given index. + */ + public K keyAt(int index) { + return (K)mArray[index << 1]; + } + + /** + * Return the value at the given index in the array. + * @param index The desired index, must be between 0 and {@link #size()}-1. + * @return Returns the value stored at the given index. + */ + public V valueAt(int index) { + return (V)mArray[(index << 1) + 1]; + } + + /** + * Set the value at a given index in the array. + * @param index The desired index, must be between 0 and {@link #size()}-1. + * @param value The new value to store at this index. + * @return Returns the previous value at the given index. + */ + public V setValueAt(int index, V value) { + index = (index << 1) + 1; + V old = (V)mArray[index]; + mArray[index] = value; + return old; + } + + /** + * Return true if the array map contains no items. + */ + @Override + public boolean isEmpty() { + return mSize <= 0; + } + + /** + * Add a new value to the array map. + * @param key The key under which to store the value. Must not be null. If + * this key already exists in the array, its value will be replaced. + * @param value The value to store for the given key. + * @return Returns the old value that was stored for the given key, or null if there + * was no such key. + */ + @Override + public V put(K key, V value) { + final int hash; + int index; + if (key == null) { + hash = 0; + index = indexOfNull(); + } else { + hash = key.hashCode(); + index = indexOf(key, hash); + } + if (index >= 0) { + index = (index<<1) + 1; + final V old = (V)mArray[index]; + mArray[index] = value; + return old; + } + + index = ~index; + if (mSize >= mHashes.length) { + final int n = mSize >= (BASE_SIZE*2) ? (mSize+(mSize>>1)) + : (mSize >= BASE_SIZE ? (BASE_SIZE*2) : BASE_SIZE); + + if (DEBUG) Log.d(TAG, "put: grow from " + mHashes.length + " to " + n); + + final int[] ohashes = mHashes; + final Object[] oarray = mArray; + allocArrays(n); + + if (mHashes.length > 0) { + if (DEBUG) Log.d(TAG, "put: copy 0-" + mSize + " to 0"); + System.arraycopy(ohashes, 0, mHashes, 0, ohashes.length); + System.arraycopy(oarray, 0, mArray, 0, oarray.length); + } + + freeArrays(ohashes, oarray, mSize); + } + + if (index < mSize) { + if (DEBUG) Log.d(TAG, "put: move " + index + "-" + (mSize-index) + + " to " + (index+1)); + System.arraycopy(mHashes, index, mHashes, index + 1, mSize - index); + System.arraycopy(mArray, index << 1, mArray, (index + 1) << 1, (mSize - index) << 1); + } + + mHashes[index] = hash; + mArray[index<<1] = key; + mArray[(index<<1)+1] = value; + mSize++; + return null; + } + + /** + * Special fast path for appending items to the end of the array without validation. + * The array must already be large enough to contain the item. + * @hide + */ + public void append(K key, V value) { + int index = mSize; + final int hash = key == null ? 0 : key.hashCode(); + if (index >= mHashes.length) { + throw new IllegalStateException("Array is full"); + } + if (index > 0 && mHashes[index-1] > hash) { + RuntimeException e = new RuntimeException("here"); + e.fillInStackTrace(); + Log.w(TAG, "New hash " + hash + + " is before end of array hash " + mHashes[index-1] + + " at index " + index + " key " + key, e); + put(key, value); + return; + } + mSize = index+1; + mHashes[index] = hash; + index <<= 1; + mArray[index] = key; + mArray[index+1] = value; + } + + /** + * Perform a {@link #put(Object, Object)} of all key/value pairs in array + * @param array The array whose contents are to be retrieved. + */ + public void putAll(ArrayMap array) { + final int N = array.mSize; + ensureCapacity(mSize + N); + if (mSize == 0) { + if (N > 0) { + System.arraycopy(array.mHashes, 0, mHashes, 0, N); + System.arraycopy(array.mArray, 0, mArray, 0, N<<1); + mSize = N; + } + } else { + for (int i=0; i= 0) { + return removeAt(index); + } + + return null; + } + + /** + * Remove the key/value mapping at the given index. + * @param index The desired index, must be between 0 and {@link #size()}-1. + * @return Returns the value that was stored at this index. + */ + public V removeAt(int index) { + final Object old = mArray[(index << 1) + 1]; + if (mSize <= 1) { + // Now empty. + if (DEBUG) Log.d(TAG, "remove: shrink from " + mHashes.length + " to 0"); + freeArrays(mHashes, mArray, mSize); + mHashes = ContainerHelpers.EMPTY_INTS; + mArray = ContainerHelpers.EMPTY_OBJECTS; + mSize = 0; + } else { + if (mHashes.length > (BASE_SIZE*2) && mSize < mHashes.length/3) { + // Shrunk enough to reduce size of arrays. We don't allow it to + // shrink smaller than (BASE_SIZE*2) to avoid flapping between + // that and BASE_SIZE. + final int n = mSize > (BASE_SIZE*2) ? (mSize + (mSize>>1)) : (BASE_SIZE*2); + + if (DEBUG) Log.d(TAG, "remove: shrink from " + mHashes.length + " to " + n); + + final int[] ohashes = mHashes; + final Object[] oarray = mArray; + allocArrays(n); + + mSize--; + if (index > 0) { + if (DEBUG) Log.d(TAG, "remove: copy from 0-" + index + " to 0"); + System.arraycopy(ohashes, 0, mHashes, 0, index); + System.arraycopy(oarray, 0, mArray, 0, index << 1); + } + if (index < mSize) { + if (DEBUG) Log.d(TAG, "remove: copy from " + (index+1) + "-" + mSize + + " to " + index); + System.arraycopy(ohashes, index + 1, mHashes, index, mSize - index); + System.arraycopy(oarray, (index + 1) << 1, mArray, index << 1, + (mSize - index) << 1); + } + } else { + mSize--; + if (index < mSize) { + if (DEBUG) Log.d(TAG, "remove: move " + (index+1) + "-" + mSize + + " to " + index); + System.arraycopy(mHashes, index + 1, mHashes, index, mSize - index); + System.arraycopy(mArray, (index + 1) << 1, mArray, index << 1, + (mSize - index) << 1); + } + mArray[mSize << 1] = null; + mArray[(mSize << 1) + 1] = null; + } + } + return (V)old; + } + + /** + * Return the number of items in this array map. + */ + @Override + public int size() { + return mSize; + } + + /** + * {@inheritDoc} + * + *

This implementation returns false if the object is not a map, or + * if the maps have different sizes. Otherwise, for each key in this map, + * values of both maps are compared. If the values for any key are not + * equal, the method returns false, otherwise it returns true. + */ + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object instanceof Map) { + Map map = (Map) object; + if (size() != map.size()) { + return false; + } + + try { + for (int i=0; iThis implementation composes a string by iterating over its mappings. If + * this map contains itself as a key or a value, the string "(this Map)" + * will appear in its place. + */ + @Override + public String toString() { + if (isEmpty()) { + return "{}"; + } + + StringBuilder buffer = new StringBuilder(mSize * 28); + buffer.append('{'); + for (int i=0; i 0) { + buffer.append(", "); + } + Object key = keyAt(i); + if (key != this) { + buffer.append(key); + } else { + buffer.append("(this Map)"); + } + buffer.append('='); + Object value = valueAt(i); + if (value != this) { + buffer.append(value); + } else { + buffer.append("(this Map)"); + } + } + buffer.append('}'); + return buffer.toString(); + } + + // ------------------------------------------------------------------------ + // Interop with traditional Java containers. Not as efficient as using + // specialized collection APIs. + // ------------------------------------------------------------------------ + + private MapCollections getCollection() { + if (mCollections == null) { + mCollections = new MapCollections() { + @Override + protected int colGetSize() { + return mSize; + } + + @Override + protected Object colGetEntry(int index, int offset) { + return mArray[(index<<1) + offset]; + } + + @Override + protected int colIndexOfKey(Object key) { + return key == null ? indexOfNull() : indexOf(key, key.hashCode()); + } + + @Override + protected int colIndexOfValue(Object value) { + return indexOfValue(value); + } + + @Override + protected Map colGetMap() { + return ArrayMap.this; + } + + @Override + protected void colPut(K key, V value) { + put(key, value); + } + + @Override + protected V colSetValue(int index, V value) { + return setValueAt(index, value); + } + + @Override + protected void colRemoveAt(int index) { + removeAt(index); + } + + @Override + protected void colClear() { + clear(); + } + }; + } + return mCollections; + } + + /** + * Determine if the array map contains all of the keys in the given collection. + * @param collection The collection whose contents are to be checked against. + * @return Returns true if this array map contains a key for every entry + * in collection, else returns false. + */ + public boolean containsAll(Collection collection) { + return MapCollections.containsAllHelper(this, collection); + } + + /** + * Perform a {@link #put(Object, Object)} of all key/value pairs in map + * @param map The map whose contents are to be retrieved. + */ + @Override + public void putAll(Map map) { + ensureCapacity(mSize + map.size()); + for (Map.Entry entry : map.entrySet()) { + put(entry.getKey(), entry.getValue()); + } + } + + /** + * Remove all keys in the array map that exist in the given collection. + * @param collection The collection whose contents are to be used to remove keys. + * @return Returns true if any keys were removed from the array map, else false. + */ + public boolean removeAll(Collection collection) { + return MapCollections.removeAllHelper(this, collection); + } + + /** + * Remove all keys in the array map that do not exist in the given collection. + * @param collection The collection whose contents are to be used to determine which + * keys to keep. + * @return Returns true if any keys were removed from the array map, else false. + */ + public boolean retainAll(Collection collection) { + return MapCollections.retainAllHelper(this, collection); + } + + /** + * Return a {@link java.util.Set} for iterating over and interacting with all mappings + * in the array map. + * + *

Note: this is a very inefficient way to access the array contents, it + * requires generating a number of temporary objects.

+ * + *

Note:

the semantics of this + * Set are subtly different than that of a {@link java.util.HashMap}: most important, + * the {@link java.util.Map.Entry Map.Entry} object returned by its iterator is a single + * object that exists for the entire iterator, so you can not hold on to it + * after calling {@link java.util.Iterator#next() Iterator.next}.

+ */ + @Override + public Set> entrySet() { + return getCollection().getEntrySet(); + } + + /** + * Return a {@link java.util.Set} for iterating over and interacting with all keys + * in the array map. + * + *

Note: this is a fairly inefficient way to access the array contents, it + * requires generating a number of temporary objects.

+ */ + @Override + public Set keySet() { + return getCollection().getKeySet(); + } + + /** + * Return a {@link java.util.Collection} for iterating over and interacting with all values + * in the array map. + * + *

Note: this is a fairly inefficient way to access the array contents, it + * requires generating a number of temporary objects.

+ */ + @Override + public Collection values() { + return getCollection().getValues(); + } +} diff --git a/src/api-impl/android/util/AttributeSet.java b/src/api-impl/android/util/AttributeSet.java new file mode 100644 index 00000000..63f6c57c --- /dev/null +++ b/src/api-impl/android/util/AttributeSet.java @@ -0,0 +1,338 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + + +import org.xmlpull.v1.XmlPullParser; + +/** + * A collection of attributes, as found associated with a tag in an XML + * document. Often you will not want to use this interface directly, instead + * passing it to {@link android.content.res.Resources.Theme#obtainStyledAttributes(AttributeSet, int[], int, int) + * Resources.Theme.obtainStyledAttributes()} + * which will take care of parsing the attributes for you. In particular, + * the Resources API will convert resource references (attribute values such as + * "@string/my_label" in the original XML) to the desired type + * for you; if you use AttributeSet directly then you will need to manually + * check for resource references + * (with {@link #getAttributeResourceValue(int, int)}) and do the resource + * lookup yourself if needed. Direct use of AttributeSet also prevents the + * application of themes and styles when retrieving attribute values. + * + *

This interface provides an efficient mechanism for retrieving + * data from compiled XML files, which can be retrieved for a particular + * XmlPullParser through {@link Xml#asAttributeSet + * Xml.asAttributeSet()}. Normally this will return an implementation + * of the interface that works on top of a generic XmlPullParser, however it + * is more useful in conjunction with compiled XML resources: + * + *

+ * XmlPullParser parser = resources.getXml(myResource);
+ * AttributeSet attributes = Xml.asAttributeSet(parser);
+ * + *

The implementation returned here, unlike using + * the implementation on top of a generic XmlPullParser, + * is highly optimized by retrieving pre-computed information that was + * generated by aapt when compiling your resources. For example, + * the {@link #getAttributeFloatValue(int, float)} method returns a floating + * point number previous stored in the compiled resource instead of parsing + * at runtime the string originally in the XML file. + * + *

This interface also provides additional information contained in the + * compiled XML resource that is not available in a normal XML file, such + * as {@link #getAttributeNameResource(int)} which returns the resource + * identifier associated with a particular XML attribute name. + * + * @see XmlPullParser + */ +public interface AttributeSet { + /** + * Returns the number of attributes available in the set. + * + *

See also {@link XmlPullParser#getAttributeCount XmlPullParser.getAttributeCount()}, + * which this method corresponds to when parsing a compiled XML file.

+ * + * @return A positive integer, or 0 if the set is empty. + */ + public int getAttributeCount(); + + /** + * Returns the namespace of the specified attribute. + * + *

See also {@link XmlPullParser#getAttributeNamespace XmlPullParser.getAttributeNamespace()}, + * which this method corresponds to when parsing a compiled XML file.

+ * + * @param index Index of the desired attribute, 0...count-1. + * + * @return A String containing the namespace of the attribute, or null if th + * attribute cannot be found. + */ + /* default */ String getAttributeNamespace (int index);/* { + // This is a new method since the first interface definition, so add stub impl. + return null; + }*/ + + /** + * Returns the name of the specified attribute. + * + *

See also {@link XmlPullParser#getAttributeName XmlPullParser.getAttributeName()}, + * which this method corresponds to when parsing a compiled XML file.

+ * + * @param index Index of the desired attribute, 0...count-1. + * + * @return A String containing the name of the attribute, or null if the + * attribute cannot be found. + */ + public String getAttributeName(int index); + + /** + * Returns the value of the specified attribute as a string representation. + * + * @param index Index of the desired attribute, 0...count-1. + * + * @return A String containing the value of the attribute, or null if the + * attribute cannot be found. + */ + public String getAttributeValue(int index); + + /** + * Returns the value of the specified attribute as a string representation. + * The lookup is performed using the attribute name. + * + * @param namespace The namespace of the attribute to get the value from. + * @param name The name of the attribute to get the value from. + * + * @return A String containing the value of the attribute, or null if the + * attribute cannot be found. + */ + public String getAttributeValue(String namespace, String name); + + /** + * Returns a description of the current position of the attribute set. + * For instance, if the attribute set is loaded from an XML document, + * the position description could indicate the current line number. + * + * @return A string representation of the current position in the set, + * may be null. + */ + public String getPositionDescription(); + + /** + * Return the resource ID associated with the given attribute name. This + * will be the identifier for an attribute resource, which can be used by + * styles. Returns 0 if there is no resource associated with this + * attribute. + * + *

Note that this is different than {@link #getAttributeResourceValue} + * in that it returns a resource identifier for the attribute name; the + * other method returns this attribute's value as a resource identifier. + * + * @param index Index of the desired attribute, 0...count-1. + * + * @return The resource identifier, 0 if none. + */ + public int getAttributeNameResource(int index); + + /** + * Return the index of the value of 'attribute' in the list 'options'. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute Name of attribute to retrieve. + * @param options List of strings whose values we are checking against. + * @param defaultValue Value returned if attribute doesn't exist or no + * match is found. + * + * @return Index in to 'options' or defaultValue. + */ + public int getAttributeListValue(String namespace, String attribute, + String[] options, int defaultValue); + + /** + * Return the boolean value of 'attribute'. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute The attribute to retrieve. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public boolean getAttributeBooleanValue(String namespace, String attribute, + boolean defaultValue); + + /** + * Return the value of 'attribute' as a resource identifier. + * + *

Note that this is different than {@link #getAttributeNameResource} + * in that it returns the value contained in this attribute as a + * resource identifier (i.e., a value originally of the form + * "@package:type/resource"); the other method returns a resource + * identifier that identifies the name of the attribute. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute The attribute to retrieve. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeResourceValue(String namespace, String attribute, + int defaultValue); + + /** + * Return the integer value of 'attribute'. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute The attribute to retrieve. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeIntValue(String namespace, String attribute, + int defaultValue); + + /** + * Return the boolean value of 'attribute' that is formatted as an + * unsigned value. In particular, the formats 0xn...n and #n...n are + * handled. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute The attribute to retrieve. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeUnsignedIntValue(String namespace, String attribute, + int defaultValue); + + /** + * Return the float value of 'attribute'. + * + * @param namespace Namespace of attribute to retrieve. + * @param attribute The attribute to retrieve. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public float getAttributeFloatValue(String namespace, String attribute, + float defaultValue); + + /** + * Return the index of the value of attribute at 'index' in the list + * 'options'. + * + * @param index Index of the desired attribute, 0...count-1. + * @param options List of strings whose values we are checking against. + * @param defaultValue Value returned if attribute doesn't exist or no + * match is found. + * + * @return Index in to 'options' or defaultValue. + */ + public int getAttributeListValue(int index, String[] options, int defaultValue); + + /** + * Return the boolean value of attribute at 'index'. + * + * @param index Index of the desired attribute, 0...count-1. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public boolean getAttributeBooleanValue(int index, boolean defaultValue); + + /** + * Return the value of attribute at 'index' as a resource identifier. + * + *

Note that this is different than {@link #getAttributeNameResource} + * in that it returns the value contained in this attribute as a + * resource identifier (i.e., a value originally of the form + * "@package:type/resource"); the other method returns a resource + * identifier that identifies the name of the attribute. + * + * @param index Index of the desired attribute, 0...count-1. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeResourceValue(int index, int defaultValue); + + /** + * Return the integer value of attribute at 'index'. + * + * @param index Index of the desired attribute, 0...count-1. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeIntValue(int index, int defaultValue); + + /** + * Return the integer value of attribute at 'index' that is formatted as an + * unsigned value. In particular, the formats 0xn...n and #n...n are + * handled. + * + * @param index Index of the desired attribute, 0...count-1. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public int getAttributeUnsignedIntValue(int index, int defaultValue); + + /** + * Return the float value of attribute at 'index'. + * + * @param index Index of the desired attribute, 0...count-1. + * @param defaultValue What to return if the attribute isn't found. + * + * @return Resulting value. + */ + public float getAttributeFloatValue(int index, float defaultValue); + + /** + * Return the value of the "id" attribute or null if there is not one. + * Equivalent to getAttributeValue(null, "id"). + * + * @return The id attribute's value or null. + */ + public String getIdAttribute(); + + /** + * Return the value of the "class" attribute or null if there is not one. + * Equivalent to getAttributeValue(null, "class"). + * + * @return The class attribute's value or null. + */ + public String getClassAttribute(); + + /** + * Return the integer value of the "id" attribute or defaultValue if there + * is none. + * Equivalent to getAttributeResourceValue(null, "id", defaultValue); + * + * @param defaultValue What to return if the "id" attribute isn't found. + * @return int Resulting value. + */ + public int getIdAttributeResourceValue(int defaultValue); + + /** + + * Return the value of the "style" attribute or 0 if there is not one. + * Equivalent to getAttributeResourceValue(null, "style"). + * + * @return The style attribute's resource identifier or 0. + */ + public int getStyleAttribute(); +} + diff --git a/src/api-impl/android/util/Base64.java b/src/api-impl/android/util/Base64.java new file mode 100644 index 00000000..1f2a5a7c --- /dev/null +++ b/src/api-impl/android/util/Base64.java @@ -0,0 +1,741 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.UnsupportedEncodingException; + +/** + * Utilities for encoding and decoding the Base64 representation of + * binary data. See RFCs 2045 and 3548. + */ +public class Base64 { + /** + * Default values for encoder/decoder flags. + */ + public static final int DEFAULT = 0; + + /** + * Encoder flag bit to omit the padding '=' characters at the end + * of the output (if any). + */ + public static final int NO_PADDING = 1; + + /** + * Encoder flag bit to omit all line terminators (i.e., the output + * will be on one long line). + */ + public static final int NO_WRAP = 2; + + /** + * Encoder flag bit to indicate lines should be terminated with a + * CRLF pair instead of just an LF. Has no effect if {@code + * NO_WRAP} is specified as well. + */ + public static final int CRLF = 4; + + /** + * Encoder/decoder flag bit to indicate using the "URL and + * filename safe" variant of Base64 (see RFC 3548 section 4) where + * {@code -} and {@code _} are used in place of {@code +} and + * {@code /}. + */ + public static final int URL_SAFE = 8; + + /** + * Flag to pass to {@link Base64OutputStream} to indicate that it + * should not close the output stream it is wrapping when it + * itself is closed. + */ + public static final int NO_CLOSE = 16; + + // -------------------------------------------------------- + // shared code + // -------------------------------------------------------- + + /* package */ static abstract class Coder { + public byte[] output; + public int op; + + /** + * Encode/decode another block of input data. this.output is + * provided by the caller, and must be big enough to hold all + * the coded data. On exit, this.opwill be set to the length + * of the coded data. + * + * @param finish true if this is the final call to process for + * this object. Will finalize the coder state and + * include any final bytes in the output. + * + * @return true if the input so far is good; false if some + * error has been detected in the input stream.. + */ + public abstract boolean process(byte[] input, int offset, int len, boolean finish); + + /** + * @return the maximum number of bytes a call to process() + * could produce for the given number of input bytes. This may + * be an overestimate. + */ + public abstract int maxOutputSize(int len); + } + + // -------------------------------------------------------- + // decoding + // -------------------------------------------------------- + + /** + * Decode the Base64-encoded data in input and return the data in + * a new byte array. + * + *

The padding '=' characters at the end are considered optional, but + * if any are present, there must be the correct number of them. + * + * @param str the input String to decode, which is converted to + * bytes using the default charset + * @param flags controls certain features of the decoded output. + * Pass {@code DEFAULT} to decode standard Base64. + * + * @throws IllegalArgumentException if the input contains + * incorrect padding + */ + public static byte[] decode(String str, int flags) { + return decode(str.getBytes(), flags); + } + + /** + * Decode the Base64-encoded data in input and return the data in + * a new byte array. + * + *

The padding '=' characters at the end are considered optional, but + * if any are present, there must be the correct number of them. + * + * @param input the input array to decode + * @param flags controls certain features of the decoded output. + * Pass {@code DEFAULT} to decode standard Base64. + * + * @throws IllegalArgumentException if the input contains + * incorrect padding + */ + public static byte[] decode(byte[] input, int flags) { + return decode(input, 0, input.length, flags); + } + + /** + * Decode the Base64-encoded data in input and return the data in + * a new byte array. + * + *

The padding '=' characters at the end are considered optional, but + * if any are present, there must be the correct number of them. + * + * @param input the data to decode + * @param offset the position within the input array at which to start + * @param len the number of bytes of input to decode + * @param flags controls certain features of the decoded output. + * Pass {@code DEFAULT} to decode standard Base64. + * + * @throws IllegalArgumentException if the input contains + * incorrect padding + */ + public static byte[] decode(byte[] input, int offset, int len, int flags) { + // Allocate space for the most data the input could represent. + // (It could contain less if it contains whitespace, etc.) + Decoder decoder = new Decoder(flags, new byte[len*3/4]); + + if (!decoder.process(input, offset, len, true)) { + throw new IllegalArgumentException("bad base-64"); + } + + // Maybe we got lucky and allocated exactly enough output space. + if (decoder.op == decoder.output.length) { + return decoder.output; + } + + // Need to shorten the array, so allocate a new one of the + // right size and copy. + byte[] temp = new byte[decoder.op]; + System.arraycopy(decoder.output, 0, temp, 0, decoder.op); + return temp; + } + + /* package */ static class Decoder extends Coder { + /** + * Lookup table for turning bytes into their position in the + * Base64 alphabet. + */ + private static final int DECODE[] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }; + + /** + * Decode lookup table for the "web safe" variant (RFC 3548 + * sec. 4) where - and _ replace + and /. + */ + private static final int DECODE_WEBSAFE[] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + }; + + /** Non-data values in the DECODE arrays. */ + private static final int SKIP = -1; + private static final int EQUALS = -2; + + /** + * States 0-3 are reading through the next input tuple. + * State 4 is having read one '=' and expecting exactly + * one more. + * State 5 is expecting no more data or padding characters + * in the input. + * State 6 is the error state; an error has been detected + * in the input and no future input can "fix" it. + */ + private int state; // state number (0 to 6) + private int value; + + final private int[] alphabet; + + public Decoder(int flags, byte[] output) { + this.output = output; + + alphabet = ((flags & URL_SAFE) == 0) ? DECODE : DECODE_WEBSAFE; + state = 0; + value = 0; + } + + /** + * @return an overestimate for the number of bytes {@code + * len} bytes could decode to. + */ + public int maxOutputSize(int len) { + return len * 3/4 + 10; + } + + /** + * Decode another block of input data. + * + * @return true if the state machine is still healthy. false if + * bad base-64 data has been detected in the input stream. + */ + public boolean process(byte[] input, int offset, int len, boolean finish) { + if (this.state == 6) return false; + + int p = offset; + len += offset; + + // Using local variables makes the decoder about 12% + // faster than if we manipulate the member variables in + // the loop. (Even alphabet makes a measurable + // difference, which is somewhat surprising to me since + // the member variable is final.) + int state = this.state; + int value = this.value; + int op = 0; + final byte[] output = this.output; + final int[] alphabet = this.alphabet; + + while (p < len) { + // Try the fast path: we're starting a new tuple and the + // next four bytes of the input stream are all data + // bytes. This corresponds to going through states + // 0-1-2-3-0. We expect to use this method for most of + // the data. + // + // If any of the next four bytes of input are non-data + // (whitespace, etc.), value will end up negative. (All + // the non-data values in decode are small negative + // numbers, so shifting any of them up and or'ing them + // together will result in a value with its top bit set.) + // + // You can remove this whole block and the output should + // be the same, just slower. + if (state == 0) { + while (p+4 <= len && + (value = ((alphabet[input[p] & 0xff] << 18) | + (alphabet[input[p+1] & 0xff] << 12) | + (alphabet[input[p+2] & 0xff] << 6) | + (alphabet[input[p+3] & 0xff]))) >= 0) { + output[op+2] = (byte) value; + output[op+1] = (byte) (value >> 8); + output[op] = (byte) (value >> 16); + op += 3; + p += 4; + } + if (p >= len) break; + } + + // The fast path isn't available -- either we've read a + // partial tuple, or the next four input bytes aren't all + // data, or whatever. Fall back to the slower state + // machine implementation. + + int d = alphabet[input[p++] & 0xff]; + + switch (state) { + case 0: + if (d >= 0) { + value = d; + ++state; + } else if (d != SKIP) { + this.state = 6; + return false; + } + break; + + case 1: + if (d >= 0) { + value = (value << 6) | d; + ++state; + } else if (d != SKIP) { + this.state = 6; + return false; + } + break; + + case 2: + if (d >= 0) { + value = (value << 6) | d; + ++state; + } else if (d == EQUALS) { + // Emit the last (partial) output tuple; + // expect exactly one more padding character. + output[op++] = (byte) (value >> 4); + state = 4; + } else if (d != SKIP) { + this.state = 6; + return false; + } + break; + + case 3: + if (d >= 0) { + // Emit the output triple and return to state 0. + value = (value << 6) | d; + output[op+2] = (byte) value; + output[op+1] = (byte) (value >> 8); + output[op] = (byte) (value >> 16); + op += 3; + state = 0; + } else if (d == EQUALS) { + // Emit the last (partial) output tuple; + // expect no further data or padding characters. + output[op+1] = (byte) (value >> 2); + output[op] = (byte) (value >> 10); + op += 2; + state = 5; + } else if (d != SKIP) { + this.state = 6; + return false; + } + break; + + case 4: + if (d == EQUALS) { + ++state; + } else if (d != SKIP) { + this.state = 6; + return false; + } + break; + + case 5: + if (d != SKIP) { + this.state = 6; + return false; + } + break; + } + } + + if (!finish) { + // We're out of input, but a future call could provide + // more. + this.state = state; + this.value = value; + this.op = op; + return true; + } + + // Done reading input. Now figure out where we are left in + // the state machine and finish up. + + switch (state) { + case 0: + // Output length is a multiple of three. Fine. + break; + case 1: + // Read one extra input byte, which isn't enough to + // make another output byte. Illegal. + this.state = 6; + return false; + case 2: + // Read two extra input bytes, enough to emit 1 more + // output byte. Fine. + output[op++] = (byte) (value >> 4); + break; + case 3: + // Read three extra input bytes, enough to emit 2 more + // output bytes. Fine. + output[op++] = (byte) (value >> 10); + output[op++] = (byte) (value >> 2); + break; + case 4: + // Read one padding '=' when we expected 2. Illegal. + this.state = 6; + return false; + case 5: + // Read all the padding '='s we expected and no more. + // Fine. + break; + } + + this.state = state; + this.op = op; + return true; + } + } + + // -------------------------------------------------------- + // encoding + // -------------------------------------------------------- + + /** + * Base64-encode the given data and return a newly allocated + * String with the result. + * + * @param input the data to encode + * @param flags controls certain features of the encoded output. + * Passing {@code DEFAULT} results in output that + * adheres to RFC 2045. + */ + public static String encodeToString(byte[] input, int flags) { + try { + return new String(encode(input, flags), "US-ASCII"); + } catch (UnsupportedEncodingException e) { + // US-ASCII is guaranteed to be available. + throw new AssertionError(e); + } + } + + /** + * Base64-encode the given data and return a newly allocated + * String with the result. + * + * @param input the data to encode + * @param offset the position within the input array at which to + * start + * @param len the number of bytes of input to encode + * @param flags controls certain features of the encoded output. + * Passing {@code DEFAULT} results in output that + * adheres to RFC 2045. + */ + public static String encodeToString(byte[] input, int offset, int len, int flags) { + try { + return new String(encode(input, offset, len, flags), "US-ASCII"); + } catch (UnsupportedEncodingException e) { + // US-ASCII is guaranteed to be available. + throw new AssertionError(e); + } + } + + /** + * Base64-encode the given data and return a newly allocated + * byte[] with the result. + * + * @param input the data to encode + * @param flags controls certain features of the encoded output. + * Passing {@code DEFAULT} results in output that + * adheres to RFC 2045. + */ + public static byte[] encode(byte[] input, int flags) { + return encode(input, 0, input.length, flags); + } + + /** + * Base64-encode the given data and return a newly allocated + * byte[] with the result. + * + * @param input the data to encode + * @param offset the position within the input array at which to + * start + * @param len the number of bytes of input to encode + * @param flags controls certain features of the encoded output. + * Passing {@code DEFAULT} results in output that + * adheres to RFC 2045. + */ + public static byte[] encode(byte[] input, int offset, int len, int flags) { + Encoder encoder = new Encoder(flags, null); + + // Compute the exact length of the array we will produce. + int output_len = len / 3 * 4; + + // Account for the tail of the data and the padding bytes, if any. + if (encoder.do_padding) { + if (len % 3 > 0) { + output_len += 4; + } + } else { + switch (len % 3) { + case 0: break; + case 1: output_len += 2; break; + case 2: output_len += 3; break; + } + } + + // Account for the newlines, if any. + if (encoder.do_newline && len > 0) { + output_len += (((len-1) / (3 * Encoder.LINE_GROUPS)) + 1) * + (encoder.do_cr ? 2 : 1); + } + + encoder.output = new byte[output_len]; + encoder.process(input, offset, len, true); + + assert encoder.op == output_len; + + return encoder.output; + } + + /* package */ static class Encoder extends Coder { + /** + * Emit a new line every this many output tuples. Corresponds to + * a 76-character line length (the maximum allowable according to + * RFC 2045). + */ + public static final int LINE_GROUPS = 19; + + /** + * Lookup table for turning Base64 alphabet positions (6 bits) + * into output bytes. + */ + private static final byte ENCODE[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', + }; + + /** + * Lookup table for turning Base64 alphabet positions (6 bits) + * into output bytes. + */ + private static final byte ENCODE_WEBSAFE[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', + }; + + final private byte[] tail; + /* package */ int tailLen; + private int count; + + final public boolean do_padding; + final public boolean do_newline; + final public boolean do_cr; + final private byte[] alphabet; + + public Encoder(int flags, byte[] output) { + this.output = output; + + do_padding = (flags & NO_PADDING) == 0; + do_newline = (flags & NO_WRAP) == 0; + do_cr = (flags & CRLF) != 0; + alphabet = ((flags & URL_SAFE) == 0) ? ENCODE : ENCODE_WEBSAFE; + + tail = new byte[2]; + tailLen = 0; + + count = do_newline ? LINE_GROUPS : -1; + } + + /** + * @return an overestimate for the number of bytes {@code + * len} bytes could encode to. + */ + public int maxOutputSize(int len) { + return len * 8/5 + 10; + } + + public boolean process(byte[] input, int offset, int len, boolean finish) { + // Using local variables makes the encoder about 9% faster. + final byte[] alphabet = this.alphabet; + final byte[] output = this.output; + int op = 0; + int count = this.count; + + int p = offset; + len += offset; + int v = -1; + + // First we need to concatenate the tail of the previous call + // with any input bytes available now and see if we can empty + // the tail. + + switch (tailLen) { + case 0: + // There was no tail. + break; + + case 1: + if (p+2 <= len) { + // A 1-byte tail with at least 2 bytes of + // input available now. + v = ((tail[0] & 0xff) << 16) | + ((input[p++] & 0xff) << 8) | + (input[p++] & 0xff); + tailLen = 0; + }; + break; + + case 2: + if (p+1 <= len) { + // A 2-byte tail with at least 1 byte of input. + v = ((tail[0] & 0xff) << 16) | + ((tail[1] & 0xff) << 8) | + (input[p++] & 0xff); + tailLen = 0; + } + break; + } + + if (v != -1) { + output[op++] = alphabet[(v >> 18) & 0x3f]; + output[op++] = alphabet[(v >> 12) & 0x3f]; + output[op++] = alphabet[(v >> 6) & 0x3f]; + output[op++] = alphabet[v & 0x3f]; + if (--count == 0) { + if (do_cr) output[op++] = '\r'; + output[op++] = '\n'; + count = LINE_GROUPS; + } + } + + // At this point either there is no tail, or there are fewer + // than 3 bytes of input available. + + // The main loop, turning 3 input bytes into 4 output bytes on + // each iteration. + while (p+3 <= len) { + v = ((input[p] & 0xff) << 16) | + ((input[p+1] & 0xff) << 8) | + (input[p+2] & 0xff); + output[op] = alphabet[(v >> 18) & 0x3f]; + output[op+1] = alphabet[(v >> 12) & 0x3f]; + output[op+2] = alphabet[(v >> 6) & 0x3f]; + output[op+3] = alphabet[v & 0x3f]; + p += 3; + op += 4; + if (--count == 0) { + if (do_cr) output[op++] = '\r'; + output[op++] = '\n'; + count = LINE_GROUPS; + } + } + + if (finish) { + // Finish up the tail of the input. Note that we need to + // consume any bytes in tail before any bytes + // remaining in input; there should be at most two bytes + // total. + + if (p-tailLen == len-1) { + int t = 0; + v = ((tailLen > 0 ? tail[t++] : input[p++]) & 0xff) << 4; + tailLen -= t; + output[op++] = alphabet[(v >> 6) & 0x3f]; + output[op++] = alphabet[v & 0x3f]; + if (do_padding) { + output[op++] = '='; + output[op++] = '='; + } + if (do_newline) { + if (do_cr) output[op++] = '\r'; + output[op++] = '\n'; + } + } else if (p-tailLen == len-2) { + int t = 0; + v = (((tailLen > 1 ? tail[t++] : input[p++]) & 0xff) << 10) | + (((tailLen > 0 ? tail[t++] : input[p++]) & 0xff) << 2); + tailLen -= t; + output[op++] = alphabet[(v >> 12) & 0x3f]; + output[op++] = alphabet[(v >> 6) & 0x3f]; + output[op++] = alphabet[v & 0x3f]; + if (do_padding) { + output[op++] = '='; + } + if (do_newline) { + if (do_cr) output[op++] = '\r'; + output[op++] = '\n'; + } + } else if (do_newline && op > 0 && count != LINE_GROUPS) { + if (do_cr) output[op++] = '\r'; + output[op++] = '\n'; + } + + assert tailLen == 0; + assert p == len; + } else { + // Save the leftovers in tail to be consumed on the next + // call to encodeInternal. + + if (p == len-1) { + tail[tailLen++] = input[p]; + } else if (p == len-2) { + tail[tailLen++] = input[p]; + tail[tailLen++] = input[p+1]; + } + } + + this.op = op; + this.count = count; + + return true; + } + } + + private Base64() { } // don't instantiate +} diff --git a/src/api-impl/android/util/Base64DataException.java b/src/api-impl/android/util/Base64DataException.java new file mode 100644 index 00000000..de12ee1c --- /dev/null +++ b/src/api-impl/android/util/Base64DataException.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.IOException; + +/** + * This exception is thrown by {@link Base64InputStream} or {@link Base64OutputStream} + * when an error is detected in the data being decoded. This allows problems with the base64 data + * to be disambiguated from errors in the underlying streams (e.g. actual connection errors.) + */ +public class Base64DataException extends IOException { + public Base64DataException(String detailMessage) { + super(detailMessage); + } +} diff --git a/src/api-impl/android/util/Base64InputStream.java b/src/api-impl/android/util/Base64InputStream.java new file mode 100644 index 00000000..9eba5b58 --- /dev/null +++ b/src/api-impl/android/util/Base64InputStream.java @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * An InputStream that does Base64 decoding on the data read through + * it. + */ +public class Base64InputStream extends FilterInputStream { + private final Base64.Coder coder; + + private static byte[] EMPTY = new byte[0]; + + private static final int BUFFER_SIZE = 2048; + private boolean eof; + private byte[] inputBuffer; + private int outputStart; + private int outputEnd; + + /** + * An InputStream that performs Base64 decoding on the data read + * from the wrapped stream. + * + * @param in the InputStream to read the source data from + * @param flags bit flags for controlling the decoder; see the + * constants in {@link Base64} + */ + public Base64InputStream(InputStream in, int flags) { + this(in, flags, false); + } + + /** + * Performs Base64 encoding or decoding on the data read from the + * wrapped InputStream. + * + * @param in the InputStream to read the source data from + * @param flags bit flags for controlling the decoder; see the + * constants in {@link Base64} + * @param encode true to encode, false to decode + * + * @hide + */ + public Base64InputStream(InputStream in, int flags, boolean encode) { + super(in); + eof = false; + inputBuffer = new byte[BUFFER_SIZE]; + if (encode) { + coder = new Base64.Encoder(flags, null); + } else { + coder = new Base64.Decoder(flags, null); + } + coder.output = new byte[coder.maxOutputSize(BUFFER_SIZE)]; + outputStart = 0; + outputEnd = 0; + } + + public boolean markSupported() { + return false; + } + + public void mark(int readlimit) { + throw new UnsupportedOperationException(); + } + + public void reset() { + throw new UnsupportedOperationException(); + } + + public void close() throws IOException { + in.close(); + inputBuffer = null; + } + + public int available() { + return outputEnd - outputStart; + } + + public long skip(long n) throws IOException { + if (outputStart >= outputEnd) { + refill(); + } + if (outputStart >= outputEnd) { + return 0; + } + long bytes = Math.min(n, outputEnd-outputStart); + outputStart += bytes; + return bytes; + } + + public int read() throws IOException { + if (outputStart >= outputEnd) { + refill(); + } + if (outputStart >= outputEnd) { + return -1; + } else { + return coder.output[outputStart++] & 0xff; + } + } + + public int read(byte[] b, int off, int len) throws IOException { + if (outputStart >= outputEnd) { + refill(); + } + if (outputStart >= outputEnd) { + return -1; + } + int bytes = Math.min(len, outputEnd-outputStart); + System.arraycopy(coder.output, outputStart, b, off, bytes); + outputStart += bytes; + return bytes; + } + + /** + * Read data from the input stream into inputBuffer, then + * decode/encode it into the empty coder.output, and reset the + * outputStart and outputEnd pointers. + */ + private void refill() throws IOException { + if (eof) return; + int bytesRead = in.read(inputBuffer); + boolean success; + if (bytesRead == -1) { + eof = true; + success = coder.process(EMPTY, 0, 0, true); + } else { + success = coder.process(inputBuffer, 0, bytesRead, false); + } + if (!success) { + throw new Base64DataException("bad base-64"); + } + outputEnd = coder.op; + outputStart = 0; + } +} diff --git a/src/api-impl/android/util/Base64OutputStream.java b/src/api-impl/android/util/Base64OutputStream.java new file mode 100644 index 00000000..4535d1ce --- /dev/null +++ b/src/api-impl/android/util/Base64OutputStream.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +/** + * An OutputStream that does Base64 encoding on the data written to + * it, writing the resulting data to another OutputStream. + */ +public class Base64OutputStream extends FilterOutputStream { + private final Base64.Coder coder; + private final int flags; + + private byte[] buffer = null; + private int bpos = 0; + + private static byte[] EMPTY = new byte[0]; + + /** + * Performs Base64 encoding on the data written to the stream, + * writing the encoded data to another OutputStream. + * + * @param out the OutputStream to write the encoded data to + * @param flags bit flags for controlling the encoder; see the + * constants in {@link Base64} + */ + public Base64OutputStream(OutputStream out, int flags) { + this(out, flags, true); + } + + /** + * Performs Base64 encoding or decoding on the data written to the + * stream, writing the encoded/decoded data to another + * OutputStream. + * + * @param out the OutputStream to write the encoded data to + * @param flags bit flags for controlling the encoder; see the + * constants in {@link Base64} + * @param encode true to encode, false to decode + * + * @hide + */ + public Base64OutputStream(OutputStream out, int flags, boolean encode) { + super(out); + this.flags = flags; + if (encode) { + coder = new Base64.Encoder(flags, null); + } else { + coder = new Base64.Decoder(flags, null); + } + } + + public void write(int b) throws IOException { + // To avoid invoking the encoder/decoder routines for single + // bytes, we buffer up calls to write(int) in an internal + // byte array to transform them into writes of decently-sized + // arrays. + + if (buffer == null) { + buffer = new byte[1024]; + } + if (bpos >= buffer.length) { + // internal buffer full; write it out. + internalWrite(buffer, 0, bpos, false); + bpos = 0; + } + buffer[bpos++] = (byte) b; + } + + /** + * Flush any buffered data from calls to write(int). Needed + * before doing a write(byte[], int, int) or a close(). + */ + private void flushBuffer() throws IOException { + if (bpos > 0) { + internalWrite(buffer, 0, bpos, false); + bpos = 0; + } + } + + public void write(byte[] b, int off, int len) throws IOException { + if (len <= 0) return; + flushBuffer(); + internalWrite(b, off, len, false); + } + + public void close() throws IOException { + IOException thrown = null; + try { + flushBuffer(); + internalWrite(EMPTY, 0, 0, true); + } catch (IOException e) { + thrown = e; + } + + try { + if ((flags & Base64.NO_CLOSE) == 0) { + out.close(); + } else { + out.flush(); + } + } catch (IOException e) { + if (thrown != null) { + thrown = e; + } + } + + if (thrown != null) { + throw thrown; + } + } + + /** + * Write the given bytes to the encoder/decoder. + * + * @param finish true if this is the last batch of input, to cause + * encoder/decoder state to be finalized. + */ + private void internalWrite(byte[] b, int off, int len, boolean finish) throws IOException { + coder.output = embiggen(coder.output, coder.maxOutputSize(len)); + if (!coder.process(b, off, len, finish)) { + throw new Base64DataException("bad base-64"); + } + out.write(coder.output, 0, coder.op); + } + + /** + * If b.length is at least len, return b. Otherwise return a new + * byte array of length len. + */ + private byte[] embiggen(byte[] b, int len) { + if (b == null || b.length < len) { + return new byte[len]; + } else { + return b; + } + } +} diff --git a/src/api-impl/android/util/ContainerHelpers.java b/src/api-impl/android/util/ContainerHelpers.java new file mode 100644 index 00000000..624c4bdf --- /dev/null +++ b/src/api-impl/android/util/ContainerHelpers.java @@ -0,0 +1,63 @@ +/* + * 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 android.util; + +class ContainerHelpers { + static final boolean[] EMPTY_BOOLEANS = new boolean[0]; + static final int[] EMPTY_INTS = new int[0]; + static final long[] EMPTY_LONGS = new long[0]; + static final Object[] EMPTY_OBJECTS = new Object[0]; + + // This is Arrays.binarySearch(), but doesn't do any argument validation. + static int binarySearch(int[] array, int size, int value) { + int lo = 0; + int hi = size - 1; + + while (lo <= hi) { + final int mid = (lo + hi) >>> 1; + final int midVal = array[mid]; + + if (midVal < value) { + lo = mid + 1; + } else if (midVal > value) { + hi = mid - 1; + } else { + return mid; // value found + } + } + return ~lo; // value not present + } + + static int binarySearch(long[] array, int size, long value) { + int lo = 0; + int hi = size - 1; + + while (lo <= hi) { + final int mid = (lo + hi) >>> 1; + final long midVal = array[mid]; + + if (midVal < value) { + lo = mid + 1; + } else if (midVal > value) { + hi = mid - 1; + } else { + return mid; // value found + } + } + return ~lo; // value not present + } +} diff --git a/src/api-impl/android/util/DecompiledXmlResourceParser.java b/src/api-impl/android/util/DecompiledXmlResourceParser.java new file mode 100644 index 00000000..4d42e8b9 --- /dev/null +++ b/src/api-impl/android/util/DecompiledXmlResourceParser.java @@ -0,0 +1,127 @@ +package android.util; + +import org.xmlpull.v1.XmlPullParser; +import org.kxml2.io.KXmlParser; + +import com.android.internal.util.XmlUtils; + +import android.util.AttributeSet; + +public class DecompiledXmlResourceParser extends KXmlParser implements AttributeSet, AutoCloseable { + public int getAttributeCount() { + return this.getAttributeCount(); + } + + public String getAttributeNamespace (int index) { + return this.getAttributeNamespace(index); + } + + public String getAttributeName(int index) { + return this.getAttributeName(index); + } + + public String getAttributeValue(int index) { + return this.getAttributeValue(index); + } + + public String getAttributeValue(String namespace, String name) { + return this.getAttributeValue(namespace, name); + } + + public String getPositionDescription() { + return this.getPositionDescription(); + } + + public int getAttributeNameResource(int index) { + return 0; + } + + public int getAttributeListValue(String namespace, String attribute, + String[] options, int defaultValue) { + return XmlUtils.convertValueToList( + getAttributeValue(namespace, attribute), options, defaultValue); + } + + public boolean getAttributeBooleanValue(String namespace, String attribute, + boolean defaultValue) { + return XmlUtils.convertValueToBoolean( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeResourceValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeIntValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeUnsignedIntValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToUnsignedInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public float getAttributeFloatValue(String namespace, String attribute, + float defaultValue) { + String s = getAttributeValue(namespace, attribute); + if (s != null) { + return Float.parseFloat(s); + } + return defaultValue; + } + + public int getAttributeListValue(int index, + String[] options, int defaultValue) { + return XmlUtils.convertValueToList( + getAttributeValue(index), options, defaultValue); + } + + public boolean getAttributeBooleanValue(int index, boolean defaultValue) { + return XmlUtils.convertValueToBoolean( + getAttributeValue(index), defaultValue); + } + + public int getAttributeResourceValue(int index, int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(index), defaultValue); + } + + public int getAttributeIntValue(int index, int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(index), defaultValue); + } + + public int getAttributeUnsignedIntValue(int index, int defaultValue) { + return XmlUtils.convertValueToUnsignedInt( + getAttributeValue(index), defaultValue); + } + + public float getAttributeFloatValue(int index, float defaultValue) { + String s = getAttributeValue(index); + if (s != null) { + return Float.parseFloat(s); + } + return defaultValue; + } + + public String getIdAttribute() { + return getAttributeValue(null, "id"); + } + + public String getClassAttribute() { + return getAttributeValue(null, "class"); + } + + public int getIdAttributeResourceValue(int defaultValue) { + return getAttributeResourceValue(null, "id", defaultValue); + } + + public int getStyleAttribute() { + return getAttributeResourceValue(null, "style", 0); + } +} diff --git a/src/api-impl/android/util/DisplayMetrics.java b/src/api-impl/android/util/DisplayMetrics.java new file mode 100644 index 00000000..589c2b27 --- /dev/null +++ b/src/api-impl/android/util/DisplayMetrics.java @@ -0,0 +1,299 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * A structure describing general information about a display, such as its + * size, density, and font scaling. + *

To access the DisplayMetrics members, initialize an object like this:

+ *
 DisplayMetrics metrics = new DisplayMetrics();
+ * getWindowManager().getDefaultDisplay().getMetrics(metrics);
+ */ +public class DisplayMetrics { + /** + * Standard quantized DPI for low-density screens. + */ + public static final int DENSITY_LOW = 120; + + /** + * Standard quantized DPI for medium-density screens. + */ + public static final int DENSITY_MEDIUM = 160; + + /** + * This is a secondary density, added for some common screen configurations. + * It is recommended that applications not generally target this as a first + * class density -- that is, don't supply specific graphics for this + * density, instead allow the platform to scale from other densities + * (typically {@link #DENSITY_HIGH}) as + * appropriate. In most cases (such as using bitmaps in + * {@link android.graphics.drawable.Drawable}) the platform + * can perform this scaling at load time, so the only cost is some slight + * startup runtime overhead. + * + *

This density was original introduced to correspond with a + * 720p TV screen: the density for 1080p televisions is + * {@link #DENSITY_XHIGH}, and the value here provides the same UI + * size for a TV running at 720p. It has also found use in 7" tablets, + * when these devices have 1280x720 displays. + */ + public static final int DENSITY_TV = 213; + + /** + * Standard quantized DPI for high-density screens. + */ + public static final int DENSITY_HIGH = 240; + + /** + * Standard quantized DPI for extra-high-density screens. + */ + public static final int DENSITY_XHIGH = 320; + + /** + * Intermediate density for screens that sit somewhere between + * {@link #DENSITY_XHIGH} (320dpi) and {@link #DENSITY_XXHIGH} (480 dpi). + * This is not a density that applications should target, instead relying + * on the system to scale their {@link #DENSITY_XXHIGH} assets for them. + */ + public static final int DENSITY_400 = 400; + + /** + * Standard quantized DPI for extra-extra-high-density screens. Applications + * should not generally worry about this density; relying on XHIGH graphics + * being scaled up to it should be sufficient for almost all cases. + */ + public static final int DENSITY_XXHIGH = 480; + + /** + * Standard quantized DPI for extra-extra-extra-high-density screens. Applications + * should not generally worry about this density; relying on XHIGH graphics + * being scaled up to it should be sufficient for almost all cases. A typical + * use of this density would be 4K television screens -- 3840x2160, which + * is 2x a traditional HD 1920x1080 screen which runs at DENSITY_XHIGH. + */ + public static final int DENSITY_XXXHIGH = 640; + + /** + * The reference density used throughout the system. + */ + public static final int DENSITY_DEFAULT = DENSITY_MEDIUM; + + /** + * Scaling factor to convert a density in DPI units to the density scale. + * @hide + */ + public static final float DENSITY_DEFAULT_SCALE = 1.0f / DENSITY_DEFAULT; + + /** + * The device's density. + * @hide because eventually this should be able to change while + * running, so shouldn't be a constant. + * @deprecated There is no longer a static density; you can find the + * density for a display in {@link #densityDpi}. + */ + @Deprecated + public static int DENSITY_DEVICE = getDeviceDensity(); + + /** + * The absolute width of the display in pixels. + */ + public int widthPixels; + /** + * The absolute height of the display in pixels. + */ + public int heightPixels; + /** + * The logical density of the display. This is a scaling factor for the + * Density Independent Pixel unit, where one DIP is one pixel on an + * approximately 160 dpi screen (for example a 240x320, 1.5"x2" screen), + * providing the baseline of the system's display. Thus on a 160dpi screen + * this density value will be 1; on a 120 dpi screen it would be .75; etc. + * + *

This value does not exactly follow the real screen size (as given by + * {@link #xdpi} and {@link #ydpi}, but rather is used to scale the size of + * the overall UI in steps based on gross changes in the display dpi. For + * example, a 240x320 screen will have a density of 1 even if its width is + * 1.8", 1.3", etc. However, if the screen resolution is increased to + * 320x480 but the screen size remained 1.5"x2" then the density would be + * increased (probably to 1.5). + * + * @see #DENSITY_DEFAULT + */ + public float density; + /** + * The screen density expressed as dots-per-inch. May be either + * {@link #DENSITY_LOW}, {@link #DENSITY_MEDIUM}, or {@link #DENSITY_HIGH}. + */ + public int densityDpi; + /** + * A scaling factor for fonts displayed on the display. This is the same + * as {@link #density}, except that it may be adjusted in smaller + * increments at runtime based on a user preference for the font size. + */ + public float scaledDensity; + /** + * The exact physical pixels per inch of the screen in the X dimension. + */ + public float xdpi; + /** + * The exact physical pixels per inch of the screen in the Y dimension. + */ + public float ydpi; + + /** + * The reported display width prior to any compatibility mode scaling + * being applied. + * @hide + */ + public int noncompatWidthPixels; + /** + * The reported display height prior to any compatibility mode scaling + * being applied. + * @hide + */ + public int noncompatHeightPixels; + /** + * The reported display density prior to any compatibility mode scaling + * being applied. + * @hide + */ + public float noncompatDensity; + /** + * The reported display density prior to any compatibility mode scaling + * being applied. + * @hide + */ + public int noncompatDensityDpi; + /** + * The reported scaled density prior to any compatibility mode scaling + * being applied. + * @hide + */ + public float noncompatScaledDensity; + /** + * The reported display xdpi prior to any compatibility mode scaling + * being applied. + * @hide + */ + public float noncompatXdpi; + /** + * The reported display ydpi prior to any compatibility mode scaling + * being applied. + * @hide + */ + public float noncompatYdpi; + + public DisplayMetrics() { + setToDefaults(); + } + + public void setTo(DisplayMetrics o) { + widthPixels = o.widthPixels; + heightPixels = o.heightPixels; + density = o.density; + densityDpi = o.densityDpi; + scaledDensity = o.scaledDensity; + xdpi = o.xdpi; + ydpi = o.ydpi; + noncompatWidthPixels = o.noncompatWidthPixels; + noncompatHeightPixels = o.noncompatHeightPixels; + noncompatDensity = o.noncompatDensity; + noncompatDensityDpi = o.noncompatDensityDpi; + noncompatScaledDensity = o.noncompatScaledDensity; + noncompatXdpi = o.noncompatXdpi; + noncompatYdpi = o.noncompatYdpi; + } + + public void setToDefaults() { + widthPixels = 0; + heightPixels = 0; + density = DENSITY_DEVICE / (float) DENSITY_DEFAULT; + densityDpi = DENSITY_DEVICE; + scaledDensity = density; + xdpi = DENSITY_DEVICE; + ydpi = DENSITY_DEVICE; + noncompatWidthPixels = widthPixels; + noncompatHeightPixels = heightPixels; + noncompatDensity = density; + noncompatDensityDpi = densityDpi; + noncompatScaledDensity = scaledDensity; + noncompatXdpi = xdpi; + noncompatYdpi = ydpi; + } + + @Override + public boolean equals(Object o) { + return o instanceof DisplayMetrics && equals((DisplayMetrics)o); + } + + /** + * Returns true if these display metrics equal the other display metrics. + * + * @param other The display metrics with which to compare. + * @return True if the display metrics are equal. + */ + public boolean equals(DisplayMetrics other) { + return equalsPhysical(other) + && scaledDensity == other.scaledDensity + && noncompatScaledDensity == other.noncompatScaledDensity; + } + + /** + * Returns true if the physical aspects of the two display metrics + * are equal. This ignores the scaled density, which is a logical + * attribute based on the current desired font size. + * + * @param other The display metrics with which to compare. + * @return True if the display metrics are equal. + * @hide + */ + public boolean equalsPhysical(DisplayMetrics other) { + return other != null + && widthPixels == other.widthPixels + && heightPixels == other.heightPixels + && density == other.density + && densityDpi == other.densityDpi + && xdpi == other.xdpi + && ydpi == other.ydpi + && noncompatWidthPixels == other.noncompatWidthPixels + && noncompatHeightPixels == other.noncompatHeightPixels + && noncompatDensity == other.noncompatDensity + && noncompatDensityDpi == other.noncompatDensityDpi + && noncompatXdpi == other.noncompatXdpi + && noncompatYdpi == other.noncompatYdpi; + } + + @Override + public int hashCode() { + return widthPixels * heightPixels * densityDpi; + } + + @Override + public String toString() { + return "DisplayMetrics{density=" + density + ", width=" + widthPixels + + ", height=" + heightPixels + ", scaledDensity=" + scaledDensity + + ", xdpi=" + xdpi + ", ydpi=" + ydpi + "}"; + } + + private static int getDeviceDensity() { + // qemu.sf.lcd_density can be used to override ro.sf.lcd_density + // when running in the emulator, allowing for dynamic configurations. + // The reason for this is that ro.sf.lcd_density is write-once and is + // set by the init process when it parses build.prop before anything else. + return DENSITY_DEFAULT; + } +} diff --git a/src/api-impl/android/util/LayoutDirection.java b/src/api-impl/android/util/LayoutDirection.java new file mode 100644 index 00000000..20af20b6 --- /dev/null +++ b/src/api-impl/android/util/LayoutDirection.java @@ -0,0 +1,48 @@ +/* + * 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 android.util; + +/** + * A class for defining layout directions. A layout direction can be left-to-right (LTR) + * or right-to-left (RTL). It can also be inherited (from a parent) or deduced from the default + * language script of a locale. + */ +public final class LayoutDirection { + + // No instantiation + private LayoutDirection() {} + + /** + * Horizontal layout direction is from Left to Right. + */ + public static final int LTR = 0; + + /** + * Horizontal layout direction is from Right to Left. + */ + public static final int RTL = 1; + + /** + * Horizontal layout direction is inherited. + */ + public static final int INHERIT = 2; + + /** + * Horizontal layout direction is deduced from the default language script for the locale. + */ + public static final int LOCALE = 3; +} diff --git a/src/api-impl/android/util/Log.java b/src/api-impl/android/util/Log.java new file mode 100644 index 00000000..5adfceb2 --- /dev/null +++ b/src/api-impl/android/util/Log.java @@ -0,0 +1,359 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.net.UnknownHostException; + +/** + * API for sending log output. + * + *

Generally, use the Log.v() Log.d() Log.i() Log.w() and Log.e() + * methods. + * + *

The order in terms of verbosity, from least to most is + * ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled + * into an application except during development. Debug logs are compiled + * in but stripped at runtime. Error, warning and info logs are always kept. + * + *

Tip: A good convention is to declare a TAG constant + * in your class: + * + *

private static final String TAG = "MyActivity";
+ * + * and use that in subsequent calls to the log methods. + *

+ * + *

Tip: Don't forget that when you make a call like + *

Log.v(TAG, "index=" + i);
+ * that when you're building the string to pass into Log.d, the compiler uses a + * StringBuilder and at least three allocations occur: the StringBuilder + * itself, the buffer, and the String object. Realistically, there is also + * another buffer allocation and copy, and even more pressure on the gc. + * That means that if your log message is filtered out, you might be doing + * significant work and incurring significant overhead. + */ +public final class Log { + + /** + * Priority constant for the println method; use Log.v. + */ + public static final int VERBOSE = 2; + + /** + * Priority constant for the println method; use Log.d. + */ + public static final int DEBUG = 3; + + /** + * Priority constant for the println method; use Log.i. + */ + public static final int INFO = 4; + + /** + * Priority constant for the println method; use Log.w. + */ + public static final int WARN = 5; + + /** + * Priority constant for the println method; use Log.e. + */ + public static final int ERROR = 6; + + /** + * Priority constant for the println method. + */ + public static final int ASSERT = 7; + + /** + * Exception class used to capture a stack trace in {@link #wtf}. + */ + private static class TerribleFailure extends Exception { + TerribleFailure(String msg, Throwable cause) { super(msg, cause); } + } + + /** + * Interface to handle terrible failures from {@link #wtf}. + * + * @hide + */ + public interface TerribleFailureHandler { + void onTerribleFailure(String tag, TerribleFailure what); + } + + private static TerribleFailureHandler sWtfHandler = new TerribleFailureHandler() { + public void onTerribleFailure(String tag, TerribleFailure what) { + // TODO + } + }; + + private Log() { + } + + /** + * Send a {@link #VERBOSE} log message. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + */ + public static int v(String tag, String msg) { + return println_native(LOG_ID_MAIN, VERBOSE, tag, msg); + } + + /** + * Send a {@link #VERBOSE} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @param tr An exception to log + */ + public static int v(String tag, String msg, Throwable tr) { + return println_native(LOG_ID_MAIN, VERBOSE, tag, msg + '\n' + getStackTraceString(tr)); + } + + /** + * Send a {@link #DEBUG} log message. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + */ + public static int d(String tag, String msg) { + return println_native(LOG_ID_MAIN, DEBUG, tag, msg); + } + + /** + * Send a {@link #DEBUG} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @param tr An exception to log + */ + public static int d(String tag, String msg, Throwable tr) { + return println_native(LOG_ID_MAIN, DEBUG, tag, msg + '\n' + getStackTraceString(tr)); + } + + /** + * Send an {@link #INFO} log message. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + */ + public static int i(String tag, String msg) { + return println_native(LOG_ID_MAIN, INFO, tag, msg); + } + + /** + * Send a {@link #INFO} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @param tr An exception to log + */ + public static int i(String tag, String msg, Throwable tr) { + return println_native(LOG_ID_MAIN, INFO, tag, msg + '\n' + getStackTraceString(tr)); + } + + /** + * Send a {@link #WARN} log message. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + */ + public static int w(String tag, String msg) { + return println_native(LOG_ID_MAIN, WARN, tag, msg); + } + + /** + * Send a {@link #WARN} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @param tr An exception to log + */ + public static int w(String tag, String msg, Throwable tr) { + return println_native(LOG_ID_MAIN, WARN, tag, msg + '\n' + getStackTraceString(tr)); + } + + /** + * Checks to see whether or not a log for the specified tag is loggable at the specified level. + * + * The default level of any tag is set to INFO. This means that any level above and including + * INFO will be logged. Before you make any calls to a logging method you should check to see + * if your tag should be logged. You can change the default level by setting a system property: + * 'setprop log.tag.<YOUR_LOG_TAG> <LEVEL>' + * Where level is either VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT, or SUPPRESS. SUPPRESS will + * turn off all logging for your tag. You can also create a local.prop file that with the + * following in it: + * 'log.tag.<YOUR_LOG_TAG>=<LEVEL>' + * and place that in /data/local.prop. + * + * @param tag The tag to check. + * @param level The level to check. + * @return Whether or not that this is allowed to be logged. + * @throws IllegalArgumentException is thrown if the tag.length() > 23. + */ + public static native boolean isLoggable(String tag, int level); + + /* + * Send a {@link #WARN} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param tr An exception to log + */ + public static int w(String tag, Throwable tr) { + return println_native(LOG_ID_MAIN, WARN, tag, getStackTraceString(tr)); + } + + /** + * Send an {@link #ERROR} log message. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + */ + public static int e(String tag, String msg) { + return println_native(LOG_ID_MAIN, ERROR, tag, msg); + } + + /** + * Send a {@link #ERROR} log message and log the exception. + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @param tr An exception to log + */ + public static int e(String tag, String msg, Throwable tr) { + return println_native(LOG_ID_MAIN, ERROR, tag, msg + '\n' + getStackTraceString(tr)); + } + + /** + * What a Terrible Failure: Report a condition that should never happen. + * The error will always be logged at level ASSERT with the call stack. + * Depending on system configuration, a report may be added to the + * {@link android.os.DropBoxManager} and/or the process may be terminated + * immediately with an error dialog. + * @param tag Used to identify the source of a log message. + * @param msg The message you would like logged. + */ + public static int wtf(String tag, String msg) { + return wtf(LOG_ID_MAIN, tag, msg, null, false); + } + + /** + * Like {@link #wtf(String, String)}, but also writes to the log the full + * call stack. + * @hide + */ + public static int wtfStack(String tag, String msg) { + return wtf(LOG_ID_MAIN, tag, msg, null, true); + } + + /** + * What a Terrible Failure: Report an exception that should never happen. + * Similar to {@link #wtf(String, String)}, with an exception to log. + * @param tag Used to identify the source of a log message. + * @param tr An exception to log. + */ + public static int wtf(String tag, Throwable tr) { + return wtf(LOG_ID_MAIN, tag, tr.getMessage(), tr, false); + } + + /** + * What a Terrible Failure: Report an exception that should never happen. + * Similar to {@link #wtf(String, Throwable)}, with a message as well. + * @param tag Used to identify the source of a log message. + * @param msg The message you would like logged. + * @param tr An exception to log. May be null. + */ + public static int wtf(String tag, String msg, Throwable tr) { + return wtf(LOG_ID_MAIN, tag, msg, tr, false); + } + + static int wtf(int logId, String tag, String msg, Throwable tr, boolean localStack) { + TerribleFailure what = new TerribleFailure(msg, tr); + int bytes = println_native(logId, ASSERT, tag, msg + '\n' + + getStackTraceString(localStack ? what : tr)); + sWtfHandler.onTerribleFailure(tag, what); + return bytes; + } + + /** + * Sets the terrible failure handler, for testing. + * + * @return the old handler + * + * @hide + */ + public static TerribleFailureHandler setWtfHandler(TerribleFailureHandler handler) { + if (handler == null) { + throw new NullPointerException("handler == null"); + } + TerribleFailureHandler oldHandler = sWtfHandler; + sWtfHandler = handler; + return oldHandler; + } + + /** + * Handy function to get a loggable stack trace from a Throwable + * @param tr An exception to log + */ + public static String getStackTraceString(Throwable tr) { + if (tr == null) { + return ""; + } + + // This is to reduce the amount of log spew that apps do in the non-error + // condition of the network being unavailable. + Throwable t = tr; + while (t != null) { + if (t instanceof UnknownHostException) { + return ""; + } + t = t.getCause(); + } + + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw, false); + tr.printStackTrace(pw); + pw.flush(); + return sw.toString(); + } + + /** + * Low-level logging call. + * @param priority The priority/type of this log message + * @param tag Used to identify the source of a log message. It usually identifies + * the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @return The number of bytes written. + */ + public static int println(int priority, String tag, String msg) { + return println_native(LOG_ID_MAIN, priority, tag, msg); + } + + /** @hide */ public static final int LOG_ID_MAIN = 0; + /** @hide */ public static final int LOG_ID_RADIO = 1; + /** @hide */ public static final int LOG_ID_EVENTS = 2; + /** @hide */ public static final int LOG_ID_SYSTEM = 3; + + /** @hide */ public static /*native*/ int println_native(int bufID, + int priority, String tag, String msg) { + String out = String.format("`¯´[%d][%d] [%s] : %s", bufID, priority, tag, msg); + System.out.println(out); + return out.getBytes().length; + } +} diff --git a/src/api-impl/android/util/LongSparseArray.java b/src/api-impl/android/util/LongSparseArray.java new file mode 100644 index 00000000..d6e116f2 --- /dev/null +++ b/src/api-impl/android/util/LongSparseArray.java @@ -0,0 +1,408 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import com.android.internal.util.ArrayUtils; + +/** + * SparseArray mapping longs to Objects. Unlike a normal array of Objects, + * there can be gaps in the indices. It is intended to be more memory efficient + * than using a HashMap to map Longs to Objects, both because it avoids + * auto-boxing keys and its data structure doesn't rely on an extra entry object + * for each mapping. + * + *

Note that this container keeps its mappings in an array data structure, + * using a binary search to find keys. The implementation is not intended to be appropriate for + * data structures + * that may contain large numbers of items. It is generally slower than a traditional + * HashMap, since lookups require a binary search and adds and removes require inserting + * and deleting entries in the array. For containers holding up to hundreds of items, + * the performance difference is not significant, less than 50%.

+ * + *

To help with performance, the container includes an optimization when removing + * keys: instead of compacting its array immediately, it leaves the removed entry marked + * as deleted. The entry can then be re-used for the same key, or compacted later in + * a single garbage collection step of all removed entries. This garbage collection will + * need to be performed at any time the array needs to be grown or the the map size or + * entry values are retrieved.

+ * + *

It is possible to iterate over the items in this container using + * {@link #keyAt(int)} and {@link #valueAt(int)}. Iterating over the keys using + * keyAt(int) with ascending values of the index will return the + * keys in ascending order, or the values corresponding to the keys in ascending + * order in the case of valueAt(int).

+ */ +public class LongSparseArray implements Cloneable { + private static final Object DELETED = new Object(); + private boolean mGarbage = false; + + private long[] mKeys; + private Object[] mValues; + private int mSize; + + /** + * Creates a new LongSparseArray containing no mappings. + */ + public LongSparseArray() { + this(10); + } + + /** + * Creates a new LongSparseArray containing no mappings that will not + * require any additional memory allocation to store the specified + * number of mappings. If you supply an initial capacity of 0, the + * sparse array will be initialized with a light-weight representation + * not requiring any additional array allocations. + */ + public LongSparseArray(int initialCapacity) { + if (initialCapacity == 0) { + mKeys = ContainerHelpers.EMPTY_LONGS; + mValues = ContainerHelpers.EMPTY_OBJECTS; + } else { + initialCapacity = ArrayUtils.idealLongArraySize(initialCapacity); + mKeys = new long[initialCapacity]; + mValues = new Object[initialCapacity]; + } + mSize = 0; + } + + @Override + @SuppressWarnings("unchecked") + public LongSparseArray clone() { + LongSparseArray clone = null; + try { + clone = (LongSparseArray) super.clone(); + clone.mKeys = mKeys.clone(); + clone.mValues = mValues.clone(); + } catch (CloneNotSupportedException cnse) { + /* ignore */ + } + return clone; + } + + /** + * Gets the Object mapped from the specified key, or null + * if no such mapping has been made. + */ + public E get(long key) { + return get(key, null); + } + + /** + * Gets the Object mapped from the specified key, or the specified Object + * if no such mapping has been made. + */ + @SuppressWarnings("unchecked") + public E get(long key, E valueIfKeyNotFound) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i < 0 || mValues[i] == DELETED) { + return valueIfKeyNotFound; + } else { + return (E) mValues[i]; + } + } + + /** + * Removes the mapping from the specified key, if there was any. + */ + public void delete(long key) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + if (mValues[i] != DELETED) { + mValues[i] = DELETED; + mGarbage = true; + } + } + } + + /** + * Alias for {@link #delete(long)}. + */ + public void remove(long key) { + delete(key); + } + + /** + * Removes the mapping at the specified index. + */ + public void removeAt(int index) { + if (mValues[index] != DELETED) { + mValues[index] = DELETED; + mGarbage = true; + } + } + + private void gc() { + // Log.e("SparseArray", "gc start with " + mSize); + + int n = mSize; + int o = 0; + long[] keys = mKeys; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + Object val = values[i]; + + if (val != DELETED) { + if (i != o) { + keys[o] = keys[i]; + values[o] = val; + values[i] = null; + } + + o++; + } + } + + mGarbage = false; + mSize = o; + + // Log.e("SparseArray", "gc end with " + mSize); + } + + /** + * Adds a mapping from the specified key to the specified value, + * replacing the previous mapping from the specified key if there + * was one. + */ + public void put(long key, E value) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + mValues[i] = value; + } else { + i = ~i; + + if (i < mSize && mValues[i] == DELETED) { + mKeys[i] = key; + mValues[i] = value; + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + + // Search again because indices may have changed. + i = ~ContainerHelpers.binarySearch(mKeys, mSize, key); + } + + if (mSize >= mKeys.length) { + int n = ArrayUtils.idealLongArraySize(mSize + 1); + + long[] nkeys = new long[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + if (mSize - i != 0) { + // Log.e("SparseArray", "move " + (mSize - i)); + System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i); + System.arraycopy(mValues, i, mValues, i + 1, mSize - i); + } + + mKeys[i] = key; + mValues[i] = value; + mSize++; + } + } + + /** + * Returns the number of key-value mappings that this LongSparseArray + * currently stores. + */ + public int size() { + if (mGarbage) { + gc(); + } + + return mSize; + } + + /** + * Given an index in the range 0...size()-1, returns + * the key from the indexth key-value mapping that this + * LongSparseArray stores. + * + *

The keys corresponding to indices in ascending order are guaranteed to + * be in ascending order, e.g., keyAt(0) will return the + * smallest key and keyAt(size()-1) will return the largest + * key.

+ */ + public long keyAt(int index) { + if (mGarbage) { + gc(); + } + + return mKeys[index]; + } + + /** + * Given an index in the range 0...size()-1, returns + * the value from the indexth key-value mapping that this + * LongSparseArray stores. + * + *

The values corresponding to indices in ascending order are guaranteed + * to be associated with keys in ascending order, e.g., + * valueAt(0) will return the value associated with the + * smallest key and valueAt(size()-1) will return the value + * associated with the largest key.

+ */ + @SuppressWarnings("unchecked") + public E valueAt(int index) { + if (mGarbage) { + gc(); + } + + return (E) mValues[index]; + } + + /** + * Given an index in the range 0...size()-1, sets a new + * value for the indexth key-value mapping that this + * LongSparseArray stores. + */ + public void setValueAt(int index, E value) { + if (mGarbage) { + gc(); + } + + mValues[index] = value; + } + + /** + * Returns the index for which {@link #keyAt} would return the + * specified key, or a negative number if the specified + * key is not mapped. + */ + public int indexOfKey(long key) { + if (mGarbage) { + gc(); + } + + return ContainerHelpers.binarySearch(mKeys, mSize, key); + } + + /** + * Returns an index for which {@link #valueAt} would return the + * specified key, or a negative number if no keys map to the + * specified value. + * Beware that this is a linear search, unlike lookups by key, + * and that multiple keys can map to the same value and this will + * find only one of them. + */ + public int indexOfValue(E value) { + if (mGarbage) { + gc(); + } + + for (int i = 0; i < mSize; i++) + if (mValues[i] == value) + return i; + + return -1; + } + + /** + * Removes all key-value mappings from this LongSparseArray. + */ + public void clear() { + int n = mSize; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + values[i] = null; + } + + mSize = 0; + mGarbage = false; + } + + /** + * Puts a key/value pair into the array, optimizing for the case where + * the key is greater than all existing keys in the array. + */ + public void append(long key, E value) { + if (mSize != 0 && key <= mKeys[mSize - 1]) { + put(key, value); + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + } + + int pos = mSize; + if (pos >= mKeys.length) { + int n = ArrayUtils.idealLongArraySize(pos + 1); + + long[] nkeys = new long[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + mKeys[pos] = key; + mValues[pos] = value; + mSize = pos + 1; + } + + /** + * {@inheritDoc} + * + *

This implementation composes a string by iterating over its mappings. If + * this map contains itself as a value, the string "(this Map)" + * will appear in its place. + */ + @Override + public String toString() { + if (size() <= 0) { + return "{}"; + } + + StringBuilder buffer = new StringBuilder(mSize * 28); + buffer.append('{'); + for (int i=0; i 0) { + buffer.append(", "); + } + long key = keyAt(i); + buffer.append(key); + buffer.append('='); + Object value = valueAt(i); + if (value != this) { + buffer.append(value); + } else { + buffer.append("(this Map)"); + } + } + buffer.append('}'); + return buffer.toString(); + } +} diff --git a/src/api-impl/android/util/MapCollections.java b/src/api-impl/android/util/MapCollections.java new file mode 100644 index 00000000..28b788b9 --- /dev/null +++ b/src/api-impl/android/util/MapCollections.java @@ -0,0 +1,559 @@ +/* + * 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 android.util; + +import libcore.util.Objects; + +import java.lang.reflect.Array; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +/** + * Helper for writing standard Java collection interfaces to a data + * structure like {@link ArrayMap}. + * @hide + */ +abstract class MapCollections { + EntrySet mEntrySet; + KeySet mKeySet; + ValuesCollection mValues; + + final class ArrayIterator implements Iterator { + final int mOffset; + int mSize; + int mIndex; + boolean mCanRemove = false; + + ArrayIterator(int offset) { + mOffset = offset; + mSize = colGetSize(); + } + + @Override + public boolean hasNext() { + return mIndex < mSize; + } + + @Override + public T next() { + Object res = colGetEntry(mIndex, mOffset); + mIndex++; + mCanRemove = true; + return (T)res; + } + + @Override + public void remove() { + if (!mCanRemove) { + throw new IllegalStateException(); + } + mIndex--; + mSize--; + mCanRemove = false; + colRemoveAt(mIndex); + } + } + + final class MapIterator implements Iterator>, Map.Entry { + int mEnd; + int mIndex; + boolean mEntryValid = false; + + MapIterator() { + mEnd = colGetSize() - 1; + mIndex = -1; + } + + @Override + public boolean hasNext() { + return mIndex < mEnd; + } + + @Override + public Map.Entry next() { + mIndex++; + mEntryValid = true; + return this; + } + + @Override + public void remove() { + if (!mEntryValid) { + throw new IllegalStateException(); + } + colRemoveAt(mIndex); + mIndex--; + mEnd--; + mEntryValid = false; + } + + @Override + public K getKey() { + if (!mEntryValid) { + throw new IllegalStateException( + "This container does not support retaining Map.Entry objects"); + } + return (K)colGetEntry(mIndex, 0); + } + + @Override + public V getValue() { + if (!mEntryValid) { + throw new IllegalStateException( + "This container does not support retaining Map.Entry objects"); + } + return (V)colGetEntry(mIndex, 1); + } + + @Override + public V setValue(V object) { + if (!mEntryValid) { + throw new IllegalStateException( + "This container does not support retaining Map.Entry objects"); + } + return colSetValue(mIndex, object); + } + + @Override + public final boolean equals(Object o) { + if (!mEntryValid) { + throw new IllegalStateException( + "This container does not support retaining Map.Entry objects"); + } + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry) o; + return Objects.equal(e.getKey(), colGetEntry(mIndex, 0)) + && Objects.equal(e.getValue(), colGetEntry(mIndex, 1)); + } + + @Override + public final int hashCode() { + if (!mEntryValid) { + throw new IllegalStateException( + "This container does not support retaining Map.Entry objects"); + } + final Object key = colGetEntry(mIndex, 0); + final Object value = colGetEntry(mIndex, 1); + return (key == null ? 0 : key.hashCode()) ^ + (value == null ? 0 : value.hashCode()); + } + + @Override + public final String toString() { + return getKey() + "=" + getValue(); + } + } + + final class EntrySet implements Set> { + @Override + public boolean add(Map.Entry object) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection> collection) { + int oldSize = colGetSize(); + for (Map.Entry entry : collection) { + colPut(entry.getKey(), entry.getValue()); + } + return oldSize != colGetSize(); + } + + @Override + public void clear() { + colClear(); + } + + @Override + public boolean contains(Object o) { + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry) o; + int index = colIndexOfKey(e.getKey()); + if (index < 0) { + return false; + } + Object foundVal = colGetEntry(index, 1); + return Objects.equal(foundVal, e.getValue()); + } + + @Override + public boolean containsAll(Collection collection) { + Iterator it = collection.iterator(); + while (it.hasNext()) { + if (!contains(it.next())) { + return false; + } + } + return true; + } + + @Override + public boolean isEmpty() { + return colGetSize() == 0; + } + + @Override + public Iterator> iterator() { + return new MapIterator(); + } + + @Override + public boolean remove(Object object) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean removeAll(Collection collection) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean retainAll(Collection collection) { + throw new UnsupportedOperationException(); + } + + @Override + public int size() { + return colGetSize(); + } + + @Override + public Object[] toArray() { + throw new UnsupportedOperationException(); + } + + @Override + public T[] toArray(T[] array) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean equals(Object object) { + return equalsSetHelper(this, object); + } + + @Override + public int hashCode() { + int result = 0; + for (int i=colGetSize()-1; i>=0; i--) { + final Object key = colGetEntry(i, 0); + final Object value = colGetEntry(i, 1); + result += ( (key == null ? 0 : key.hashCode()) ^ + (value == null ? 0 : value.hashCode()) ); + } + return result; + } + }; + + final class KeySet implements Set { + + @Override + public boolean add(K object) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection collection) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + colClear(); + } + + @Override + public boolean contains(Object object) { + return colIndexOfKey(object) >= 0; + } + + @Override + public boolean containsAll(Collection collection) { + return containsAllHelper(colGetMap(), collection); + } + + @Override + public boolean isEmpty() { + return colGetSize() == 0; + } + + @Override + public Iterator iterator() { + return new ArrayIterator(0); + } + + @Override + public boolean remove(Object object) { + int index = colIndexOfKey(object); + if (index >= 0) { + colRemoveAt(index); + return true; + } + return false; + } + + @Override + public boolean removeAll(Collection collection) { + return removeAllHelper(colGetMap(), collection); + } + + @Override + public boolean retainAll(Collection collection) { + return retainAllHelper(colGetMap(), collection); + } + + @Override + public int size() { + return colGetSize(); + } + + @Override + public Object[] toArray() { + return toArrayHelper(0); + } + + @Override + public T[] toArray(T[] array) { + return toArrayHelper(array, 0); + } + + @Override + public boolean equals(Object object) { + return equalsSetHelper(this, object); + } + + @Override + public int hashCode() { + int result = 0; + for (int i=colGetSize()-1; i>=0; i--) { + Object obj = colGetEntry(i, 0); + result += obj == null ? 0 : obj.hashCode(); + } + return result; + } + }; + + final class ValuesCollection implements Collection { + + @Override + public boolean add(V object) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection collection) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + colClear(); + } + + @Override + public boolean contains(Object object) { + return colIndexOfValue(object) >= 0; + } + + @Override + public boolean containsAll(Collection collection) { + Iterator it = collection.iterator(); + while (it.hasNext()) { + if (!contains(it.next())) { + return false; + } + } + return true; + } + + @Override + public boolean isEmpty() { + return colGetSize() == 0; + } + + @Override + public Iterator iterator() { + return new ArrayIterator(1); + } + + @Override + public boolean remove(Object object) { + int index = colIndexOfValue(object); + if (index >= 0) { + colRemoveAt(index); + return true; + } + return false; + } + + @Override + public boolean removeAll(Collection collection) { + int N = colGetSize(); + boolean changed = false; + for (int i=0; i collection) { + int N = colGetSize(); + boolean changed = false; + for (int i=0; i T[] toArray(T[] array) { + return toArrayHelper(array, 1); + } + }; + + public static boolean containsAllHelper(Map map, Collection collection) { + Iterator it = collection.iterator(); + while (it.hasNext()) { + if (!map.containsKey(it.next())) { + return false; + } + } + return true; + } + + public static boolean removeAllHelper(Map map, Collection collection) { + int oldSize = map.size(); + Iterator it = collection.iterator(); + while (it.hasNext()) { + map.remove(it.next()); + } + return oldSize != map.size(); + } + + public static boolean retainAllHelper(Map map, Collection collection) { + int oldSize = map.size(); + Iterator it = map.keySet().iterator(); + while (it.hasNext()) { + if (!collection.contains(it.next())) { + it.remove(); + } + } + return oldSize != map.size(); + } + + public Object[] toArrayHelper(int offset) { + final int N = colGetSize(); + Object[] result = new Object[N]; + for (int i=0; i T[] toArrayHelper(T[] array, int offset) { + final int N = colGetSize(); + if (array.length < N) { + @SuppressWarnings("unchecked") T[] newArray + = (T[]) Array.newInstance(array.getClass().getComponentType(), N); + array = newArray; + } + for (int i=0; i N) { + array[N] = null; + } + return array; + } + + public static boolean equalsSetHelper(Set set, Object object) { + if (set == object) { + return true; + } + if (object instanceof Set) { + Set s = (Set) object; + + try { + return set.size() == s.size() && set.containsAll(s); + } catch (NullPointerException ignored) { + return false; + } catch (ClassCastException ignored) { + return false; + } + } + return false; + } + + public Set> getEntrySet() { + if (mEntrySet == null) { + mEntrySet = new EntrySet(); + } + return mEntrySet; + } + + public Set getKeySet() { + if (mKeySet == null) { + mKeySet = new KeySet(); + } + return mKeySet; + } + + public Collection getValues() { + if (mValues == null) { + mValues = new ValuesCollection(); + } + return mValues; + } + + protected abstract int colGetSize(); + protected abstract Object colGetEntry(int index, int offset); + protected abstract int colIndexOfKey(Object key); + protected abstract int colIndexOfValue(Object key); + protected abstract Map colGetMap(); + protected abstract void colPut(K key, V value); + protected abstract V colSetValue(int index, V value); + protected abstract void colRemoveAt(int index); + protected abstract void colClear(); +} diff --git a/src/api-impl/android/util/PrefixPrinter.java b/src/api-impl/android/util/PrefixPrinter.java new file mode 100644 index 00000000..62f7da18 --- /dev/null +++ b/src/api-impl/android/util/PrefixPrinter.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * PrefixPrinter is a Printer which prefixes all lines with a given + * prefix. + * + * @hide + */ +public class PrefixPrinter implements Printer { + private final Printer mPrinter; + private final String mPrefix; + + /** + * Creates a new PrefixPrinter. + * + *

If prefix is null or empty, the provided printer is returned, rather + * than making a prefixing printer. + */ + public static Printer create(Printer printer, String prefix) { + if (prefix == null || prefix.equals("")) { + return printer; + } + return new PrefixPrinter(printer, prefix); + } + + private PrefixPrinter(Printer printer, String prefix) { + mPrinter = printer; + mPrefix = prefix; + } + + public void println(String str) { + mPrinter.println(mPrefix + str); + } +} diff --git a/src/api-impl/android/util/Printer.java b/src/api-impl/android/util/Printer.java new file mode 100644 index 00000000..595cf70e --- /dev/null +++ b/src/api-impl/android/util/Printer.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * Simple interface for printing text, allowing redirection to various + * targets. Standard implementations are {@link android.util.LogPrinter}, + * {@link android.util.StringBuilderPrinter}, and + * {@link android.util.PrintWriterPrinter}. + */ +public interface Printer { + /** + * Write a line of text to the output. There is no need to terminate + * the given string with a newline. + */ + void println(String x); +} diff --git a/src/api-impl/android/util/Slog.java b/src/api-impl/android/util/Slog.java new file mode 100644 index 00000000..47aa5fc1 --- /dev/null +++ b/src/api-impl/android/util/Slog.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * @hide + */ +public final class Slog { + + private Slog() { + } + + public static int v(String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.VERBOSE, tag, msg); + } + + public static int v(String tag, String msg, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.VERBOSE, tag, + msg + '\n' + Log.getStackTraceString(tr)); + } + + public static int d(String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag, msg); + } + + public static int d(String tag, String msg, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag, + msg + '\n' + Log.getStackTraceString(tr)); + } + + public static int i(String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.INFO, tag, msg); + } + + public static int i(String tag, String msg, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.INFO, tag, + msg + '\n' + Log.getStackTraceString(tr)); + } + + public static int w(String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, msg); + } + + public static int w(String tag, String msg, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, + msg + '\n' + Log.getStackTraceString(tr)); + } + + public static int w(String tag, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, Log.getStackTraceString(tr)); + } + + public static int e(String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, msg); + } + + public static int e(String tag, String msg, Throwable tr) { + return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, + msg + '\n' + Log.getStackTraceString(tr)); + } + + public static int wtf(String tag, String msg) { + return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, false); + } + + public static int wtfStack(String tag, String msg) { + return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, true); + } + + public static int wtf(String tag, Throwable tr) { + return Log.wtf(Log.LOG_ID_SYSTEM, tag, tr.getMessage(), tr, false); + } + + public static int wtf(String tag, String msg, Throwable tr) { + return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, tr, false); + } + + public static int println(int priority, String tag, String msg) { + return Log.println_native(Log.LOG_ID_SYSTEM, priority, tag, msg); + } +} + diff --git a/src/api-impl/android/util/SparseArray.java b/src/api-impl/android/util/SparseArray.java new file mode 100644 index 00000000..6e168a8b --- /dev/null +++ b/src/api-impl/android/util/SparseArray.java @@ -0,0 +1,423 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import com.android.internal.util.ArrayUtils; + +/** + * SparseArrays map integers to Objects. Unlike a normal array of Objects, + * there can be gaps in the indices. It is intended to be more memory efficient + * than using a HashMap to map Integers to Objects, both because it avoids + * auto-boxing keys and its data structure doesn't rely on an extra entry object + * for each mapping. + * + *

Note that this container keeps its mappings in an array data structure, + * using a binary search to find keys. The implementation is not intended to be appropriate for + * data structures + * that may contain large numbers of items. It is generally slower than a traditional + * HashMap, since lookups require a binary search and adds and removes require inserting + * and deleting entries in the array. For containers holding up to hundreds of items, + * the performance difference is not significant, less than 50%.

+ * + *

To help with performance, the container includes an optimization when removing + * keys: instead of compacting its array immediately, it leaves the removed entry marked + * as deleted. The entry can then be re-used for the same key, or compacted later in + * a single garbage collection step of all removed entries. This garbage collection will + * need to be performed at any time the array needs to be grown or the the map size or + * entry values are retrieved.

+ * + *

It is possible to iterate over the items in this container using + * {@link #keyAt(int)} and {@link #valueAt(int)}. Iterating over the keys using + * keyAt(int) with ascending values of the index will return the + * keys in ascending order, or the values corresponding to the keys in ascending + * order in the case of valueAt(int).

+ */ +public class SparseArray implements Cloneable { + private static final Object DELETED = new Object(); + private boolean mGarbage = false; + + private int[] mKeys; + private Object[] mValues; + private int mSize; + + /** + * Creates a new SparseArray containing no mappings. + */ + public SparseArray() { + this(10); + } + + /** + * Creates a new SparseArray containing no mappings that will not + * require any additional memory allocation to store the specified + * number of mappings. If you supply an initial capacity of 0, the + * sparse array will be initialized with a light-weight representation + * not requiring any additional array allocations. + */ + public SparseArray(int initialCapacity) { + if (initialCapacity == 0) { + mKeys = ContainerHelpers.EMPTY_INTS; + mValues = ContainerHelpers.EMPTY_OBJECTS; + } else { + initialCapacity = ArrayUtils.idealIntArraySize(initialCapacity); + mKeys = new int[initialCapacity]; + mValues = new Object[initialCapacity]; + } + mSize = 0; + } + + @Override + @SuppressWarnings("unchecked") + public SparseArray clone() { + SparseArray clone = null; + try { + clone = (SparseArray) super.clone(); + clone.mKeys = mKeys.clone(); + clone.mValues = mValues.clone(); + } catch (CloneNotSupportedException cnse) { + /* ignore */ + } + return clone; + } + + /** + * Gets the Object mapped from the specified key, or null + * if no such mapping has been made. + */ + public E get(int key) { + return get(key, null); + } + + /** + * Gets the Object mapped from the specified key, or the specified Object + * if no such mapping has been made. + */ + @SuppressWarnings("unchecked") + public E get(int key, E valueIfKeyNotFound) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i < 0 || mValues[i] == DELETED) { + return valueIfKeyNotFound; + } else { + return (E) mValues[i]; + } + } + + /** + * Removes the mapping from the specified key, if there was any. + */ + public void delete(int key) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + if (mValues[i] != DELETED) { + mValues[i] = DELETED; + mGarbage = true; + } + } + } + + /** + * Alias for {@link #delete(int)}. + */ + public void remove(int key) { + delete(key); + } + + /** + * Removes the mapping at the specified index. + */ + public void removeAt(int index) { + if (mValues[index] != DELETED) { + mValues[index] = DELETED; + mGarbage = true; + } + } + + /** + * Remove a range of mappings as a batch. + * + * @param index Index to begin at + * @param size Number of mappings to remove + */ + public void removeAtRange(int index, int size) { + final int end = Math.min(mSize, index + size); + for (int i = index; i < end; i++) { + removeAt(i); + } + } + + private void gc() { + // Log.e("SparseArray", "gc start with " + mSize); + + int n = mSize; + int o = 0; + int[] keys = mKeys; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + Object val = values[i]; + + if (val != DELETED) { + if (i != o) { + keys[o] = keys[i]; + values[o] = val; + values[i] = null; + } + + o++; + } + } + + mGarbage = false; + mSize = o; + + // Log.e("SparseArray", "gc end with " + mSize); + } + + /** + * Adds a mapping from the specified key to the specified value, + * replacing the previous mapping from the specified key if there + * was one. + */ + public void put(int key, E value) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + mValues[i] = value; + } else { + i = ~i; + + if (i < mSize && mValues[i] == DELETED) { + mKeys[i] = key; + mValues[i] = value; + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + + // Search again because indices may have changed. + i = ~ContainerHelpers.binarySearch(mKeys, mSize, key); + } + + if (mSize >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(mSize + 1); + + int[] nkeys = new int[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + if (mSize - i != 0) { + // Log.e("SparseArray", "move " + (mSize - i)); + System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i); + System.arraycopy(mValues, i, mValues, i + 1, mSize - i); + } + + mKeys[i] = key; + mValues[i] = value; + mSize++; + } + } + + /** + * Returns the number of key-value mappings that this SparseArray + * currently stores. + */ + public int size() { + if (mGarbage) { + gc(); + } + + return mSize; + } + + /** + * Given an index in the range 0...size()-1, returns + * the key from the indexth key-value mapping that this + * SparseArray stores. + * + *

The keys corresponding to indices in ascending order are guaranteed to + * be in ascending order, e.g., keyAt(0) will return the + * smallest key and keyAt(size()-1) will return the largest + * key.

+ */ + public int keyAt(int index) { + if (mGarbage) { + gc(); + } + + return mKeys[index]; + } + + /** + * Given an index in the range 0...size()-1, returns + * the value from the indexth key-value mapping that this + * SparseArray stores. + * + *

The values corresponding to indices in ascending order are guaranteed + * to be associated with keys in ascending order, e.g., + * valueAt(0) will return the value associated with the + * smallest key and valueAt(size()-1) will return the value + * associated with the largest key.

+ */ + @SuppressWarnings("unchecked") + public E valueAt(int index) { + if (mGarbage) { + gc(); + } + + return (E) mValues[index]; + } + + /** + * Given an index in the range 0...size()-1, sets a new + * value for the indexth key-value mapping that this + * SparseArray stores. + */ + public void setValueAt(int index, E value) { + if (mGarbage) { + gc(); + } + + mValues[index] = value; + } + + /** + * Returns the index for which {@link #keyAt} would return the + * specified key, or a negative number if the specified + * key is not mapped. + */ + public int indexOfKey(int key) { + if (mGarbage) { + gc(); + } + + return ContainerHelpers.binarySearch(mKeys, mSize, key); + } + + /** + * Returns an index for which {@link #valueAt} would return the + * specified key, or a negative number if no keys map to the + * specified value. + *

Beware that this is a linear search, unlike lookups by key, + * and that multiple keys can map to the same value and this will + * find only one of them. + *

Note also that unlike most collections' {@code indexOf} methods, + * this method compares values using {@code ==} rather than {@code equals}. + */ + public int indexOfValue(E value) { + if (mGarbage) { + gc(); + } + + for (int i = 0; i < mSize; i++) + if (mValues[i] == value) + return i; + + return -1; + } + + /** + * Removes all key-value mappings from this SparseArray. + */ + public void clear() { + int n = mSize; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + values[i] = null; + } + + mSize = 0; + mGarbage = false; + } + + /** + * Puts a key/value pair into the array, optimizing for the case where + * the key is greater than all existing keys in the array. + */ + public void append(int key, E value) { + if (mSize != 0 && key <= mKeys[mSize - 1]) { + put(key, value); + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + } + + int pos = mSize; + if (pos >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(pos + 1); + + int[] nkeys = new int[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + mKeys[pos] = key; + mValues[pos] = value; + mSize = pos + 1; + } + + /** + * {@inheritDoc} + * + *

This implementation composes a string by iterating over its mappings. If + * this map contains itself as a value, the string "(this Map)" + * will appear in its place. + */ + @Override + public String toString() { + if (size() <= 0) { + return "{}"; + } + + StringBuilder buffer = new StringBuilder(mSize * 28); + buffer.append('{'); + for (int i=0; i 0) { + buffer.append(", "); + } + int key = keyAt(i); + buffer.append(key); + buffer.append('='); + Object value = valueAt(i); + if (value != this) { + buffer.append(value); + } else { + buffer.append("(this Map)"); + } + } + buffer.append('}'); + return buffer.toString(); + } +} diff --git a/src/api-impl/android/util/SparseIntArray.java b/src/api-impl/android/util/SparseIntArray.java new file mode 100644 index 00000000..0835cb02 --- /dev/null +++ b/src/api-impl/android/util/SparseIntArray.java @@ -0,0 +1,292 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import com.android.internal.util.ArrayUtils; + +/** + * SparseIntArrays map integers to integers. Unlike a normal array of integers, + * there can be gaps in the indices. It is intended to be more memory efficient + * than using a HashMap to map Integers to Integers, both because it avoids + * auto-boxing keys and values and its data structure doesn't rely on an extra entry object + * for each mapping. + * + *

Note that this container keeps its mappings in an array data structure, + * using a binary search to find keys. The implementation is not intended to be appropriate for + * data structures + * that may contain large numbers of items. It is generally slower than a traditional + * HashMap, since lookups require a binary search and adds and removes require inserting + * and deleting entries in the array. For containers holding up to hundreds of items, + * the performance difference is not significant, less than 50%.

+ * + *

It is possible to iterate over the items in this container using + * {@link #keyAt(int)} and {@link #valueAt(int)}. Iterating over the keys using + * keyAt(int) with ascending values of the index will return the + * keys in ascending order, or the values corresponding to the keys in ascending + * order in the case of valueAt(int).

+ */ +public class SparseIntArray implements Cloneable { + private int[] mKeys; + private int[] mValues; + private int mSize; + + /** + * Creates a new SparseIntArray containing no mappings. + */ + public SparseIntArray() { + this(10); + } + + /** + * Creates a new SparseIntArray containing no mappings that will not + * require any additional memory allocation to store the specified + * number of mappings. If you supply an initial capacity of 0, the + * sparse array will be initialized with a light-weight representation + * not requiring any additional array allocations. + */ + public SparseIntArray(int initialCapacity) { + if (initialCapacity == 0) { + mKeys = ContainerHelpers.EMPTY_INTS; + mValues = ContainerHelpers.EMPTY_INTS; + } else { + initialCapacity = ArrayUtils.idealIntArraySize(initialCapacity); + mKeys = new int[initialCapacity]; + mValues = new int[initialCapacity]; + } + mSize = 0; + } + + @Override + public SparseIntArray clone() { + SparseIntArray clone = null; + try { + clone = (SparseIntArray) super.clone(); + clone.mKeys = mKeys.clone(); + clone.mValues = mValues.clone(); + } catch (CloneNotSupportedException cnse) { + /* ignore */ + } + return clone; + } + + /** + * Gets the int mapped from the specified key, or 0 + * if no such mapping has been made. + */ + public int get(int key) { + return get(key, 0); + } + + /** + * Gets the int mapped from the specified key, or the specified value + * if no such mapping has been made. + */ + public int get(int key, int valueIfKeyNotFound) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i < 0) { + return valueIfKeyNotFound; + } else { + return mValues[i]; + } + } + + /** + * Removes the mapping from the specified key, if there was any. + */ + public void delete(int key) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + removeAt(i); + } + } + + /** + * Removes the mapping at the given index. + */ + public void removeAt(int index) { + System.arraycopy(mKeys, index + 1, mKeys, index, mSize - (index + 1)); + System.arraycopy(mValues, index + 1, mValues, index, mSize - (index + 1)); + mSize--; + } + + /** + * Adds a mapping from the specified key to the specified value, + * replacing the previous mapping from the specified key if there + * was one. + */ + public void put(int key, int value) { + int i = ContainerHelpers.binarySearch(mKeys, mSize, key); + + if (i >= 0) { + mValues[i] = value; + } else { + i = ~i; + + if (mSize >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(mSize + 1); + + int[] nkeys = new int[n]; + int[] nvalues = new int[n]; + + // Log.e("SparseIntArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + if (mSize - i != 0) { + // Log.e("SparseIntArray", "move " + (mSize - i)); + System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i); + System.arraycopy(mValues, i, mValues, i + 1, mSize - i); + } + + mKeys[i] = key; + mValues[i] = value; + mSize++; + } + } + + /** + * Returns the number of key-value mappings that this SparseIntArray + * currently stores. + */ + public int size() { + return mSize; + } + + /** + * Given an index in the range 0...size()-1, returns + * the key from the indexth key-value mapping that this + * SparseIntArray stores. + * + *

The keys corresponding to indices in ascending order are guaranteed to + * be in ascending order, e.g., keyAt(0) will return the + * smallest key and keyAt(size()-1) will return the largest + * key.

+ */ + public int keyAt(int index) { + return mKeys[index]; + } + + /** + * Given an index in the range 0...size()-1, returns + * the value from the indexth key-value mapping that this + * SparseIntArray stores. + * + *

The values corresponding to indices in ascending order are guaranteed + * to be associated with keys in ascending order, e.g., + * valueAt(0) will return the value associated with the + * smallest key and valueAt(size()-1) will return the value + * associated with the largest key.

+ */ + public int valueAt(int index) { + return mValues[index]; + } + + /** + * Returns the index for which {@link #keyAt} would return the + * specified key, or a negative number if the specified + * key is not mapped. + */ + public int indexOfKey(int key) { + return ContainerHelpers.binarySearch(mKeys, mSize, key); + } + + /** + * Returns an index for which {@link #valueAt} would return the + * specified key, or a negative number if no keys map to the + * specified value. + * Beware that this is a linear search, unlike lookups by key, + * and that multiple keys can map to the same value and this will + * find only one of them. + */ + public int indexOfValue(int value) { + for (int i = 0; i < mSize; i++) + if (mValues[i] == value) + return i; + + return -1; + } + + /** + * Removes all key-value mappings from this SparseIntArray. + */ + public void clear() { + mSize = 0; + } + + /** + * Puts a key/value pair into the array, optimizing for the case where + * the key is greater than all existing keys in the array. + */ + public void append(int key, int value) { + if (mSize != 0 && key <= mKeys[mSize - 1]) { + put(key, value); + return; + } + + int pos = mSize; + if (pos >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(pos + 1); + + int[] nkeys = new int[n]; + int[] nvalues = new int[n]; + + // Log.e("SparseIntArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + mKeys[pos] = key; + mValues[pos] = value; + mSize = pos + 1; + } + + /** + * {@inheritDoc} + * + *

This implementation composes a string by iterating over its mappings. + */ + @Override + public String toString() { + if (size() <= 0) { + return "{}"; + } + + StringBuilder buffer = new StringBuilder(mSize * 28); + buffer.append('{'); + for (int i=0; i 0) { + buffer.append(", "); + } + int key = keyAt(i); + buffer.append(key); + buffer.append('='); + int value = valueAt(i); + buffer.append(value); + } + buffer.append('}'); + return buffer.toString(); + } +} diff --git a/src/api-impl/android/util/StateSet.java b/src/api-impl/android/util/StateSet.java new file mode 100644 index 00000000..2623638d --- /dev/null +++ b/src/api-impl/android/util/StateSet.java @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import com.android.internal.R; + +/** + * State sets are arrays of positive ints where each element + * represents the state of a {@link android.view.View} (e.g. focused, + * selected, visible, etc.). A {@link android.view.View} may be in + * one or more of those states. + * + * A state spec is an array of signed ints where each element + * represents a required (if positive) or an undesired (if negative) + * {@link android.view.View} state. + * + * Utils dealing with state sets. + * + * In theory we could encapsulate the state set and state spec arrays + * and not have static methods here but there is some concern about + * performance since these methods are called during view drawing. + */ + +public class StateSet { + /** @hide */ public StateSet() {} + + public static final int[] WILD_CARD = new int[0]; + public static final int[] NOTHING = new int[] { 0 }; + + /** + * Return whether the stateSetOrSpec is matched by all StateSets. + * + * @param stateSetOrSpec a state set or state spec. + */ + public static boolean isWildCard(int[] stateSetOrSpec) { + return stateSetOrSpec.length == 0 || stateSetOrSpec[0] == 0; + } + + /** + * Return whether the stateSet matches the desired stateSpec. + * + * @param stateSpec an array of required (if positive) or + * prohibited (if negative) {@link android.view.View} states. + * @param stateSet an array of {@link android.view.View} states + */ + public static boolean stateSetMatches(int[] stateSpec, int[] stateSet) { + if (stateSet == null) { + return (stateSpec == null || isWildCard(stateSpec)); + } + int stateSpecSize = stateSpec.length; + int stateSetSize = stateSet.length; + for (int i = 0; i < stateSpecSize; i++) { + int stateSpecState = stateSpec[i]; + if (stateSpecState == 0) { + // We've reached the end of the cases to match against. + return true; + } + final boolean mustMatch; + if (stateSpecState > 0) { + mustMatch = true; + } else { + // We use negative values to indicate must-NOT-match states. + mustMatch = false; + stateSpecState = -stateSpecState; + } + boolean found = false; + for (int j = 0; j < stateSetSize; j++) { + final int state = stateSet[j]; + if (state == 0) { + // We've reached the end of states to match. + if (mustMatch) { + // We didn't find this must-match state. + return false; + } else { + // Continue checking other must-not-match states. + break; + } + } + if (state == stateSpecState) { + if (mustMatch) { + found = true; + // Continue checking other other must-match states. + break; + } else { + // Any match of a must-not-match state returns false. + return false; + } + } + } + if (mustMatch && !found) { + // We've reached the end of states to match and we didn't + // find a must-match state. + return false; + } + } + return true; + } + + /** + * Return whether the state matches the desired stateSpec. + * + * @param stateSpec an array of required (if positive) or + * prohibited (if negative) {@link android.view.View} states. + * @param state a {@link android.view.View} state + */ + public static boolean stateSetMatches(int[] stateSpec, int state) { + int stateSpecSize = stateSpec.length; + for (int i = 0; i < stateSpecSize; i++) { + int stateSpecState = stateSpec[i]; + if (stateSpecState == 0) { + // We've reached the end of the cases to match against. + return true; + } + if (stateSpecState > 0) { + if (state != stateSpecState) { + return false; + } + } else { + // We use negative values to indicate must-NOT-match states. + if (state == -stateSpecState) { + // We matched a must-not-match case. + return false; + } + } + } + return true; + } + + public static int[] trimStateSet(int[] states, int newSize) { + if (states.length == newSize) { + return states; + } + + int[] trimmedStates = new int[newSize]; + System.arraycopy(states, 0, trimmedStates, 0, newSize); + return trimmedStates; + } + + public static String dump(int[] states) { + StringBuilder sb = new StringBuilder(); + + int count = states.length; + for (int i = 0; i < count; i++) { + + switch (states[i]) { + case R.attr.state_window_focused: + sb.append("W "); + break; + case R.attr.state_pressed: + sb.append("P "); + break; + case R.attr.state_selected: + sb.append("S "); + break; + case R.attr.state_focused: + sb.append("F "); + break; + case R.attr.state_enabled: + sb.append("E "); + break; + } + } + + return sb.toString(); + } +} diff --git a/src/api-impl/android/util/TypedValue.java b/src/api-impl/android/util/TypedValue.java new file mode 100644 index 00000000..ed452985 --- /dev/null +++ b/src/api-impl/android/util/TypedValue.java @@ -0,0 +1,494 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +/** + * Container for a dynamically typed data value. Primarily used with + * {@link android.content.res.Resources} for holding resource values. + */ +public class TypedValue { + /** The value contains no data. */ + public static final int TYPE_NULL = 0x00; + + /** The data field holds a resource identifier. */ + public static final int TYPE_REFERENCE = 0x01; + /** The data field holds an attribute resource + * identifier (referencing an attribute in the current theme + * style, not a resource entry). */ + public static final int TYPE_ATTRIBUTE = 0x02; + /** The string field holds string data. In addition, if + * data is non-zero then it is the string block + * index of the string and assetCookie is the set of + * assets the string came from. */ + public static final int TYPE_STRING = 0x03; + /** The data field holds an IEEE 754 floating point number. */ + public static final int TYPE_FLOAT = 0x04; + /** The data field holds a complex number encoding a + * dimension value. */ + public static final int TYPE_DIMENSION = 0x05; + /** The data field holds a complex number encoding a fraction + * of a container. */ + public static final int TYPE_FRACTION = 0x06; + + /** Identifies the start of plain integer values. Any type value + * from this to {@link #TYPE_LAST_INT} means the + * data field holds a generic integer value. */ + public static final int TYPE_FIRST_INT = 0x10; + + /** The data field holds a number that was + * originally specified in decimal. */ + public static final int TYPE_INT_DEC = 0x10; + /** The data field holds a number that was + * originally specified in hexadecimal (0xn). */ + public static final int TYPE_INT_HEX = 0x11; + /** The data field holds 0 or 1 that was originally + * specified as "false" or "true". */ + public static final int TYPE_INT_BOOLEAN = 0x12; + + /** Identifies the start of integer values that were specified as + * color constants (starting with '#'). */ + public static final int TYPE_FIRST_COLOR_INT = 0x1c; + + /** The data field holds a color that was originally + * specified as #aarrggbb. */ + public static final int TYPE_INT_COLOR_ARGB8 = 0x1c; + /** The data field holds a color that was originally + * specified as #rrggbb. */ + public static final int TYPE_INT_COLOR_RGB8 = 0x1d; + /** The data field holds a color that was originally + * specified as #argb. */ + public static final int TYPE_INT_COLOR_ARGB4 = 0x1e; + /** The data field holds a color that was originally + * specified as #rgb. */ + public static final int TYPE_INT_COLOR_RGB4 = 0x1f; + + /** Identifies the end of integer values that were specified as color + * constants. */ + public static final int TYPE_LAST_COLOR_INT = 0x1f; + + /** Identifies the end of plain integer values. */ + public static final int TYPE_LAST_INT = 0x1f; + + /* ------------------------------------------------------------ */ + + /** Complex data: bit location of unit information. */ + public static final int COMPLEX_UNIT_SHIFT = 0; + /** Complex data: mask to extract unit information (after shifting by + * {@link #COMPLEX_UNIT_SHIFT}). This gives us 16 possible types, as + * defined below. */ + public static final int COMPLEX_UNIT_MASK = 0xf; + + /** {@link #TYPE_DIMENSION} complex unit: Value is raw pixels. */ + public static final int COMPLEX_UNIT_PX = 0; + /** {@link #TYPE_DIMENSION} complex unit: Value is Device Independent + * Pixels. */ + public static final int COMPLEX_UNIT_DIP = 1; + /** {@link #TYPE_DIMENSION} complex unit: Value is a scaled pixel. */ + public static final int COMPLEX_UNIT_SP = 2; + /** {@link #TYPE_DIMENSION} complex unit: Value is in points. */ + public static final int COMPLEX_UNIT_PT = 3; + /** {@link #TYPE_DIMENSION} complex unit: Value is in inches. */ + public static final int COMPLEX_UNIT_IN = 4; + /** {@link #TYPE_DIMENSION} complex unit: Value is in millimeters. */ + public static final int COMPLEX_UNIT_MM = 5; + + /** {@link #TYPE_FRACTION} complex unit: A basic fraction of the overall + * size. */ + public static final int COMPLEX_UNIT_FRACTION = 0; + /** {@link #TYPE_FRACTION} complex unit: A fraction of the parent size. */ + public static final int COMPLEX_UNIT_FRACTION_PARENT = 1; + + /** Complex data: where the radix information is, telling where the decimal + * place appears in the mantissa. */ + public static final int COMPLEX_RADIX_SHIFT = 4; + /** Complex data: mask to extract radix information (after shifting by + * {@link #COMPLEX_RADIX_SHIFT}). This give us 4 possible fixed point + * representations as defined below. */ + public static final int COMPLEX_RADIX_MASK = 0x3; + + /** Complex data: the mantissa is an integral number -- i.e., 0xnnnnnn.0 */ + public static final int COMPLEX_RADIX_23p0 = 0; + /** Complex data: the mantissa magnitude is 16 bits -- i.e, 0xnnnn.nn */ + public static final int COMPLEX_RADIX_16p7 = 1; + /** Complex data: the mantissa magnitude is 8 bits -- i.e, 0xnn.nnnn */ + public static final int COMPLEX_RADIX_8p15 = 2; + /** Complex data: the mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnn */ + public static final int COMPLEX_RADIX_0p23 = 3; + + /** Complex data: bit location of mantissa information. */ + public static final int COMPLEX_MANTISSA_SHIFT = 8; + /** Complex data: mask to extract mantissa information (after shifting by + * {@link #COMPLEX_MANTISSA_SHIFT}). This gives us 23 bits of precision; + * the top bit is the sign. */ + public static final int COMPLEX_MANTISSA_MASK = 0xffffff; + + /* ------------------------------------------------------------ */ + + /** + * If {@link #density} is equal to this value, then the density should be + * treated as the system's default density value: {@link DisplayMetrics#DENSITY_DEFAULT}. + */ + public static final int DENSITY_DEFAULT = 0; + + /** + * If {@link #density} is equal to this value, then there is no density + * associated with the resource and it should not be scaled. + */ + public static final int DENSITY_NONE = 0xffff; + + /* ------------------------------------------------------------ */ + + /** The type held by this value, as defined by the constants here. + * This tells you how to interpret the other fields in the object. */ + public int type; + + /** If the value holds a string, this is it. */ + public CharSequence string; + + /** Basic data in the value, interpreted according to {@link #type} */ + public int data; + + /** Additional information about where the value came from; only + * set for strings. */ + public int assetCookie; + + /** If Value came from a resource, this holds the corresponding resource id. */ + public int resourceId; + + /** If Value came from a resource, these are the configurations for which + * its contents can change. */ + public int changingConfigurations = -1; + + /** + * If the Value came from a resource, this holds the corresponding pixel density. + * */ + public int density; + + /* ------------------------------------------------------------ */ + + /** Return the data for this value as a float. Only use for values + * whose type is {@link #TYPE_FLOAT}. */ + public final float getFloat() { + return Float.intBitsToFloat(data); + } + + private static final float MANTISSA_MULT = + 1.0f / (1<>TypedValue.COMPLEX_RADIX_SHIFT) + & TypedValue.COMPLEX_RADIX_MASK]; + } + + /** + * Converts a complex data value holding a dimension to its final floating + * point value. The given data must be structured as a + * {@link #TYPE_DIMENSION}. + * + * @param data A complex data value holding a unit, magnitude, and + * mantissa. + * @param metrics Current display metrics to use in the conversion -- + * supplies display density and scaling information. + * + * @return The complex floating point value multiplied by the appropriate + * metrics depending on its unit. + */ + public static float complexToDimension(int data, DisplayMetrics metrics) + { + return applyDimension( + (data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK, + complexToFloat(data), + metrics); + } + + /** + * Converts a complex data value holding a dimension to its final value + * as an integer pixel offset. This is the same as + * {@link #complexToDimension}, except the raw floating point value is + * truncated to an integer (pixel) value. + * The given data must be structured as a + * {@link #TYPE_DIMENSION}. + * + * @param data A complex data value holding a unit, magnitude, and + * mantissa. + * @param metrics Current display metrics to use in the conversion -- + * supplies display density and scaling information. + * + * @return The number of pixels specified by the data and its desired + * multiplier and units. + */ + public static int complexToDimensionPixelOffset(int data, + DisplayMetrics metrics) + { + return (int)applyDimension( + (data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK, + complexToFloat(data), + metrics); + } + + /** + * Converts a complex data value holding a dimension to its final value + * as an integer pixel size. This is the same as + * {@link #complexToDimension}, except the raw floating point value is + * converted to an integer (pixel) value for use as a size. A size + * conversion involves rounding the base value, and ensuring that a + * non-zero base value is at least one pixel in size. + * The given data must be structured as a + * {@link #TYPE_DIMENSION}. + * + * @param data A complex data value holding a unit, magnitude, and + * mantissa. + * @param metrics Current display metrics to use in the conversion -- + * supplies display density and scaling information. + * + * @return The number of pixels specified by the data and its desired + * multiplier and units. + */ + public static int complexToDimensionPixelSize(int data, + DisplayMetrics metrics) + { + final float value = complexToFloat(data); + final float f = applyDimension( + (data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK, + value, + metrics); + final int res = (int)(f+0.5f); + if (res != 0) return res; + if (value == 0) return 0; + if (value > 0) return 1; + return -1; + } + + public static float complexToDimensionNoisy(int data, DisplayMetrics metrics) + { + float res = complexToDimension(data, metrics); + System.out.println( + "Dimension (0x" + ((data>>TypedValue.COMPLEX_MANTISSA_SHIFT) + & TypedValue.COMPLEX_MANTISSA_MASK) + + "*" + (RADIX_MULTS[(data>>TypedValue.COMPLEX_RADIX_SHIFT) + & TypedValue.COMPLEX_RADIX_MASK] / MANTISSA_MULT) + + ")" + DIMENSION_UNIT_STRS[(data>>COMPLEX_UNIT_SHIFT) + & COMPLEX_UNIT_MASK] + + " = " + res); + return res; + } + + /** + * Converts an unpacked complex data value holding a dimension to its final floating + * point value. The two parameters unit and value + * are as in {@link #TYPE_DIMENSION}. + * + * @param unit The unit to convert from. + * @param value The value to apply the unit to. + * @param metrics Current display metrics to use in the conversion -- + * supplies display density and scaling information. + * + * @return The complex floating point value multiplied by the appropriate + * metrics depending on its unit. + */ + public static float applyDimension(int unit, float value, + DisplayMetrics metrics) + { + switch (unit) { + case COMPLEX_UNIT_PX: + return value; + case COMPLEX_UNIT_DIP: + return value * metrics.density; + case COMPLEX_UNIT_SP: + return value * metrics.scaledDensity; + case COMPLEX_UNIT_PT: + return value * metrics.xdpi * (1.0f/72); + case COMPLEX_UNIT_IN: + return value * metrics.xdpi; + case COMPLEX_UNIT_MM: + return value * metrics.xdpi * (1.0f/25.4f); + } + return 0; + } + + /** + * Return the data for this value as a dimension. Only use for values + * whose type is {@link #TYPE_DIMENSION}. + * + * @param metrics Current display metrics to use in the conversion -- + * supplies display density and scaling information. + * + * @return The complex floating point value multiplied by the appropriate + * metrics depending on its unit. + */ + public float getDimension(DisplayMetrics metrics) + { + return complexToDimension(data, metrics); + } + + /** + * Converts a complex data value holding a fraction to its final floating + * point value. The given data must be structured as a + * {@link #TYPE_FRACTION}. + * + * @param data A complex data value holding a unit, magnitude, and + * mantissa. + * @param base The base value of this fraction. In other words, a + * standard fraction is multiplied by this value. + * @param pbase The parent base value of this fraction. In other + * words, a parent fraction (nn%p) is multiplied by this + * value. + * + * @return The complex floating point value multiplied by the appropriate + * base value depending on its unit. + */ + public static float complexToFraction(int data, float base, float pbase) + { + switch ((data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK) { + case COMPLEX_UNIT_FRACTION: + return complexToFloat(data) * base; + case COMPLEX_UNIT_FRACTION_PARENT: + return complexToFloat(data) * pbase; + } + return 0; + } + + /** + * Return the data for this value as a fraction. Only use for values whose + * type is {@link #TYPE_FRACTION}. + * + * @param base The base value of this fraction. In other words, a + * standard fraction is multiplied by this value. + * @param pbase The parent base value of this fraction. In other + * words, a parent fraction (nn%p) is multiplied by this + * value. + * + * @return The complex floating point value multiplied by the appropriate + * base value depending on its unit. + */ + public float getFraction(float base, float pbase) + { + return complexToFraction(data, base, pbase); + } + + /** + * Regardless of the actual type of the value, try to convert it to a + * string value. For example, a color type will be converted to a + * string of the form #aarrggbb. + * + * @return CharSequence The coerced string value. If the value is + * null or the type is not known, null is returned. + */ + public final CharSequence coerceToString() + { + int t = type; + if (t == TYPE_STRING) { + return string; + } + return coerceToString(t, data); + } + + private static final String[] DIMENSION_UNIT_STRS = new String[] { + "px", "dip", "sp", "pt", "in", "mm" + }; + private static final String[] FRACTION_UNIT_STRS = new String[] { + "%", "%p" + }; + + /** + * Perform type conversion as per {@link #coerceToString()} on an + * explicitly supplied type and data. + * + * @param type The data type identifier. + * @param data The data value. + * + * @return String The coerced string value. If the value is + * null or the type is not known, null is returned. + */ + public static final String coerceToString(int type, int data) + { + switch (type) { + case TYPE_NULL: + return null; + case TYPE_REFERENCE: + return "@" + data; + case TYPE_ATTRIBUTE: + return "?" + data; + case TYPE_FLOAT: + return Float.toString(Float.intBitsToFloat(data)); + case TYPE_DIMENSION: + return Float.toString(complexToFloat(data)) + DIMENSION_UNIT_STRS[ + (data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK]; + case TYPE_FRACTION: + return Float.toString(complexToFloat(data)*100) + FRACTION_UNIT_STRS[ + (data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK]; + case TYPE_INT_HEX: + return "0x" + Integer.toHexString(data); + case TYPE_INT_BOOLEAN: + return data != 0 ? "true" : "false"; + } + + if (type >= TYPE_FIRST_COLOR_INT && type <= TYPE_LAST_COLOR_INT) { + return "#" + Integer.toHexString(data); + } else if (type >= TYPE_FIRST_INT && type <= TYPE_LAST_INT) { + return Integer.toString(data); + } + + return null; + } + + public void setTo(TypedValue other) + { + type = other.type; + string = other.string; + data = other.data; + assetCookie = other.assetCookie; + resourceId = other.resourceId; + density = other.density; + } + + public String toString() + { + StringBuilder sb = new StringBuilder(); + sb.append("TypedValue{t=0x").append(Integer.toHexString(type)); + sb.append("/d=0x").append(Integer.toHexString(data)); + if (type == TYPE_STRING) { + sb.append(" \"").append(string != null ? string : "").append("\""); + } + if (assetCookie != 0) { + sb.append(" a=").append(assetCookie); + } + if (resourceId != 0) { + sb.append(" r=0x").append(Integer.toHexString(resourceId)); + } + sb.append("}"); + return sb.toString(); + } +}; + diff --git a/src/api-impl/android/util/Xml.java b/src/api-impl/android/util/Xml.java new file mode 100644 index 00000000..041e8a85 --- /dev/null +++ b/src/api-impl/android/util/Xml.java @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import org.apache.harmony.xml.ExpatReader; +import org.kxml2.io.KXmlParser; +import org.xml.sax.ContentHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlPullParserFactory; +import org.xmlpull.v1.XmlSerializer; + +/** + * XML utility methods. + */ +public class Xml { + /** @hide */ public Xml() {} + + /** + * {@link org.xmlpull.v1.XmlPullParser} "relaxed" feature name. + * + * @see + * specification + */ + public static String FEATURE_RELAXED = "http://xmlpull.org/v1/doc/features.html#relaxed"; + + /** + * Parses the given xml string and fires events on the given SAX handler. + */ + public static void parse(String xml, ContentHandler contentHandler) + throws SAXException { + try { + XMLReader reader = new ExpatReader(); + reader.setContentHandler(contentHandler); + reader.parse(new InputSource(new StringReader(xml))); + } catch (IOException e) { + throw new AssertionError(e); + } + } + + /** + * Parses xml from the given reader and fires events on the given SAX + * handler. + */ + public static void parse(Reader in, ContentHandler contentHandler) + throws IOException, SAXException { + XMLReader reader = new ExpatReader(); + reader.setContentHandler(contentHandler); + reader.parse(new InputSource(in)); + } + + /** + * Parses xml from the given input stream and fires events on the given SAX + * handler. + */ + public static void parse(InputStream in, Encoding encoding, + ContentHandler contentHandler) throws IOException, SAXException { + XMLReader reader = new ExpatReader(); + reader.setContentHandler(contentHandler); + InputSource source = new InputSource(in); + source.setEncoding(encoding.expatName); + reader.parse(source); + } + + /** + * Returns a new pull parser with namespace support. + */ + public static XmlPullParser newPullParser() { + try { + KXmlParser parser = new KXmlParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); + return parser; + } catch (XmlPullParserException e) { + throw new AssertionError(); + } + } + + /** + * Creates a new xml serializer. + */ + public static XmlSerializer newSerializer() { + try { + return XmlSerializerFactory.instance.newSerializer(); + } catch (XmlPullParserException e) { + throw new AssertionError(e); + } + } + + /** Factory for xml serializers. Initialized on demand. */ + static class XmlSerializerFactory { + static final String TYPE + = "org.kxml2.io.KXmlParser,org.kxml2.io.KXmlSerializer"; + static final XmlPullParserFactory instance; + static { + try { + instance = XmlPullParserFactory.newInstance(TYPE, null); + } catch (XmlPullParserException e) { + throw new AssertionError(e); + } + } + } + + /** + * Supported character encodings. + */ + public enum Encoding { + + US_ASCII("US-ASCII"), + UTF_8("UTF-8"), + UTF_16("UTF-16"), + ISO_8859_1("ISO-8859-1"); + + final String expatName; + + Encoding(String expatName) { + this.expatName = expatName; + } + } + + /** + * Finds an encoding by name. Returns UTF-8 if you pass {@code null}. + */ + public static Encoding findEncodingByName(String encodingName) + throws UnsupportedEncodingException { + if (encodingName == null) { + return Encoding.UTF_8; + } + + for (Encoding encoding : Encoding.values()) { + if (encoding.expatName.equalsIgnoreCase(encodingName)) + return encoding; + } + throw new UnsupportedEncodingException(encodingName); + } + + /** + * Return an AttributeSet interface for use with the given XmlPullParser. + * If the given parser itself implements AttributeSet, that implementation + * is simply returned. Otherwise a wrapper class is + * instantiated on top of the XmlPullParser, as a proxy for retrieving its + * attributes, and returned to you. + * + * @param parser The existing parser for which you would like an + * AttributeSet. + * + * @return An AttributeSet you can use to retrieve the + * attribute values at each of the tags as the parser moves + * through its XML document. + * + * @see AttributeSet + */ + public static AttributeSet asAttributeSet(XmlPullParser parser) { + return (parser instanceof AttributeSet) + ? (AttributeSet) parser + : new XmlPullAttributes(parser); + } +} diff --git a/src/api-impl/android/util/XmlPullAttributes.java b/src/api-impl/android/util/XmlPullAttributes.java new file mode 100644 index 00000000..bd6800d5 --- /dev/null +++ b/src/api-impl/android/util/XmlPullAttributes.java @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import org.xmlpull.v1.XmlPullParser; + +import android.util.AttributeSet; + +import com.android.internal.util.XmlUtils; + +/** + * Provides an implementation of AttributeSet on top of an XmlPullParser. + */ +class XmlPullAttributes implements AttributeSet { + XmlPullParser mParser; + + public XmlPullAttributes(XmlPullParser parser) { + mParser = parser; + } + + public int getAttributeCount() { + return mParser.getAttributeCount(); + } + + public String getAttributeNamespace (int index) { + return mParser.getAttributeNamespace(index); + } + + public String getAttributeName(int index) { + return mParser.getAttributeName(index); + } + + public String getAttributeValue(int index) { + return mParser.getAttributeValue(index); + } + + public String getAttributeValue(String namespace, String name) { + return mParser.getAttributeValue(namespace, name); + } + + public String getPositionDescription() { + return mParser.getPositionDescription(); + } + + public int getAttributeNameResource(int index) { + return 0; + } + + public int getAttributeListValue(String namespace, String attribute, + String[] options, int defaultValue) { + return XmlUtils.convertValueToList( + getAttributeValue(namespace, attribute), options, defaultValue); + } + + public boolean getAttributeBooleanValue(String namespace, String attribute, + boolean defaultValue) { + return XmlUtils.convertValueToBoolean( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeResourceValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeIntValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public int getAttributeUnsignedIntValue(String namespace, String attribute, + int defaultValue) { + return XmlUtils.convertValueToUnsignedInt( + getAttributeValue(namespace, attribute), defaultValue); + } + + public float getAttributeFloatValue(String namespace, String attribute, + float defaultValue) { + String s = getAttributeValue(namespace, attribute); + if (s != null) { + return Float.parseFloat(s); + } + return defaultValue; + } + + public int getAttributeListValue(int index, + String[] options, int defaultValue) { + return XmlUtils.convertValueToList( + getAttributeValue(index), options, defaultValue); + } + + public boolean getAttributeBooleanValue(int index, boolean defaultValue) { + return XmlUtils.convertValueToBoolean( + getAttributeValue(index), defaultValue); + } + + public int getAttributeResourceValue(int index, int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(index), defaultValue); + } + + public int getAttributeIntValue(int index, int defaultValue) { + return XmlUtils.convertValueToInt( + getAttributeValue(index), defaultValue); + } + + public int getAttributeUnsignedIntValue(int index, int defaultValue) { + return XmlUtils.convertValueToUnsignedInt( + getAttributeValue(index), defaultValue); + } + + public float getAttributeFloatValue(int index, float defaultValue) { + String s = getAttributeValue(index); + if (s != null) { + return Float.parseFloat(s); + } + return defaultValue; + } + + public String getIdAttribute() { + return getAttributeValue(null, "id"); + } + + public String getClassAttribute() { + return getAttributeValue(null, "class"); + } + + public int getIdAttributeResourceValue(int defaultValue) { + return getAttributeResourceValue(null, "id", defaultValue); + } + + public int getStyleAttribute() { + return getAttributeResourceValue(null, "style", 0); + } +} + diff --git a/src/api-impl/android/view/Display.java b/src/api-impl/android/view/Display.java new file mode 100644 index 00000000..bde6d72c --- /dev/null +++ b/src/api-impl/android/view/Display.java @@ -0,0 +1,20 @@ +package android.view; + +import android.util.DisplayMetrics; + +public final class Display { + + public static int window_width = 960; + public static int window_height = 540; + + // FIXME: what do we return here? + // we don't want to hardcode this stuff, but at the same time the apps can cache it + public void getMetrics(DisplayMetrics outMetrics) { + outMetrics.widthPixels = this.window_width; + outMetrics.heightPixels = this.window_height; + } + + public int getRotation() { + return 0/*ROTATION_0*/; + } +} diff --git a/src/api-impl/android/view/Gravity.java b/src/api-impl/android/view/Gravity.java new file mode 100644 index 00000000..9a89fa58 --- /dev/null +++ b/src/api-impl/android/view/Gravity.java @@ -0,0 +1,443 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; +import android.graphics.Rect; + +/** + * Standard constants and tools for placing an object within a potentially + * larger container. + */ +public class Gravity +{ + /** Constant indicating that no gravity has been set **/ + public static final int NO_GRAVITY = 0x0000; + + /** Raw bit indicating the gravity for an axis has been specified. */ + public static final int AXIS_SPECIFIED = 0x0001; + + /** Raw bit controlling how the left/top edge is placed. */ + public static final int AXIS_PULL_BEFORE = 0x0002; + /** Raw bit controlling how the right/bottom edge is placed. */ + public static final int AXIS_PULL_AFTER = 0x0004; + /** Raw bit controlling whether the right/bottom edge is clipped to its + * container, based on the gravity direction being applied. */ + public static final int AXIS_CLIP = 0x0008; + + /** Bits defining the horizontal axis. */ + public static final int AXIS_X_SHIFT = 0; + /** Bits defining the vertical axis. */ + public static final int AXIS_Y_SHIFT = 4; + + /** Push object to the top of its container, not changing its size. */ + public static final int TOP = (AXIS_PULL_BEFORE|AXIS_SPECIFIED)< container.right) { + outRect.right = container.right; + } + } + break; + case AXIS_PULL_BEFORE< container.right) { + outRect.right = container.right; + } + } + break; + case AXIS_PULL_AFTER< container.bottom) { + outRect.bottom = container.bottom; + } + } + break; + case AXIS_PULL_BEFORE< container.bottom) { + outRect.bottom = container.bottom; + } + } + break; + case AXIS_PULL_AFTER< display.bottom) inoutObj.bottom = display.bottom; + } else { + int off = 0; + if (inoutObj.top < display.top) off = display.top-inoutObj.top; + else if (inoutObj.bottom > display.bottom) off = display.bottom-inoutObj.bottom; + if (off != 0) { + if (inoutObj.height() > (display.bottom-display.top)) { + inoutObj.top = display.top; + inoutObj.bottom = display.bottom; + } else { + inoutObj.top += off; + inoutObj.bottom += off; + } + } + } + + if ((gravity&DISPLAY_CLIP_HORIZONTAL) != 0) { + if (inoutObj.left < display.left) inoutObj.left = display.left; + if (inoutObj.right > display.right) inoutObj.right = display.right; + } else { + int off = 0; + if (inoutObj.left < display.left) off = display.left-inoutObj.left; + else if (inoutObj.right > display.right) off = display.right-inoutObj.right; + if (off != 0) { + if (inoutObj.width() > (display.right-display.left)) { + inoutObj.left = display.left; + inoutObj.right = display.right; + } else { + inoutObj.left += off; + inoutObj.right += off; + } + } + } + } + + /** + * Apply additional gravity behavior based on the overall "display" that an + * object exists in. This can be used after + * {@link #apply(int, int, int, Rect, int, int, Rect)} to place the object + * within a visible display. By default this moves or clips the object + * to be visible in the display; the gravity flags + * {@link #DISPLAY_CLIP_HORIZONTAL} and {@link #DISPLAY_CLIP_VERTICAL} + * can be used to change this behavior. + * + * @param gravity Gravity constants to modify the placement within the + * display. + * @param display The rectangle of the display in which the object is + * being placed. + * @param inoutObj Supplies the current object position; returns with it + * modified if needed to fit in the display. + * @param layoutDirection The layout direction. + * + * @see View#LAYOUT_DIRECTION_LTR + * @see View#LAYOUT_DIRECTION_RTL + */ + public static void applyDisplay(int gravity, Rect display, Rect inoutObj, int layoutDirection) { + int absGravity = getAbsoluteGravity(gravity, layoutDirection); + applyDisplay(absGravity, display, inoutObj); + } + + /** + *

Indicate whether the supplied gravity has a vertical pull.

+ * + * @param gravity the gravity to check for vertical pull + * @return true if the supplied gravity has a vertical pull + */ + public static boolean isVertical(int gravity) { + return gravity > 0 && (gravity & VERTICAL_GRAVITY_MASK) != 0; + } + + /** + *

Indicate whether the supplied gravity has an horizontal pull.

+ * + * @param gravity the gravity to check for horizontal pull + * @return true if the supplied gravity has an horizontal pull + */ + public static boolean isHorizontal(int gravity) { + return gravity > 0 && (gravity & RELATIVE_HORIZONTAL_GRAVITY_MASK) != 0; + } + + /** + *

Convert script specific gravity to absolute horizontal value.

+ * + * if horizontal direction is LTR, then START will set LEFT and END will set RIGHT. + * if horizontal direction is RTL, then START will set RIGHT and END will set LEFT. + * + * + * @param gravity The gravity to convert to absolute (horizontal) values. + * @param layoutDirection The layout direction. + * @return gravity converted to absolute (horizontal) values. + */ + public static int getAbsoluteGravity(int gravity, int layoutDirection) { + int result = gravity; + // If layout is script specific and gravity is horizontal relative (START or END) + if ((result & RELATIVE_LAYOUT_DIRECTION) > 0) { + if ((result & Gravity.START) == Gravity.START) { + // Remove the START bit + result &= ~START; + if (layoutDirection == View.LAYOUT_DIRECTION_RTL) { + // Set the RIGHT bit + result |= RIGHT; + } else { + // Set the LEFT bit + result |= LEFT; + } + } else if ((result & Gravity.END) == Gravity.END) { + // Remove the END bit + result &= ~END; + if (layoutDirection == View.LAYOUT_DIRECTION_RTL) { + // Set the LEFT bit + result |= LEFT; + } else { + // Set the RIGHT bit + result |= RIGHT; + } + } + // Don't need the script specific bit any more, so remove it as we are converting to + // absolute values (LEFT or RIGHT) + result &= ~RELATIVE_LAYOUT_DIRECTION; + } + return result; + } +} diff --git a/src/api-impl/android/view/InputEvent.java b/src/api-impl/android/view/InputEvent.java new file mode 100644 index 00000000..aa2b68e8 --- /dev/null +++ b/src/api-impl/android/view/InputEvent.java @@ -0,0 +1,216 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import java.util.concurrent.atomic.AtomicInteger; + +class InputDevice {} + +/** + * Common base class for input events. + */ +public abstract class InputEvent { + /** @hide */ + protected static final int PARCEL_TOKEN_MOTION_EVENT = 1; + /** @hide */ + protected static final int PARCEL_TOKEN_KEY_EVENT = 2; + + // Next sequence number. + private static final AtomicInteger mNextSeq = new AtomicInteger(); + + /** @hide */ + protected int mSeq; + + /** @hide */ + protected boolean mRecycled; + + private static final boolean TRACK_RECYCLED_LOCATION = false; + private RuntimeException mRecycledLocation; + + /*package*/ InputEvent() { + mSeq = mNextSeq.getAndIncrement(); + } + + /** + * Gets the id for the device that this event came from. An id of + * zero indicates that the event didn't come from a physical device + * and maps to the default keymap. The other numbers are arbitrary and + * you shouldn't depend on the values. + * + * @return The device id. + * @see InputDevice#getDevice + */ + public abstract int getDeviceId(); + + /** + * Gets the device that this event came from. + * + * @return The device, or null if unknown. + */ + public final InputDevice getDevice() { + return null/*InputDevice.getDevice(getDeviceId())*/; + } + + /** + * Gets the source of the event. + * + * @return The event source or {@link InputDevice#SOURCE_UNKNOWN} if unknown. + * @see InputDevice#getSources + */ + public abstract int getSource(); + + /** + * Modifies the source of the event. + * + * @param source The new source. + * @hide + */ + public abstract void setSource(int source); + + /** + * Determines whether the event is from the given source. + * + * @param source The input source to check against. This can be a specific device type, such as + * {@link InputDevice#SOURCE_TOUCH_NAVIGATION}, or a more generic device class, such as + * {@link InputDevice#SOURCE_CLASS_POINTER}. + * @return Whether the event is from the given source. + */ + public boolean isFromSource(int source) { + return (getSource() & source) == source; + } + + /** + * Copies the event. + * + * @return A deep copy of the event. + * @hide + */ + public abstract InputEvent copy(); + + /** + * Recycles the event. + * This method should only be used by the system since applications do not + * expect {@link KeyEvent} objects to be recycled, although {@link MotionEvent} + * objects are fine. See {@link KeyEvent#recycle()} for details. + * @hide + */ + public void recycle() { + if (TRACK_RECYCLED_LOCATION) { + if (mRecycledLocation != null) { + throw new RuntimeException(toString() + " recycled twice!", mRecycledLocation); + } + mRecycledLocation = new RuntimeException("Last recycled here"); + } else { + if (mRecycled) { + throw new RuntimeException(toString() + " recycled twice!"); + } + mRecycled = true; + } + } + + /** + * Conditionally recycled the event if it is appropriate to do so after + * dispatching the event to an application. + * + * If the event is a {@link MotionEvent} then it is recycled. + * + * If the event is a {@link KeyEvent} then it is NOT recycled, because applications + * expect key events to be immutable so once the event has been dispatched to + * the application we can no longer recycle it. + * @hide + */ + public void recycleIfNeededAfterDispatch() { + recycle(); + } + + /** + * Reinitializes the event on reuse (after recycling). + * @hide + */ + protected void prepareForReuse() { + mRecycled = false; + mRecycledLocation = null; + mSeq = mNextSeq.getAndIncrement(); + } + + /** + * Gets a private flag that indicates when the system has detected that this input event + * may be inconsistent with respect to the sequence of previously delivered input events, + * such as when a key up event is sent but the key was not down or when a pointer + * move event is sent but the pointer is not down. + * + * @return True if this event is tainted. + * @hide + */ + public abstract boolean isTainted(); + + /** + * Sets a private flag that indicates when the system has detected that this input event + * may be inconsistent with respect to the sequence of previously delivered input events, + * such as when a key up event is sent but the key was not down or when a pointer + * move event is sent but the pointer is not down. + * + * @param tainted True if this event is tainted. + * @hide + */ + public abstract void setTainted(boolean tainted); + + /** + * Retrieve the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base. + * + * @return Returns the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base. + */ + public abstract long getEventTime(); + + /** + * Retrieve the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base but with + * nanosecond (instead of millisecond) precision. + *

+ * The value is in nanosecond precision but it may not have nanosecond accuracy. + *

+ * + * @return Returns the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base but with + * nanosecond (instead of millisecond) precision. + * + * @hide + */ + public abstract long getEventTimeNano(); + + /** + * Gets the unique sequence number of this event. + * Every input event that is created or received by a process has a + * unique sequence number. Moreover, a new sequence number is obtained + * each time an event object is recycled. + * + * Sequence numbers are only guaranteed to be locally unique within a process. + * Sequence numbers are not preserved when events are parceled. + * + * @return The unique sequence number of this event. + * @hide + */ + public int getSequenceNumber() { + return mSeq; + } + + public int describeContents() { + return 0; + } +} diff --git a/src/api-impl/android/view/LayoutInflater.java b/src/api-impl/android/view/LayoutInflater.java new file mode 100644 index 00000000..798980b8 --- /dev/null +++ b/src/api-impl/android/view/LayoutInflater.java @@ -0,0 +1,226 @@ +package android.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.util.Xml; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlPullParserFactory; + +import java.lang.reflect.Constructor; + +import java.io.FileReader; + +public class LayoutInflater { + + public interface Factory { + } + + public interface Factory2 { + } + + private Factory2 factory2; + + public final LayoutInflater.Factory getFactory() { + return null; + } + + public void setFactory2 (Factory2 factory) { + this.factory2 = factory; + } + + public static LayoutInflater from (Context context) { + return new LayoutInflater(); + } + + public final View createView(String name, String prefix, AttributeSet attrs) throws Exception { + System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>> createView("+name+", "+prefix+", "+attrs+");"); + + String view_class_name = prefix+name; + Class view_class = Class.forName(view_class_name); + + Constructor constructor = view_class.getConstructor(AttributeSet.class); + + View view_instance = (View)constructor.newInstance(attrs); + + return view_instance; + } + + /** + * taken as-is + */ + protected View onCreateView(String name, AttributeSet attrs) throws Exception { + try { // FIXME ugly + return createView(name, "android.view.", attrs); + } catch(java.lang.ClassNotFoundException e) { + return createView(name, "android.widget.", attrs); + } + } + + /** + * taken as-is + */ + protected View onCreateView(View parent, String name, AttributeSet attrs) throws Exception { + return onCreateView(name, attrs); + } + + View createViewFromTag(View parent, String name, AttributeSet attrs) throws Exception { + if (name.equals("view")) { + name = attrs.getAttributeValue(null, "class"); + } + + System.out.println("******** Creating view: " + name); + + View view; + + if (-1 == name.indexOf('.')) { + view = onCreateView(parent, name, attrs); + } else { + view = createView(name, null, attrs); + } + + System.out.println("Created view is: " + view); + return view; + + } + + public View inflate(int resource, ViewGroup root) throws Exception { + return inflate(resource, root, root != null); + } + + public View inflate(int layoutResID, ViewGroup root, boolean attachToRoot) throws Exception { + + String layout_xml_file = "data/" + Context.this_application.getString(layoutResID); + + System.out.println("loading layout from: " + layout_xml_file); + + XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); + factory.setNamespaceAware(true); + XmlPullParser xpp = factory.newPullParser(); + + xpp.setInput( new FileReader(layout_xml_file) ); + + return inflate(xpp, root, attachToRoot); + } + + public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) throws Exception { + + final AttributeSet attrs = Xml.asAttributeSet(parser); + + View result = root; + + // Look for the root node. + int type; + while ((type = parser.next()) != XmlPullParser.START_TAG && + type != XmlPullParser.END_DOCUMENT) { + // Empty + } + + if (type != XmlPullParser.START_TAG) { + throw new Exception(parser.getPositionDescription() + ": No start tag found!"); + } + + final String name = parser.getName(); + + System.out.println("**************************"); + System.out.println("Creating root view: " + name); + System.out.println("**************************"); + + if (name.equals("merge")) { + if (root == null || !attachToRoot) { + throw new Exception(" can be used only with a valid ViewGroup root and attachToRoot=true"); + } + + rInflate(parser, root, attrs, false); + } else { + // Temp is the root view that was found in the xml + View temp; + if (name.equals("blink")) { + throw new Exception(" not supported atm"); + /*temp = new BlinkLayout(mContext, attrs);*/ + } else { + temp = createViewFromTag(root, name, attrs); + } + + ViewGroup.LayoutParams params = null; + + if (root != null) { + System.out.println("Creating params from root: " + root); + + // Create layout params that match root, if supplied + params = root.generateLayoutParams(attrs); + if (!attachToRoot) { + // Set the layout params for temp if we are not + // attaching. (If we are, we use addView, below) + temp.setLayoutParams(params); + } + } + + System.out.println("-----> start inflating children"); + + // Inflate all children under temp + rInflate(parser, temp, attrs, true); + + System.out.println("-----> done inflating children"); + + // We are supposed to attach all the views we found (int temp) + // to root. Do that now. + if (root != null && attachToRoot) { + root.addView(temp, params); + } + + // Decide whether to return the root that was passed in or the + // top view found in xml. + if (root == null || !attachToRoot) { + result = temp; + } + } + + return result; + } + + void rInflate(XmlPullParser parser, View parent, final AttributeSet attrs, boolean finishInflate) throws Exception { + + final int depth = parser.getDepth(); + int type; + + while (((type = parser.next()) != XmlPullParser.END_TAG || + parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { + + if (type != XmlPullParser.START_TAG) { + continue; + } + + final String name = parser.getName(); + + if (name.equals("requestFocus")) { + throw new Exception(" not supported atm"); + //parseRequestFocus(parser, parent); + } else if (name.equals("include")) { + throw new Exception(" not supported atm"); + /*if (parser.getDepth() == 0) { + throw new Exception(" cannot be the root element"); + } + parseInclude(parser, parent, attrs);*/ + } else if (name.equals("merge")) { + throw new Exception(" must be the root element"); + } else if (name.equals("blink")) { + throw new Exception(" not supported atm"); + /*final View view = new BlinkLayout(mContext, attrs); + final ViewGroup viewGroup = (ViewGroup) parent; + final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs); + rInflate(parser, view, attrs, true); + viewGroup.addView(view, params);*/ + } else { + final View view = createViewFromTag(parent, name, attrs); + final ViewGroup viewGroup = (ViewGroup) parent; + final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs); + rInflate(parser, view, attrs, true); + viewGroup.addView(view, params); + } + } + + if (finishInflate) parent.onFinishInflate(); + } +} diff --git a/src/api-impl/android/view/Menu.java b/src/api-impl/android/view/Menu.java new file mode 100644 index 00000000..a07378b3 --- /dev/null +++ b/src/api-impl/android/view/Menu.java @@ -0,0 +1,5 @@ +package android.view; + +public interface Menu { + +} diff --git a/src/api-impl/android/view/MotionEvent.java b/src/api-impl/android/view/MotionEvent.java new file mode 100644 index 00000000..9fb065d5 --- /dev/null +++ b/src/api-impl/android/view/MotionEvent.java @@ -0,0 +1,3526 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import android.graphics.Matrix; +import android.os.SystemClock; +import android.util.SparseArray; + +/** + * Object used to report movement (mouse, pen, finger, trackball) events. + * Motion events may hold either absolute or relative movements and other data, + * depending on the type of device. + * + *

Overview

+ *

+ * Motion events describe movements in terms of an action code and a set of axis values. + * The action code specifies the state change that occurred such as a pointer going + * down or up. The axis values describe the position and other movement properties. + *

+ * For example, when the user first touches the screen, the system delivers a touch + * event to the appropriate {@link View} with the action code {@link #ACTION_DOWN} + * and a set of axis values that include the X and Y coordinates of the touch and + * information about the pressure, size and orientation of the contact area. + *

+ * Some devices can report multiple movement traces at the same time. Multi-touch + * screens emit one movement trace for each finger. The individual fingers or + * other objects that generate movement traces are referred to as pointers. + * Motion events contain information about all of the pointers that are currently active + * even if some of them have not moved since the last event was delivered. + *

+ * The number of pointers only ever changes by one as individual pointers go up and down, + * except when the gesture is canceled. + *

+ * Each pointer has a unique id that is assigned when it first goes down + * (indicated by {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}). A pointer id + * remains valid until the pointer eventually goes up (indicated by {@link #ACTION_UP} + * or {@link #ACTION_POINTER_UP}) or when the gesture is canceled (indicated by + * {@link #ACTION_CANCEL}). + *

+ * The MotionEvent class provides many methods to query the position and other properties of + * pointers, such as {@link #getX(int)}, {@link #getY(int)}, {@link #getAxisValue}, + * {@link #getPointerId(int)}, {@link #getToolType(int)}, and many others. Most of these + * methods accept the pointer index as a parameter rather than the pointer id. + * The pointer index of each pointer in the event ranges from 0 to one less than the value + * returned by {@link #getPointerCount()}. + *

+ * The order in which individual pointers appear within a motion event is undefined. + * Thus the pointer index of a pointer can change from one event to the next but + * the pointer id of a pointer is guaranteed to remain constant as long as the pointer + * remains active. Use the {@link #getPointerId(int)} method to obtain the + * pointer id of a pointer to track it across all subsequent motion events in a gesture. + * Then for successive motion events, use the {@link #findPointerIndex(int)} method + * to obtain the pointer index for a given pointer id in that motion event. + *

+ * Mouse and stylus buttons can be retrieved using {@link #getButtonState()}. It is a + * good idea to check the button state while handling {@link #ACTION_DOWN} as part + * of a touch event. The application may choose to perform some different action + * if the touch event starts due to a secondary button click, such as presenting a + * context menu. + *

+ * + *

Batching

+ *

+ * For efficiency, motion events with {@link #ACTION_MOVE} may batch together + * multiple movement samples within a single object. The most current + * pointer coordinates are available using {@link #getX(int)} and {@link #getY(int)}. + * Earlier coordinates within the batch are accessed using {@link #getHistoricalX(int, int)} + * and {@link #getHistoricalY(int, int)}. The coordinates are "historical" only + * insofar as they are older than the current coordinates in the batch; however, + * they are still distinct from any other coordinates reported in prior motion events. + * To process all coordinates in the batch in time order, first consume the historical + * coordinates then consume the current coordinates. + *

+ * Example: Consuming all samples for all pointers in a motion event in time order. + *


+ * void printSamples(MotionEvent ev) {
+ *     final int historySize = ev.getHistorySize();
+ *     final int pointerCount = ev.getPointerCount();
+ *     for (int h = 0; h < historySize; h++) {
+ *         System.out.printf("At time %d:", ev.getHistoricalEventTime(h));
+ *         for (int p = 0; p < pointerCount; p++) {
+ *             System.out.printf("  pointer %d: (%f,%f)",
+ *                 ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h));
+ *         }
+ *     }
+ *     System.out.printf("At time %d:", ev.getEventTime());
+ *     for (int p = 0; p < pointerCount; p++) {
+ *         System.out.printf("  pointer %d: (%f,%f)",
+ *             ev.getPointerId(p), ev.getX(p), ev.getY(p));
+ *     }
+ * }
+ * 

+ * + *

Device Types

+ *

+ * The interpretation of the contents of a MotionEvent varies significantly depending + * on the source class of the device. + *

+ * On pointing devices with source class {@link InputDevice#SOURCE_CLASS_POINTER} + * such as touch screens, the pointer coordinates specify absolute + * positions such as view X/Y coordinates. Each complete gesture is represented + * by a sequence of motion events with actions that describe pointer state transitions + * and movements. A gesture starts with a motion event with {@link #ACTION_DOWN} + * that provides the location of the first pointer down. As each additional + * pointer that goes down or up, the framework will generate a motion event with + * {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} accordingly. + * Pointer movements are described by motion events with {@link #ACTION_MOVE}. + * Finally, a gesture end either when the final pointer goes up as represented + * by a motion event with {@link #ACTION_UP} or when gesture is canceled + * with {@link #ACTION_CANCEL}. + *

+ * Some pointing devices such as mice may support vertical and/or horizontal scrolling. + * A scroll event is reported as a generic motion event with {@link #ACTION_SCROLL} that + * includes the relative scroll offset in the {@link #AXIS_VSCROLL} and + * {@link #AXIS_HSCROLL} axes. See {@link #getAxisValue(int)} for information + * about retrieving these additional axes. + *

+ * On trackball devices with source class {@link InputDevice#SOURCE_CLASS_TRACKBALL}, + * the pointer coordinates specify relative movements as X/Y deltas. + * A trackball gesture consists of a sequence of movements described by motion + * events with {@link #ACTION_MOVE} interspersed with occasional {@link #ACTION_DOWN} + * or {@link #ACTION_UP} motion events when the trackball button is pressed or released. + *

+ * On joystick devices with source class {@link InputDevice#SOURCE_CLASS_JOYSTICK}, + * the pointer coordinates specify the absolute position of the joystick axes. + * The joystick axis values are normalized to a range of -1.0 to 1.0 where 0.0 corresponds + * to the center position. More information about the set of available axes and the + * range of motion can be obtained using {@link InputDevice#getMotionRange}. + * Some common joystick axes are {@link #AXIS_X}, {@link #AXIS_Y}, + * {@link #AXIS_HAT_X}, {@link #AXIS_HAT_Y}, {@link #AXIS_Z} and {@link #AXIS_RZ}. + *

+ * Refer to {@link InputDevice} for more information about how different kinds of + * input devices and sources represent pointer coordinates. + *

+ * + *

Consistency Guarantees

+ *

+ * Motion events are always delivered to views as a consistent stream of events. + * What constitutes a consistent stream varies depending on the type of device. + * For touch events, consistency implies that pointers go down one at a time, + * move around as a group and then go up one at a time or are canceled. + *

+ * While the framework tries to deliver consistent streams of motion events to + * views, it cannot guarantee it. Some events may be dropped or modified by + * containing views in the application before they are delivered thereby making + * the stream of events inconsistent. Views should always be prepared to + * handle {@link #ACTION_CANCEL} and should tolerate anomalous + * situations such as receiving a new {@link #ACTION_DOWN} without first having + * received an {@link #ACTION_UP} for the prior gesture. + *

+ */ +public final class MotionEvent extends InputEvent { + private static final long NS_PER_MS = 1000000; + + /** + * An invalid pointer id. + * + * This value (-1) can be used as a placeholder to indicate that a pointer id + * has not been assigned or is not available. It cannot appear as + * a pointer id inside a {@link MotionEvent}. + */ + public static final int INVALID_POINTER_ID = -1; + + /** + * Bit mask of the parts of the action code that are the action itself. + */ + public static final int ACTION_MASK = 0xff; + + /** + * Constant for {@link #getActionMasked}: A pressed gesture has started, the + * motion contains the initial starting location. + *

+ * This is also a good time to check the button state to distinguish + * secondary and tertiary button clicks and handle them appropriately. + * Use {@link #getButtonState} to retrieve the button state. + *

+ */ + public static final int ACTION_DOWN = 0; + + /** + * Constant for {@link #getActionMasked}: A pressed gesture has finished, the + * motion contains the final release location as well as any intermediate + * points since the last down or move event. + */ + public static final int ACTION_UP = 1; + + /** + * Constant for {@link #getActionMasked}: A change has happened during a + * press gesture (between {@link #ACTION_DOWN} and {@link #ACTION_UP}). + * The motion contains the most recent point, as well as any intermediate + * points since the last down or move event. + */ + public static final int ACTION_MOVE = 2; + + /** + * Constant for {@link #getActionMasked}: The current gesture has been aborted. + * You will not receive any more points in it. You should treat this as + * an up event, but not perform any action that you normally would. + */ + public static final int ACTION_CANCEL = 3; + + /** + * Constant for {@link #getActionMasked}: A movement has happened outside of the + * normal bounds of the UI element. This does not provide a full gesture, + * but only the initial location of the movement/touch. + */ + public static final int ACTION_OUTSIDE = 4; + + /** + * Constant for {@link #getActionMasked}: A non-primary pointer has gone down. + *

+ * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. + *

+ * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the + * unmasked action returned by {@link #getAction}. + *

+ */ + public static final int ACTION_POINTER_DOWN = 5; + + /** + * Constant for {@link #getActionMasked}: A non-primary pointer has gone up. + *

+ * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. + *

+ * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the + * unmasked action returned by {@link #getAction}. + *

+ */ + public static final int ACTION_POINTER_UP = 6; + + /** + * Constant for {@link #getActionMasked}: A change happened but the pointer + * is not down (unlike {@link #ACTION_MOVE}). The motion contains the most + * recent point, as well as any intermediate points since the last + * hover move event. + *

+ * This action is always delivered to the window or view under the pointer. + *

+ * This action is not a touch event so it is delivered to + * {@link View#onGenericMotionEvent(MotionEvent)} rather than + * {@link View#onTouchEvent(MotionEvent)}. + *

+ */ + public static final int ACTION_HOVER_MOVE = 7; + + /** + * Constant for {@link #getActionMasked}: The motion event contains relative + * vertical and/or horizontal scroll offsets. Use {@link #getAxisValue(int)} + * to retrieve the information from {@link #AXIS_VSCROLL} and {@link #AXIS_HSCROLL}. + * The pointer may or may not be down when this event is dispatched. + *

+ * This action is always delivered to the window or view under the pointer, which + * may not be the window or view currently touched. + *

+ * This action is not a touch event so it is delivered to + * {@link View#onGenericMotionEvent(MotionEvent)} rather than + * {@link View#onTouchEvent(MotionEvent)}. + *

+ */ + public static final int ACTION_SCROLL = 8; + + /** + * Constant for {@link #getActionMasked}: The pointer is not down but has entered the + * boundaries of a window or view. + *

+ * This action is always delivered to the window or view under the pointer. + *

+ * This action is not a touch event so it is delivered to + * {@link View#onGenericMotionEvent(MotionEvent)} rather than + * {@link View#onTouchEvent(MotionEvent)}. + *

+ */ + public static final int ACTION_HOVER_ENTER = 9; + + /** + * Constant for {@link #getActionMasked}: The pointer is not down but has exited the + * boundaries of a window or view. + *

+ * This action is always delivered to the window or view that was previously under the pointer. + *

+ * This action is not a touch event so it is delivered to + * {@link View#onGenericMotionEvent(MotionEvent)} rather than + * {@link View#onTouchEvent(MotionEvent)}. + *

+ */ + public static final int ACTION_HOVER_EXIT = 10; + + /** + * Bits in the action code that represent a pointer index, used with + * {@link #ACTION_POINTER_DOWN} and {@link #ACTION_POINTER_UP}. Shifting + * down by {@link #ACTION_POINTER_INDEX_SHIFT} provides the actual pointer + * index where the data for the pointer going up or down can be found; you can + * get its identifier with {@link #getPointerId(int)} and the actual + * data with {@link #getX(int)} etc. + * + * @see #getActionIndex + */ + public static final int ACTION_POINTER_INDEX_MASK = 0xff00; + + /** + * Bit shift for the action bits holding the pointer index as + * defined by {@link #ACTION_POINTER_INDEX_MASK}. + * + * @see #getActionIndex + */ + public static final int ACTION_POINTER_INDEX_SHIFT = 8; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_DOWN}. + */ + @Deprecated + public static final int ACTION_POINTER_1_DOWN = ACTION_POINTER_DOWN | 0x0000; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_DOWN}. + */ + @Deprecated + public static final int ACTION_POINTER_2_DOWN = ACTION_POINTER_DOWN | 0x0100; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_DOWN}. + */ + @Deprecated + public static final int ACTION_POINTER_3_DOWN = ACTION_POINTER_DOWN | 0x0200; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_UP}. + */ + @Deprecated + public static final int ACTION_POINTER_1_UP = ACTION_POINTER_UP | 0x0000; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_UP}. + */ + @Deprecated + public static final int ACTION_POINTER_2_UP = ACTION_POINTER_UP | 0x0100; + + /** + * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the + * data index associated with {@link #ACTION_POINTER_UP}. + */ + @Deprecated + public static final int ACTION_POINTER_3_UP = ACTION_POINTER_UP | 0x0200; + + /** + * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_MASK} to match + * the actual data contained in these bits. + */ + @Deprecated + public static final int ACTION_POINTER_ID_MASK = 0xff00; + + /** + * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_SHIFT} to match + * the actual data contained in these bits. + */ + @Deprecated + public static final int ACTION_POINTER_ID_SHIFT = 8; + + /** + * This flag indicates that the window that received this motion event is partly + * or wholly obscured by another visible window above it. This flag is set to true + * even if the event did not directly pass through the obscured area. + * A security sensitive application can check this flag to identify situations in which + * a malicious application may have covered up part of its content for the purpose + * of misleading the user or hijacking touches. An appropriate response might be + * to drop the suspect touches or to take additional precautions to confirm the user's + * actual intent. + */ + public static final int FLAG_WINDOW_IS_OBSCURED = 0x1; + + /** + * Private flag that indicates when the system has detected that this motion event + * may be inconsistent with respect to the sequence of previously delivered motion events, + * such as when a pointer move event is sent but the pointer is not down. + * + * @hide + * @see #isTainted + * @see #setTainted + */ + public static final int FLAG_TAINTED = 0x80000000; + + /** + * Flag indicating the motion event intersected the top edge of the screen. + */ + public static final int EDGE_TOP = 0x00000001; + + /** + * Flag indicating the motion event intersected the bottom edge of the screen. + */ + public static final int EDGE_BOTTOM = 0x00000002; + + /** + * Flag indicating the motion event intersected the left edge of the screen. + */ + public static final int EDGE_LEFT = 0x00000004; + + /** + * Flag indicating the motion event intersected the right edge of the screen. + */ + public static final int EDGE_RIGHT = 0x00000008; + + /** + * Axis constant: X axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the absolute X screen position of the center of + * the touch contact area. The units are display pixels. + *
  • For a touch pad, reports the absolute X surface position of the center of the touch + * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
  • For a mouse, reports the absolute X screen position of the mouse pointer. + * The units are display pixels. + *
  • For a trackball, reports the relative horizontal displacement of the trackball. + * The value is normalized to a range from -1.0 (left) to 1.0 (right). + *
  • For a joystick, reports the absolute X position of the joystick. + * The value is normalized to a range from -1.0 (left) to 1.0 (right). + *
+ *

+ * + * @see #getX(int) + * @see #getHistoricalX(int, int) + * @see MotionEvent.PointerCoords#x + * @see InputDevice#getMotionRange + */ + public static final int AXIS_X = 0; + + /** + * Axis constant: Y axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the absolute Y screen position of the center of + * the touch contact area. The units are display pixels. + *
  • For a touch pad, reports the absolute Y surface position of the center of the touch + * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
  • For a mouse, reports the absolute Y screen position of the mouse pointer. + * The units are display pixels. + *
  • For a trackball, reports the relative vertical displacement of the trackball. + * The value is normalized to a range from -1.0 (up) to 1.0 (down). + *
  • For a joystick, reports the absolute Y position of the joystick. + * The value is normalized to a range from -1.0 (up or far) to 1.0 (down or near). + *
+ *

+ * + * @see #getY(int) + * @see #getHistoricalY(int, int) + * @see MotionEvent.PointerCoords#y + * @see InputDevice#getMotionRange + */ + public static final int AXIS_Y = 1; + + /** + * Axis constant: Pressure axis of a motion event. + *

+ *

    + *
  • For a touch screen or touch pad, reports the approximate pressure applied to the surface + * by a finger or other tool. The value is normalized to a range from + * 0 (no pressure at all) to 1 (normal pressure), although values higher than 1 + * may be generated depending on the calibration of the input device. + *
  • For a trackball, the value is set to 1 if the trackball button is pressed + * or 0 otherwise. + *
  • For a mouse, the value is set to 1 if the primary mouse button is pressed + * or 0 otherwise. + *
+ *

+ * + * @see #getPressure(int) + * @see #getHistoricalPressure(int, int) + * @see MotionEvent.PointerCoords#pressure + * @see InputDevice#getMotionRange + */ + public static final int AXIS_PRESSURE = 2; + + /** + * Axis constant: Size axis of a motion event. + *

+ *

    + *
  • For a touch screen or touch pad, reports the approximate size of the contact area in + * relation to the maximum detectable size for the device. The value is normalized + * to a range from 0 (smallest detectable size) to 1 (largest detectable size), + * although it is not a linear scale. This value is of limited use. + * To obtain calibrated size information, use + * {@link #AXIS_TOUCH_MAJOR} or {@link #AXIS_TOOL_MAJOR}. + *
+ *

+ * + * @see #getSize(int) + * @see #getHistoricalSize(int, int) + * @see MotionEvent.PointerCoords#size + * @see InputDevice#getMotionRange + */ + public static final int AXIS_SIZE = 3; + + /** + * Axis constant: TouchMajor axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the length of the major axis of an ellipse that + * represents the touch area at the point of contact. + * The units are display pixels. + *
  • For a touch pad, reports the length of the major axis of an ellipse that + * represents the touch area at the point of contact. + * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
+ *

+ * + * @see #getTouchMajor(int) + * @see #getHistoricalTouchMajor(int, int) + * @see MotionEvent.PointerCoords#touchMajor + * @see InputDevice#getMotionRange + */ + public static final int AXIS_TOUCH_MAJOR = 4; + + /** + * Axis constant: TouchMinor axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the length of the minor axis of an ellipse that + * represents the touch area at the point of contact. + * The units are display pixels. + *
  • For a touch pad, reports the length of the minor axis of an ellipse that + * represents the touch area at the point of contact. + * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
+ *

+ * When the touch is circular, the major and minor axis lengths will be equal to one another. + *

+ * + * @see #getTouchMinor(int) + * @see #getHistoricalTouchMinor(int, int) + * @see MotionEvent.PointerCoords#touchMinor + * @see InputDevice#getMotionRange + */ + public static final int AXIS_TOUCH_MINOR = 5; + + /** + * Axis constant: ToolMajor axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the length of the major axis of an ellipse that + * represents the size of the approaching finger or tool used to make contact. + *
  • For a touch pad, reports the length of the major axis of an ellipse that + * represents the size of the approaching finger or tool used to make contact. + * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
+ *

+ * When the touch is circular, the major and minor axis lengths will be equal to one another. + *

+ * The tool size may be larger than the touch size since the tool may not be fully + * in contact with the touch sensor. + *

+ * + * @see #getToolMajor(int) + * @see #getHistoricalToolMajor(int, int) + * @see MotionEvent.PointerCoords#toolMajor + * @see InputDevice#getMotionRange + */ + public static final int AXIS_TOOL_MAJOR = 6; + + /** + * Axis constant: ToolMinor axis of a motion event. + *

+ *

    + *
  • For a touch screen, reports the length of the minor axis of an ellipse that + * represents the size of the approaching finger or tool used to make contact. + *
  • For a touch pad, reports the length of the minor axis of an ellipse that + * represents the size of the approaching finger or tool used to make contact. + * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} + * to query the effective range of values. + *
+ *

+ * When the touch is circular, the major and minor axis lengths will be equal to one another. + *

+ * The tool size may be larger than the touch size since the tool may not be fully + * in contact with the touch sensor. + *

+ * + * @see #getToolMinor(int) + * @see #getHistoricalToolMinor(int, int) + * @see MotionEvent.PointerCoords#toolMinor + * @see InputDevice#getMotionRange + */ + public static final int AXIS_TOOL_MINOR = 7; + + /** + * Axis constant: Orientation axis of a motion event. + *

+ *

    + *
  • For a touch screen or touch pad, reports the orientation of the finger + * or tool in radians relative to the vertical plane of the device. + * An angle of 0 radians indicates that the major axis of contact is oriented + * upwards, is perfectly circular or is of unknown orientation. A positive angle + * indicates that the major axis of contact is oriented to the right. A negative angle + * indicates that the major axis of contact is oriented to the left. + * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians + * (finger pointing fully right). + *
  • For a stylus, the orientation indicates the direction in which the stylus + * is pointing in relation to the vertical axis of the current orientation of the screen. + * The range is from -PI radians to PI radians, where 0 is pointing up, + * -PI/2 radians is pointing left, -PI or PI radians is pointing down, and PI/2 radians + * is pointing right. See also {@link #AXIS_TILT}. + *
+ *

+ * + * @see #getOrientation(int) + * @see #getHistoricalOrientation(int, int) + * @see MotionEvent.PointerCoords#orientation + * @see InputDevice#getMotionRange + */ + public static final int AXIS_ORIENTATION = 8; + + /** + * Axis constant: Vertical Scroll axis of a motion event. + *

+ *

    + *
  • For a mouse, reports the relative movement of the vertical scroll wheel. + * The value is normalized to a range from -1.0 (down) to 1.0 (up). + *
+ *

+ * This axis should be used to scroll views vertically. + *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_VSCROLL = 9; + + /** + * Axis constant: Horizontal Scroll axis of a motion event. + *

+ *

    + *
  • For a mouse, reports the relative movement of the horizontal scroll wheel. + * The value is normalized to a range from -1.0 (left) to 1.0 (right). + *
+ *

+ * This axis should be used to scroll views horizontally. + *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_HSCROLL = 10; + + /** + * Axis constant: Z axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute Z position of the joystick. + * The value is normalized to a range from -1.0 (high) to 1.0 (low). + * On game pads with two analog joysticks, this axis is often reinterpreted + * to report the absolute X position of the second joystick instead. + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_Z = 11; + + /** + * Axis constant: X Rotation axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute rotation angle about the X axis. + * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_RX = 12; + + /** + * Axis constant: Y Rotation axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute rotation angle about the Y axis. + * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_RY = 13; + + /** + * Axis constant: Z Rotation axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute rotation angle about the Z axis. + * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). + * On game pads with two analog joysticks, this axis is often reinterpreted + * to report the absolute Y position of the second joystick instead. + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_RZ = 14; + + /** + * Axis constant: Hat X axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute X position of the directional hat control. + * The value is normalized to a range from -1.0 (left) to 1.0 (right). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_HAT_X = 15; + + /** + * Axis constant: Hat Y axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute Y position of the directional hat control. + * The value is normalized to a range from -1.0 (up) to 1.0 (down). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_HAT_Y = 16; + + /** + * Axis constant: Left Trigger axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the left trigger control. + * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_LTRIGGER = 17; + + /** + * Axis constant: Right Trigger axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the right trigger control. + * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_RTRIGGER = 18; + + /** + * Axis constant: Throttle axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the throttle control. + * The value is normalized to a range from 0.0 (fully open) to 1.0 (fully closed). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_THROTTLE = 19; + + /** + * Axis constant: Rudder axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the rudder control. + * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_RUDDER = 20; + + /** + * Axis constant: Wheel axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the steering wheel control. + * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_WHEEL = 21; + + /** + * Axis constant: Gas axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the gas (accelerator) control. + * The value is normalized to a range from 0.0 (no acceleration) + * to 1.0 (maximum acceleration). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GAS = 22; + + /** + * Axis constant: Brake axis of a motion event. + *

+ *

    + *
  • For a joystick, reports the absolute position of the brake control. + * The value is normalized to a range from 0.0 (no braking) to 1.0 (maximum braking). + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_BRAKE = 23; + + /** + * Axis constant: Distance axis of a motion event. + *

+ *

    + *
  • For a stylus, reports the distance of the stylus from the screen. + * A value of 0.0 indicates direct contact and larger values indicate increasing + * distance from the surface. + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_DISTANCE = 24; + + /** + * Axis constant: Tilt axis of a motion event. + *

+ *

    + *
  • For a stylus, reports the tilt angle of the stylus in radians where + * 0 radians indicates that the stylus is being held perpendicular to the + * surface, and PI/2 radians indicates that the stylus is being held flat + * against the surface. + *
+ *

+ * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int, int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_TILT = 25; + + /** + * Axis constant: Generic 1 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_1 = 32; + + /** + * Axis constant: Generic 2 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_2 = 33; + + /** + * Axis constant: Generic 3 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_3 = 34; + + /** + * Axis constant: Generic 4 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_4 = 35; + + /** + * Axis constant: Generic 5 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_5 = 36; + + /** + * Axis constant: Generic 6 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_6 = 37; + + /** + * Axis constant: Generic 7 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_7 = 38; + + /** + * Axis constant: Generic 8 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_8 = 39; + + /** + * Axis constant: Generic 9 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_9 = 40; + + /** + * Axis constant: Generic 10 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_10 = 41; + + /** + * Axis constant: Generic 11 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_11 = 42; + + /** + * Axis constant: Generic 12 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_12 = 43; + + /** + * Axis constant: Generic 13 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_13 = 44; + + /** + * Axis constant: Generic 14 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_14 = 45; + + /** + * Axis constant: Generic 15 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_15 = 46; + + /** + * Axis constant: Generic 16 axis of a motion event. + * The interpretation of a generic axis is device-specific. + * + * @see #getAxisValue(int, int) + * @see #getHistoricalAxisValue(int, int, int) + * @see MotionEvent.PointerCoords#getAxisValue(int) + * @see InputDevice#getMotionRange + */ + public static final int AXIS_GENERIC_16 = 47; + + // NOTE: If you add a new axis here you must also add it to: + // native/include/android/input.h + // frameworks/base/include/ui/KeycodeLabels.h + + // Symbolic names of all axes. + private static final SparseArray AXIS_SYMBOLIC_NAMES = new SparseArray(); + static { + SparseArray names = AXIS_SYMBOLIC_NAMES; + names.append(AXIS_X, "AXIS_X"); + names.append(AXIS_Y, "AXIS_Y"); + names.append(AXIS_PRESSURE, "AXIS_PRESSURE"); + names.append(AXIS_SIZE, "AXIS_SIZE"); + names.append(AXIS_TOUCH_MAJOR, "AXIS_TOUCH_MAJOR"); + names.append(AXIS_TOUCH_MINOR, "AXIS_TOUCH_MINOR"); + names.append(AXIS_TOOL_MAJOR, "AXIS_TOOL_MAJOR"); + names.append(AXIS_TOOL_MINOR, "AXIS_TOOL_MINOR"); + names.append(AXIS_ORIENTATION, "AXIS_ORIENTATION"); + names.append(AXIS_VSCROLL, "AXIS_VSCROLL"); + names.append(AXIS_HSCROLL, "AXIS_HSCROLL"); + names.append(AXIS_Z, "AXIS_Z"); + names.append(AXIS_RX, "AXIS_RX"); + names.append(AXIS_RY, "AXIS_RY"); + names.append(AXIS_RZ, "AXIS_RZ"); + names.append(AXIS_HAT_X, "AXIS_HAT_X"); + names.append(AXIS_HAT_Y, "AXIS_HAT_Y"); + names.append(AXIS_LTRIGGER, "AXIS_LTRIGGER"); + names.append(AXIS_RTRIGGER, "AXIS_RTRIGGER"); + names.append(AXIS_THROTTLE, "AXIS_THROTTLE"); + names.append(AXIS_RUDDER, "AXIS_RUDDER"); + names.append(AXIS_WHEEL, "AXIS_WHEEL"); + names.append(AXIS_GAS, "AXIS_GAS"); + names.append(AXIS_BRAKE, "AXIS_BRAKE"); + names.append(AXIS_DISTANCE, "AXIS_DISTANCE"); + names.append(AXIS_TILT, "AXIS_TILT"); + names.append(AXIS_GENERIC_1, "AXIS_GENERIC_1"); + names.append(AXIS_GENERIC_2, "AXIS_GENERIC_2"); + names.append(AXIS_GENERIC_3, "AXIS_GENERIC_3"); + names.append(AXIS_GENERIC_4, "AXIS_GENERIC_4"); + names.append(AXIS_GENERIC_5, "AXIS_GENERIC_5"); + names.append(AXIS_GENERIC_6, "AXIS_GENERIC_6"); + names.append(AXIS_GENERIC_7, "AXIS_GENERIC_7"); + names.append(AXIS_GENERIC_8, "AXIS_GENERIC_8"); + names.append(AXIS_GENERIC_9, "AXIS_GENERIC_9"); + names.append(AXIS_GENERIC_10, "AXIS_GENERIC_10"); + names.append(AXIS_GENERIC_11, "AXIS_GENERIC_11"); + names.append(AXIS_GENERIC_12, "AXIS_GENERIC_12"); + names.append(AXIS_GENERIC_13, "AXIS_GENERIC_13"); + names.append(AXIS_GENERIC_14, "AXIS_GENERIC_14"); + names.append(AXIS_GENERIC_15, "AXIS_GENERIC_15"); + names.append(AXIS_GENERIC_16, "AXIS_GENERIC_16"); + } + + /** + * Button constant: Primary button (left mouse button). + * + * This button constant is not set in response to simple touches with a finger + * or stylus tip. The user must actually push a button. + * + * @see #getButtonState + */ + public static final int BUTTON_PRIMARY = 1 << 0; + + /** + * Button constant: Secondary button (right mouse button, stylus first button). + * + * @see #getButtonState + */ + public static final int BUTTON_SECONDARY = 1 << 1; + + /** + * Button constant: Tertiary button (middle mouse button, stylus second button). + * + * @see #getButtonState + */ + public static final int BUTTON_TERTIARY = 1 << 2; + + /** + * Button constant: Back button pressed (mouse back button). + *

+ * The system may send a {@link KeyEvent#KEYCODE_BACK} key press to the application + * when this button is pressed. + *

+ * + * @see #getButtonState + */ + public static final int BUTTON_BACK = 1 << 3; + + /** + * Button constant: Forward button pressed (mouse forward button). + *

+ * The system may send a {@link KeyEvent#KEYCODE_FORWARD} key press to the application + * when this button is pressed. + *

+ * + * @see #getButtonState + */ + public static final int BUTTON_FORWARD = 1 << 4; + + // NOTE: If you add a new axis here you must also add it to: + // native/include/android/input.h + + // Symbolic names of all button states in bit order from least significant + // to most significant. + private static final String[] BUTTON_SYMBOLIC_NAMES = new String[] { + "BUTTON_PRIMARY", + "BUTTON_SECONDARY", + "BUTTON_TERTIARY", + "BUTTON_BACK", + "BUTTON_FORWARD", + "0x00000020", + "0x00000040", + "0x00000080", + "0x00000100", + "0x00000200", + "0x00000400", + "0x00000800", + "0x00001000", + "0x00002000", + "0x00004000", + "0x00008000", + "0x00010000", + "0x00020000", + "0x00040000", + "0x00080000", + "0x00100000", + "0x00200000", + "0x00400000", + "0x00800000", + "0x01000000", + "0x02000000", + "0x04000000", + "0x08000000", + "0x10000000", + "0x20000000", + "0x40000000", + "0x80000000", + }; + + /** + * Tool type constant: Unknown tool type. + * This constant is used when the tool type is not known or is not relevant, + * such as for a trackball or other non-pointing device. + * + * @see #getToolType + */ + public static final int TOOL_TYPE_UNKNOWN = 0; + + /** + * Tool type constant: The tool is a finger. + * + * @see #getToolType + */ + public static final int TOOL_TYPE_FINGER = 1; + + /** + * Tool type constant: The tool is a stylus. + * + * @see #getToolType + */ + public static final int TOOL_TYPE_STYLUS = 2; + + /** + * Tool type constant: The tool is a mouse or trackpad. + * + * @see #getToolType + */ + public static final int TOOL_TYPE_MOUSE = 3; + + /** + * Tool type constant: The tool is an eraser or a stylus being used in an inverted posture. + * + * @see #getToolType + */ + public static final int TOOL_TYPE_ERASER = 4; + + // NOTE: If you add a new tool type here you must also add it to: + // native/include/android/input.h + + // Symbolic names of all tool types. + private static final SparseArray TOOL_TYPE_SYMBOLIC_NAMES = new SparseArray(); + static { + SparseArray names = TOOL_TYPE_SYMBOLIC_NAMES; + names.append(TOOL_TYPE_UNKNOWN, "TOOL_TYPE_UNKNOWN"); + names.append(TOOL_TYPE_FINGER, "TOOL_TYPE_FINGER"); + names.append(TOOL_TYPE_STYLUS, "TOOL_TYPE_STYLUS"); + names.append(TOOL_TYPE_MOUSE, "TOOL_TYPE_MOUSE"); + names.append(TOOL_TYPE_ERASER, "TOOL_TYPE_ERASER"); + } + + // Private value for history pos that obtains the current sample. + private static final int HISTORY_CURRENT = -0x80000000; + + private static final int MAX_RECYCLED = 10; + private static final Object gRecyclerLock = new Object(); + private static int gRecyclerUsed; + private static MotionEvent gRecyclerTop; + + // Shared temporary objects used when translating coordinates supplied by + // the caller into single element PointerCoords and pointer id arrays. + private static final Object gSharedTempLock = new Object(); + private static PointerCoords[] gSharedTempPointerCoords; + private static PointerProperties[] gSharedTempPointerProperties; + private static int[] gSharedTempPointerIndexMap; + + private static final void ensureSharedTempPointerCapacity(int desiredCapacity) { + if (gSharedTempPointerCoords == null + || gSharedTempPointerCoords.length < desiredCapacity) { + int capacity = gSharedTempPointerCoords != null ? gSharedTempPointerCoords.length : 8; + while (capacity < desiredCapacity) { + capacity *= 2; + } + gSharedTempPointerCoords = PointerCoords.createArray(capacity); + gSharedTempPointerProperties = PointerProperties.createArray(capacity); + gSharedTempPointerIndexMap = new int[capacity]; + } + } + + // Pointer to the native MotionEvent object that contains the actual data. + private int mNativePtr; + + private MotionEvent mNext; + + private static native int nativeInitialize(int nativePtr, + int deviceId, int source, int action, int flags, int edgeFlags, + int metaState, int buttonState, + float xOffset, float yOffset, float xPrecision, float yPrecision, + long downTimeNanos, long eventTimeNanos, + int pointerCount, PointerProperties[] pointerIds, PointerCoords[] pointerCoords); + private static native int nativeCopy(int destNativePtr, int sourceNativePtr, + boolean keepHistory); + private static native void nativeDispose(int nativePtr); + private static native void nativeAddBatch(int nativePtr, long eventTimeNanos, + PointerCoords[] pointerCoords, int metaState); + + private static native int nativeGetDeviceId(int nativePtr); + private static native int nativeGetSource(int nativePtr); + private static native int nativeSetSource(int nativePtr, int source); + private static native int nativeGetAction(int nativePtr); + private static native void nativeSetAction(int nativePtr, int action); + private static native boolean nativeIsTouchEvent(int nativePtr); + private static native int nativeGetFlags(int nativePtr); + private static native void nativeSetFlags(int nativePtr, int flags); + private static native int nativeGetEdgeFlags(int nativePtr); + private static native void nativeSetEdgeFlags(int nativePtr, int action); + private static native int nativeGetMetaState(int nativePtr); + private static native int nativeGetButtonState(int nativePtr); + private static native void nativeOffsetLocation(int nativePtr, float deltaX, float deltaY); + private static native float nativeGetXOffset(int nativePtr); + private static native float nativeGetYOffset(int nativePtr); + private static native float nativeGetXPrecision(int nativePtr); + private static native float nativeGetYPrecision(int nativePtr); + private static native long nativeGetDownTimeNanos(int nativePtr); + private static native void nativeSetDownTimeNanos(int nativePtr, long downTime); + + private static native int nativeGetPointerCount(int nativePtr); + private static native int nativeGetPointerId(int nativePtr, int pointerIndex); + private static native int nativeGetToolType(int nativePtr, int pointerIndex); + private static native int nativeFindPointerIndex(int nativePtr, int pointerId); + + private static native int nativeGetHistorySize(int nativePtr); + private static native long nativeGetEventTimeNanos(int nativePtr, int historyPos); + private static native float nativeGetRawAxisValue(int nativePtr, + int axis, int pointerIndex, int historyPos); + private static native float nativeGetAxisValue(int nativePtr, + int axis, int pointerIndex, int historyPos); + private static native void nativeGetPointerCoords(int nativePtr, + int pointerIndex, int historyPos, PointerCoords outPointerCoords); + private static native void nativeGetPointerProperties(int nativePtr, + int pointerIndex, PointerProperties outPointerProperties); + + private static native void nativeScale(int nativePtr, float scale); + private static native void nativeTransform(int nativePtr, Matrix matrix); + + int action; + float coord_x; + float coord_y; + + + private MotionEvent() { + } + + public MotionEvent(int action, float coord_x, float coord_y) { + this.action = action; + this.coord_x = coord_x; + this.coord_y = coord_y; + } + + + @Override + protected void finalize() throws Throwable { + try { + if (mNativePtr != 0) { + nativeDispose(mNativePtr); + mNativePtr = 0; + } + } finally { + super.finalize(); + } + } + + static private MotionEvent obtain() { + final MotionEvent ev; + synchronized (gRecyclerLock) { + ev = gRecyclerTop; + if (ev == null) { + return new MotionEvent(); + } + gRecyclerTop = ev.mNext; + gRecyclerUsed -= 1; + } + ev.mNext = null; + ev.prepareForReuse(); + return ev; + } + + /** + * Create a new MotionEvent, filling in all of the basic values that + * define the motion. + * + * @param downTime The time (in ms) when the user originally pressed down to start + * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. + * @param eventTime The the time (in ms) when this specific event was generated. This + * must be obtained from {@link SystemClock#uptimeMillis()}. + * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. + * @param pointerCount The number of pointers that will be in this event. + * @param pointerProperties An array of pointerCount values providing + * a {@link PointerProperties} property object for each pointer, which must + * include the pointer identifier. + * @param pointerCoords An array of pointerCount values providing + * a {@link PointerCoords} coordinate object for each pointer. + * @param metaState The state of any meta / modifier keys that were in effect when + * the event was generated. + * @param buttonState The state of buttons that are pressed. + * @param xPrecision The precision of the X coordinate being reported. + * @param yPrecision The precision of the Y coordinate being reported. + * @param deviceId The id for the device that this event came from. An id of + * zero indicates that the event didn't come from a physical device; other + * numbers are arbitrary and you shouldn't depend on the values. + * @param edgeFlags A bitfield indicating which edges, if any, were touched by this + * MotionEvent. + * @param source The source of this event. + * @param flags The motion event flags. + */ + static public MotionEvent obtain(long downTime, long eventTime, + int action, int pointerCount, PointerProperties[] pointerProperties, + PointerCoords[] pointerCoords, int metaState, int buttonState, + float xPrecision, float yPrecision, int deviceId, + int edgeFlags, int source, int flags) { + MotionEvent ev = obtain(); + ev.mNativePtr = nativeInitialize(ev.mNativePtr, + deviceId, source, action, flags, edgeFlags, metaState, buttonState, + 0, 0, xPrecision, yPrecision, + downTime * NS_PER_MS, eventTime * NS_PER_MS, + pointerCount, pointerProperties, pointerCoords); + return ev; + } + + /** + * Create a new MotionEvent, filling in all of the basic values that + * define the motion. + * + * @param downTime The time (in ms) when the user originally pressed down to start + * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. + * @param eventTime The the time (in ms) when this specific event was generated. This + * must be obtained from {@link SystemClock#uptimeMillis()}. + * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. + * @param pointerCount The number of pointers that will be in this event. + * @param pointerIds An array of pointerCount values providing + * an identifier for each pointer. + * @param pointerCoords An array of pointerCount values providing + * a {@link PointerCoords} coordinate object for each pointer. + * @param metaState The state of any meta / modifier keys that were in effect when + * the event was generated. + * @param xPrecision The precision of the X coordinate being reported. + * @param yPrecision The precision of the Y coordinate being reported. + * @param deviceId The id for the device that this event came from. An id of + * zero indicates that the event didn't come from a physical device; other + * numbers are arbitrary and you shouldn't depend on the values. + * @param edgeFlags A bitfield indicating which edges, if any, were touched by this + * MotionEvent. + * @param source The source of this event. + * @param flags The motion event flags. + * + * @deprecated Use {@link #obtain(long, long, int, int, PointerProperties[], PointerCoords[], int, int, float, float, int, int, int, int)} + * instead. + */ + @Deprecated + static public MotionEvent obtain(long downTime, long eventTime, + int action, int pointerCount, int[] pointerIds, PointerCoords[] pointerCoords, + int metaState, float xPrecision, float yPrecision, int deviceId, + int edgeFlags, int source, int flags) { + synchronized (gSharedTempLock) { + ensureSharedTempPointerCapacity(pointerCount); + final PointerProperties[] pp = gSharedTempPointerProperties; + for (int i = 0; i < pointerCount; i++) { + pp[i].clear(); + pp[i].id = pointerIds[i]; + } + return obtain(downTime, eventTime, action, pointerCount, pp, + pointerCoords, metaState, 0, xPrecision, yPrecision, deviceId, + edgeFlags, source, flags); + } + } + + /** + * Create a new MotionEvent, filling in all of the basic values that + * define the motion. + * + * @param downTime The time (in ms) when the user originally pressed down to start + * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. + * @param eventTime The the time (in ms) when this specific event was generated. This + * must be obtained from {@link SystemClock#uptimeMillis()}. + * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. + * @param x The X coordinate of this event. + * @param y The Y coordinate of this event. + * @param pressure The current pressure of this event. The pressure generally + * ranges from 0 (no pressure at all) to 1 (normal pressure), however + * values higher than 1 may be generated depending on the calibration of + * the input device. + * @param size A scaled value of the approximate size of the area being pressed when + * touched with the finger. The actual value in pixels corresponding to the finger + * touch is normalized with a device specific range of values + * and scaled to a value between 0 and 1. + * @param metaState The state of any meta / modifier keys that were in effect when + * the event was generated. + * @param xPrecision The precision of the X coordinate being reported. + * @param yPrecision The precision of the Y coordinate being reported. + * @param deviceId The id for the device that this event came from. An id of + * zero indicates that the event didn't come from a physical device; other + * numbers are arbitrary and you shouldn't depend on the values. + * @param edgeFlags A bitfield indicating which edges, if any, were touched by this + * MotionEvent. + */ + static public MotionEvent obtain(long downTime, long eventTime, int action, + float x, float y, float pressure, float size, int metaState, + float xPrecision, float yPrecision, int deviceId, int edgeFlags) { + MotionEvent ev = obtain(); + synchronized (gSharedTempLock) { + ensureSharedTempPointerCapacity(1); + final PointerProperties[] pp = gSharedTempPointerProperties; + pp[0].clear(); + pp[0].id = 0; + + final PointerCoords pc[] = gSharedTempPointerCoords; + pc[0].clear(); + pc[0].x = x; + pc[0].y = y; + pc[0].pressure = pressure; + pc[0].size = size; + + ev.mNativePtr = nativeInitialize(ev.mNativePtr, + deviceId, /*InputDevice.SOURCE_UNKNOWN*/0, action, 0, edgeFlags, metaState, 0, + 0, 0, xPrecision, yPrecision, + downTime * NS_PER_MS, eventTime * NS_PER_MS, + 1, pp, pc); + return ev; + } + } + + /** + * Create a new MotionEvent, filling in all of the basic values that + * define the motion. + * + * @param downTime The time (in ms) when the user originally pressed down to start + * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. + * @param eventTime The the time (in ms) when this specific event was generated. This + * must be obtained from {@link SystemClock#uptimeMillis()}. + * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. + * @param pointerCount The number of pointers that are active in this event. + * @param x The X coordinate of this event. + * @param y The Y coordinate of this event. + * @param pressure The current pressure of this event. The pressure generally + * ranges from 0 (no pressure at all) to 1 (normal pressure), however + * values higher than 1 may be generated depending on the calibration of + * the input device. + * @param size A scaled value of the approximate size of the area being pressed when + * touched with the finger. The actual value in pixels corresponding to the finger + * touch is normalized with a device specific range of values + * and scaled to a value between 0 and 1. + * @param metaState The state of any meta / modifier keys that were in effect when + * the event was generated. + * @param xPrecision The precision of the X coordinate being reported. + * @param yPrecision The precision of the Y coordinate being reported. + * @param deviceId The id for the device that this event came from. An id of + * zero indicates that the event didn't come from a physical device; other + * numbers are arbitrary and you shouldn't depend on the values. + * @param edgeFlags A bitfield indicating which edges, if any, were touched by this + * MotionEvent. + * + * @deprecated Use {@link #obtain(long, long, int, float, float, float, float, int, float, float, int, int)} + * instead. + */ + @Deprecated + static public MotionEvent obtain(long downTime, long eventTime, int action, + int pointerCount, float x, float y, float pressure, float size, int metaState, + float xPrecision, float yPrecision, int deviceId, int edgeFlags) { + return obtain(downTime, eventTime, action, x, y, pressure, size, + metaState, xPrecision, yPrecision, deviceId, edgeFlags); + } + + /** + * Create a new MotionEvent, filling in a subset of the basic motion + * values. Those not specified here are: device id (always 0), pressure + * and size (always 1), x and y precision (always 1), and edgeFlags (always 0). + * + * @param downTime The time (in ms) when the user originally pressed down to start + * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. + * @param eventTime The the time (in ms) when this specific event was generated. This + * must be obtained from {@link SystemClock#uptimeMillis()}. + * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. + * @param x The X coordinate of this event. + * @param y The Y coordinate of this event. + * @param metaState The state of any meta / modifier keys that were in effect when + * the event was generated. + */ + static public MotionEvent obtain(long downTime, long eventTime, int action, + float x, float y, int metaState) { + return obtain(downTime, eventTime, action, x, y, 1.0f, 1.0f, + metaState, 1.0f, 1.0f, 0, 0); + } + + /** + * Create a new MotionEvent, copying from an existing one. + */ + static public MotionEvent obtain(MotionEvent other) { + if (other == null) { + throw new IllegalArgumentException("other motion event must not be null"); + } + + MotionEvent ev = obtain(); + ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, true /*keepHistory*/); + return ev; + } + + /** + * Create a new MotionEvent, copying from an existing one, but not including + * any historical point information. + */ + static public MotionEvent obtainNoHistory(MotionEvent other) { + if (other == null) { + throw new IllegalArgumentException("other motion event must not be null"); + } + + MotionEvent ev = obtain(); + ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, false /*keepHistory*/); + return ev; + } + + /** @hide */ + @Override + public MotionEvent copy() { + return obtain(this); + } + + /** + * Recycle the MotionEvent, to be re-used by a later caller. After calling + * this function you must not ever touch the event again. + */ + @Override + public final void recycle() { + super.recycle(); + + synchronized (gRecyclerLock) { + if (gRecyclerUsed < MAX_RECYCLED) { + gRecyclerUsed++; + mNext = gRecyclerTop; + gRecyclerTop = this; + } + } + } + + /** + * Applies a scale factor to all points within this event. + * + * This method is used to adjust touch events to simulate different density + * displays for compatibility mode. The values returned by {@link #getRawX()}, + * {@link #getRawY()}, {@link #getXPrecision()} and {@link #getYPrecision()} + * are also affected by the scale factor. + * + * @param scale The scale factor to apply. + * @hide + */ + public final void scale(float scale) { + if (scale != 1.0f) { + nativeScale(mNativePtr, scale); + } + } + + /** {@inheritDoc} */ + @Override + public final int getDeviceId() { + return nativeGetDeviceId(mNativePtr); + } + + /** {@inheritDoc} */ + @Override + public final int getSource() { + return nativeGetSource(mNativePtr); + } + + /** {@inheritDoc} */ + @Override + public final void setSource(int source) { + nativeSetSource(mNativePtr, source); + } + + /** + * Return the kind of action being performed. + * Consider using {@link #getActionMasked} and {@link #getActionIndex} to retrieve + * the separate masked action and pointer index. + * @return The action, such as {@link #ACTION_DOWN} or + * the combination of {@link #ACTION_POINTER_DOWN} with a shifted pointer index. + */ + public final int getAction() { + return action; + } + + /** + * Return the masked action being performed, without pointer index information. + * Use {@link #getActionIndex} to return the index associated with pointer actions. + * @return The action, such as {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}. + */ + public final int getActionMasked() { + return action & ACTION_MASK; + } + + /** + * For {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} + * as returned by {@link #getActionMasked}, this returns the associated + * pointer index. + * The index may be used with {@link #getPointerId(int)}, + * {@link #getX(int)}, {@link #getY(int)}, {@link #getPressure(int)}, + * and {@link #getSize(int)} to get information about the pointer that has + * gone down or up. + * @return The index associated with the action. + */ + public final int getActionIndex() { + return 1; + } + + /** + * Returns true if this motion event is a touch event. + *

+ * Specifically excludes pointer events with action {@link #ACTION_HOVER_MOVE}, + * {@link #ACTION_HOVER_ENTER}, {@link #ACTION_HOVER_EXIT}, or {@link #ACTION_SCROLL} + * because they are not actually touch events (the pointer is not down). + *

+ * @return True if this motion event is a touch event. + * @hide + */ + public final boolean isTouchEvent() { + return nativeIsTouchEvent(mNativePtr); + } + + /** + * Gets the motion event flags. + * + * @see #FLAG_WINDOW_IS_OBSCURED + */ + public final int getFlags() { + return nativeGetFlags(mNativePtr); + } + + /** @hide */ + @Override + public final boolean isTainted() { + final int flags = getFlags(); + return (flags & FLAG_TAINTED) != 0; + } + + /** @hide */ + @Override + public final void setTainted(boolean tainted) { + final int flags = getFlags(); + nativeSetFlags(mNativePtr, tainted ? flags | FLAG_TAINTED : flags & ~FLAG_TAINTED); + } + + /** + * Returns the time (in ms) when the user originally pressed down to start + * a stream of position events. + */ + public final long getDownTime() { + return nativeGetDownTimeNanos(mNativePtr) / NS_PER_MS; + } + + /** + * Sets the time (in ms) when the user originally pressed down to start + * a stream of position events. + * + * @hide + */ + public final void setDownTime(long downTime) { + nativeSetDownTimeNanos(mNativePtr, downTime * NS_PER_MS); + } + + /** + * Retrieve the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base. + * + * @return Returns the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base. + */ + @Override + public final long getEventTime() { + return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT) / NS_PER_MS; + } + + /** + * Retrieve the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base but with + * nanosecond precision. + *

+ * The value is in nanosecond precision but it may not have nanosecond accuracy. + *

+ * + * @return Returns the time this event occurred, + * in the {@link android.os.SystemClock#uptimeMillis} time base but with + * nanosecond precision. + * + * @hide + */ + @Override + public final long getEventTimeNano() { + return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT); + } + + /** + * {@link #getX(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_X + */ + public final float getX() { + return coord_x; + } + + /** + * {@link #getY(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_Y + */ + public final float getY() { + return coord_y; + } + + /** + * {@link #getPressure(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_PRESSURE + */ + public final float getPressure() { +// return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, HISTORY_CURRENT); + return 0; + } + + /** + * {@link #getSize(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_SIZE + */ + public final float getSize() { + return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, HISTORY_CURRENT); + } + + /** + * {@link #getTouchMajor(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_TOUCH_MAJOR + */ + public final float getTouchMajor() { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, HISTORY_CURRENT); + } + + /** + * {@link #getTouchMinor(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_TOUCH_MINOR + */ + public final float getTouchMinor() { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, HISTORY_CURRENT); + } + + /** + * {@link #getToolMajor(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_TOOL_MAJOR + */ + public final float getToolMajor() { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, HISTORY_CURRENT); + } + + /** + * {@link #getToolMinor(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_TOOL_MINOR + */ + public final float getToolMinor() { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, HISTORY_CURRENT); + } + + /** + * {@link #getOrientation(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @see #AXIS_ORIENTATION + */ + public final float getOrientation() { + return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, HISTORY_CURRENT); + } + + /** + * {@link #getAxisValue(int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param axis The axis identifier for the axis value to retrieve. + * + * @see #AXIS_X + * @see #AXIS_Y + */ + public final float getAxisValue(int axis) { + return nativeGetAxisValue(mNativePtr, axis, 0, HISTORY_CURRENT); + } + + /** + * The number of pointers of data contained in this event. Always + * >= 1. + */ + public final int getPointerCount() { + return 1; + } + + /** + * Return the pointer identifier associated with a particular pointer + * data index is this event. The identifier tells you the actual pointer + * number associated with the data, accounting for individual pointers + * going up and down since the start of the current gesture. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + */ + public final int getPointerId(int pointerIndex) { + return pointerIndex; + } + + /** + * Gets the tool type of a pointer for the given pointer index. + * The tool type indicates the type of tool used to make contact such + * as a finger or stylus, if known. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @return The tool type of the pointer. + * + * @see #TOOL_TYPE_UNKNOWN + * @see #TOOL_TYPE_FINGER + * @see #TOOL_TYPE_STYLUS + * @see #TOOL_TYPE_MOUSE + */ + public final int getToolType(int pointerIndex) { + return nativeGetToolType(mNativePtr, pointerIndex); + } + + /** + * Given a pointer identifier, find the index of its data in the event. + * + * @param pointerId The identifier of the pointer to be found. + * @return Returns either the index of the pointer (for use with + * {@link #getX(int)} et al.), or -1 if there is no data available for + * that pointer identifier. + */ + public final int findPointerIndex(int pointerId) { + return nativeFindPointerIndex(mNativePtr, pointerId); + } + + /** + * Returns the X coordinate of this event for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * Whole numbers are pixels; the + * value may have a fraction for input devices that are sub-pixel precise. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_X + */ + public final float getX(int pointerIndex) { + return coord_x; + } + + /** + * Returns the Y coordinate of this event for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * Whole numbers are pixels; the + * value may have a fraction for input devices that are sub-pixel precise. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_Y + */ + public final float getY(int pointerIndex) { + return coord_y; + } + + /** + * Returns the current pressure of this event for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * The pressure generally + * ranges from 0 (no pressure at all) to 1 (normal pressure), however + * values higher than 1 may be generated depending on the calibration of + * the input device. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_PRESSURE + */ + public final float getPressure(int pointerIndex) { +// return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, HISTORY_CURRENT); + return 0; + } + + /** + * Returns a scaled value of the approximate size for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * This represents some approximation of the area of the screen being + * pressed; the actual value in pixels corresponding to the + * touch is normalized with the device specific range of values + * and scaled to a value between 0 and 1. The value of size can be used to + * determine fat touch events. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_SIZE + */ + public final float getSize(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the length of the major axis of an ellipse that describes the touch + * area at the point of contact for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_TOUCH_MAJOR + */ + public final float getTouchMajor(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the length of the minor axis of an ellipse that describes the touch + * area at the point of contact for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_TOUCH_MINOR + */ + public final float getTouchMinor(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the length of the major axis of an ellipse that describes the size of + * the approaching tool for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * The tool area represents the estimated size of the finger or pen that is + * touching the device independent of its actual touch area at the point of contact. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_TOOL_MAJOR + */ + public final float getToolMajor(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the length of the minor axis of an ellipse that describes the size of + * the approaching tool for the given pointer + * index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * The tool area represents the estimated size of the finger or pen that is + * touching the device independent of its actual touch area at the point of contact. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_TOOL_MINOR + */ + public final float getToolMinor(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the orientation of the touch area and tool area in radians clockwise from vertical + * for the given pointer index (use {@link #getPointerId(int)} to find the pointer + * identifier for this index). + * An angle of 0 radians indicates that the major axis of contact is oriented + * upwards, is perfectly circular or is of unknown orientation. A positive angle + * indicates that the major axis of contact is oriented to the right. A negative angle + * indicates that the major axis of contact is oriented to the left. + * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians + * (finger pointing fully right). + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * + * @see #AXIS_ORIENTATION + */ + public final float getOrientation(int pointerIndex) { + return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, HISTORY_CURRENT); + } + + /** + * Returns the value of the requested axis for the given pointer index + * (use {@link #getPointerId(int)} to find the pointer identifier for this index). + * + * @param axis The axis identifier for the axis value to retrieve. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @return The value of the axis, or 0 if the axis is not available. + * + * @see #AXIS_X + * @see #AXIS_Y + */ + public final float getAxisValue(int axis, int pointerIndex) { + return nativeGetAxisValue(mNativePtr, axis, pointerIndex, HISTORY_CURRENT); + } + + /** + * Populates a {@link PointerCoords} object with pointer coordinate data for + * the specified pointer index. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param outPointerCoords The pointer coordinate object to populate. + * + * @see PointerCoords + */ + public final void getPointerCoords(int pointerIndex, PointerCoords outPointerCoords) { + nativeGetPointerCoords(mNativePtr, pointerIndex, HISTORY_CURRENT, outPointerCoords); + } + + /** + * Populates a {@link PointerProperties} object with pointer properties for + * the specified pointer index. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param outPointerProperties The pointer properties object to populate. + * + * @see PointerProperties + */ + public final void getPointerProperties(int pointerIndex, + PointerProperties outPointerProperties) { + nativeGetPointerProperties(mNativePtr, pointerIndex, outPointerProperties); + } + + /** + * Returns the state of any meta / modifier keys that were in effect when + * the event was generated. This is the same values as those + * returned by {@link KeyEvent#getMetaState() KeyEvent.getMetaState}. + * + * @return an integer in which each bit set to 1 represents a pressed + * meta key + * + * @see KeyEvent#getMetaState() + */ + public final int getMetaState() { + return nativeGetMetaState(mNativePtr); + } + + /** + * Gets the state of all buttons that are pressed such as a mouse or stylus button. + * + * @return The button state. + * + * @see #BUTTON_PRIMARY + * @see #BUTTON_SECONDARY + * @see #BUTTON_TERTIARY + * @see #BUTTON_FORWARD + * @see #BUTTON_BACK + */ + public final int getButtonState() { + return nativeGetButtonState(mNativePtr); + } + + /** + * Returns the original raw X coordinate of this event. For touch + * events on the screen, this is the original location of the event + * on the screen, before it had been adjusted for the containing window + * and views. + * + * @see #getX(int) + * @see #AXIS_X + */ + public final float getRawX() { + return coord_x; + } + + /** + * Returns the original raw Y coordinate of this event. For touch + * events on the screen, this is the original location of the event + * on the screen, before it had been adjusted for the containing window + * and views. + * + * @see #getY(int) + * @see #AXIS_Y + */ + public final float getRawY() { + return coord_y; + } + + /** + * Return the precision of the X coordinates being reported. You can + * multiply this number with {@link #getX} to find the actual hardware + * value of the X coordinate. + * @return Returns the precision of X coordinates being reported. + * + * @see #AXIS_X + */ + public final float getXPrecision() { + return nativeGetXPrecision(mNativePtr); + } + + /** + * Return the precision of the Y coordinates being reported. You can + * multiply this number with {@link #getY} to find the actual hardware + * value of the Y coordinate. + * @return Returns the precision of Y coordinates being reported. + * + * @see #AXIS_Y + */ + public final float getYPrecision() { + return nativeGetYPrecision(mNativePtr); + } + + /** + * Returns the number of historical points in this event. These are + * movements that have occurred between this event and the previous event. + * This only applies to ACTION_MOVE events -- all other actions will have + * a size of 0. + * + * @return Returns the number of historical points in the event. + */ + public final int getHistorySize() { + return nativeGetHistorySize(mNativePtr); + } + + /** + * Returns the time that a historical movement occurred between this event + * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base. + *

+ * This only applies to ACTION_MOVE events. + *

+ * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * @return Returns the time that a historical movement occurred between this + * event and the previous event, + * in the {@link android.os.SystemClock#uptimeMillis} time base. + * + * @see #getHistorySize + * @see #getEventTime + */ + public final long getHistoricalEventTime(int pos) { + return nativeGetEventTimeNanos(mNativePtr, pos) / NS_PER_MS; + } + + /** + * Returns the time that a historical movement occurred between this event + * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base + * but with nanosecond (instead of millisecond) precision. + *

+ * This only applies to ACTION_MOVE events. + *

+ * The value is in nanosecond precision but it may not have nanosecond accuracy. + *

+ * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * @return Returns the time that a historical movement occurred between this + * event and the previous event, + * in the {@link android.os.SystemClock#uptimeMillis} time base but with + * nanosecond (instead of millisecond) precision. + * + * @see #getHistorySize + * @see #getEventTime + * + * @hide + */ + public final long getHistoricalEventTimeNano(int pos) { + return nativeGetEventTimeNanos(mNativePtr, pos); + } + + /** + * {@link #getHistoricalX(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getX() + * @see #AXIS_X + */ + public final float getHistoricalX(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_X, 0, pos); + } + + /** + * {@link #getHistoricalY(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getY() + * @see #AXIS_Y + */ + public final float getHistoricalY(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, pos); + } + + /** + * {@link #getHistoricalPressure(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getPressure() + * @see #AXIS_PRESSURE + */ + public final float getHistoricalPressure(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, pos); + } + + /** + * {@link #getHistoricalSize(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getSize() + * @see #AXIS_SIZE + */ + public final float getHistoricalSize(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, pos); + } + + /** + * {@link #getHistoricalTouchMajor(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getTouchMajor() + * @see #AXIS_TOUCH_MAJOR + */ + public final float getHistoricalTouchMajor(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, pos); + } + + /** + * {@link #getHistoricalTouchMinor(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getTouchMinor() + * @see #AXIS_TOUCH_MINOR + */ + public final float getHistoricalTouchMinor(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, pos); + } + + /** + * {@link #getHistoricalToolMajor(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getToolMajor() + * @see #AXIS_TOOL_MAJOR + */ + public final float getHistoricalToolMajor(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, pos); + } + + /** + * {@link #getHistoricalToolMinor(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getToolMinor() + * @see #AXIS_TOOL_MINOR + */ + public final float getHistoricalToolMinor(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, pos); + } + + /** + * {@link #getHistoricalOrientation(int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getOrientation() + * @see #AXIS_ORIENTATION + */ + public final float getHistoricalOrientation(int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, pos); + } + + /** + * {@link #getHistoricalAxisValue(int, int, int)} for the first pointer index (may be an + * arbitrary pointer identifier). + * + * @param axis The axis identifier for the axis value to retrieve. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getAxisValue(int) + * @see #AXIS_X + * @see #AXIS_Y + */ + public final float getHistoricalAxisValue(int axis, int pos) { + return nativeGetAxisValue(mNativePtr, axis, 0, pos); + } + + /** + * Returns a historical X coordinate, as per {@link #getX(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getX(int) + * @see #AXIS_X + */ + public final float getHistoricalX(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, pos); + } + + /** + * Returns a historical Y coordinate, as per {@link #getY(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getY(int) + * @see #AXIS_Y + */ + public final float getHistoricalY(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, pos); + } + + /** + * Returns a historical pressure coordinate, as per {@link #getPressure(int)}, + * that occurred between this event and the previous event for the given + * pointer. Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getPressure(int) + * @see #AXIS_PRESSURE + */ + public final float getHistoricalPressure(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, pos); + } + + /** + * Returns a historical size coordinate, as per {@link #getSize(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getSize(int) + * @see #AXIS_SIZE + */ + public final float getHistoricalSize(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, pos); + } + + /** + * Returns a historical touch major axis coordinate, as per {@link #getTouchMajor(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getTouchMajor(int) + * @see #AXIS_TOUCH_MAJOR + */ + public final float getHistoricalTouchMajor(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, pos); + } + + /** + * Returns a historical touch minor axis coordinate, as per {@link #getTouchMinor(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getTouchMinor(int) + * @see #AXIS_TOUCH_MINOR + */ + public final float getHistoricalTouchMinor(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, pos); + } + + /** + * Returns a historical tool major axis coordinate, as per {@link #getToolMajor(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getToolMajor(int) + * @see #AXIS_TOOL_MAJOR + */ + public final float getHistoricalToolMajor(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, pos); + } + + /** + * Returns a historical tool minor axis coordinate, as per {@link #getToolMinor(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getToolMinor(int) + * @see #AXIS_TOOL_MINOR + */ + public final float getHistoricalToolMinor(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, pos); + } + + /** + * Returns a historical orientation coordinate, as per {@link #getOrientation(int)}, that + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * + * @see #getHistorySize + * @see #getOrientation(int) + * @see #AXIS_ORIENTATION + */ + public final float getHistoricalOrientation(int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, pos); + } + + /** + * Returns the historical value of the requested axis, as per {@link #getAxisValue(int, int)}, + * occurred between this event and the previous event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param axis The axis identifier for the axis value to retrieve. + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * @return The value of the axis, or 0 if the axis is not available. + * + * @see #AXIS_X + * @see #AXIS_Y + */ + public final float getHistoricalAxisValue(int axis, int pointerIndex, int pos) { + return nativeGetAxisValue(mNativePtr, axis, pointerIndex, pos); + } + + /** + * Populates a {@link PointerCoords} object with historical pointer coordinate data, + * as per {@link #getPointerCoords}, that occurred between this event and the previous + * event for the given pointer. + * Only applies to ACTION_MOVE events. + * + * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 + * (the first pointer that is down) to {@link #getPointerCount()}-1. + * @param pos Which historical value to return; must be less than + * {@link #getHistorySize} + * @param outPointerCoords The pointer coordinate object to populate. + * + * @see #getHistorySize + * @see #getPointerCoords + * @see PointerCoords + */ + public final void getHistoricalPointerCoords(int pointerIndex, int pos, + PointerCoords outPointerCoords) { + nativeGetPointerCoords(mNativePtr, pointerIndex, pos, outPointerCoords); + } + + /** + * Returns a bitfield indicating which edges, if any, were touched by this + * MotionEvent. For touch events, clients can use this to determine if the + * user's finger was touching the edge of the display. + * + * This property is only set for {@link #ACTION_DOWN} events. + * + * @see #EDGE_LEFT + * @see #EDGE_TOP + * @see #EDGE_RIGHT + * @see #EDGE_BOTTOM + */ + public final int getEdgeFlags() { + return nativeGetEdgeFlags(mNativePtr); + } + + /** + * Sets the bitfield indicating which edges, if any, were touched by this + * MotionEvent. + * + * @see #getEdgeFlags() + */ + public final void setEdgeFlags(int flags) { + nativeSetEdgeFlags(mNativePtr, flags); + } + + /** + * Sets this event's action. + */ + public final void setAction(int action) { + nativeSetAction(mNativePtr, action); + } + + /** + * Adjust this event's location. + * @param deltaX Amount to add to the current X coordinate of the event. + * @param deltaY Amount to add to the current Y coordinate of the event. + */ + public final void offsetLocation(float deltaX, float deltaY) { + if (deltaX != 0.0f || deltaY != 0.0f) { + nativeOffsetLocation(mNativePtr, deltaX, deltaY); + } + } + + /** + * Set this event's location. Applies {@link #offsetLocation} with a + * delta from the current location to the given new location. + * + * @param x New absolute X location. + * @param y New absolute Y location. + */ + public final void setLocation(float x, float y) { + float oldX = getX(); + float oldY = getY(); + offsetLocation(x - oldX, y - oldY); + } + + /** + * Applies a transformation matrix to all of the points in the event. + * + * @param matrix The transformation matrix to apply. + */ + public final void transform(Matrix matrix) { + if (matrix == null) { + throw new IllegalArgumentException("matrix must not be null"); + } + + nativeTransform(mNativePtr, matrix); + } + + /** + * Add a new movement to the batch of movements in this event. The event's + * current location, position and size is updated to the new values. + * The current values in the event are added to a list of historical values. + * + * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. + * + * @param eventTime The time stamp (in ms) for this data. + * @param x The new X position. + * @param y The new Y position. + * @param pressure The new pressure. + * @param size The new size. + * @param metaState Meta key state. + */ + public final void addBatch(long eventTime, float x, float y, + float pressure, float size, int metaState) { + synchronized (gSharedTempLock) { + ensureSharedTempPointerCapacity(1); + final PointerCoords[] pc = gSharedTempPointerCoords; + pc[0].clear(); + pc[0].x = x; + pc[0].y = y; + pc[0].pressure = pressure; + pc[0].size = size; + + nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pc, metaState); + } + } + + /** + * Add a new movement to the batch of movements in this event. The event's + * current location, position and size is updated to the new values. + * The current values in the event are added to a list of historical values. + * + * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. + * + * @param eventTime The time stamp (in ms) for this data. + * @param pointerCoords The new pointer coordinates. + * @param metaState Meta key state. + */ + public final void addBatch(long eventTime, PointerCoords[] pointerCoords, int metaState) { + nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pointerCoords, metaState); + } + + /** + * Adds all of the movement samples of the specified event to this one if + * it is compatible. To be compatible, the event must have the same device id, + * source, action, flags, pointer count, pointer properties. + * + * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. + * + * @param event The event whose movements samples should be added to this one + * if possible. + * @return True if batching was performed or false if batching was not possible. + * @hide + */ + public final boolean addBatch(MotionEvent event) { + final int action = nativeGetAction(mNativePtr); + if (action != ACTION_MOVE && action != ACTION_HOVER_MOVE) { + return false; + } + if (action != nativeGetAction(event.mNativePtr)) { + return false; + } + + if (nativeGetDeviceId(mNativePtr) != nativeGetDeviceId(event.mNativePtr) + || nativeGetSource(mNativePtr) != nativeGetSource(event.mNativePtr) + || nativeGetFlags(mNativePtr) != nativeGetFlags(event.mNativePtr)) { + return false; + } + + final int pointerCount = nativeGetPointerCount(mNativePtr); + if (pointerCount != nativeGetPointerCount(event.mNativePtr)) { + return false; + } + + synchronized (gSharedTempLock) { + ensureSharedTempPointerCapacity(Math.max(pointerCount, 2)); + final PointerProperties[] pp = gSharedTempPointerProperties; + final PointerCoords[] pc = gSharedTempPointerCoords; + + for (int i = 0; i < pointerCount; i++) { + nativeGetPointerProperties(mNativePtr, i, pp[0]); + nativeGetPointerProperties(event.mNativePtr, i, pp[1]); + if (!pp[0].equals(pp[1])) { + return false; + } + } + + final int metaState = nativeGetMetaState(event.mNativePtr); + final int historySize = nativeGetHistorySize(event.mNativePtr); + for (int h = 0; h <= historySize; h++) { + final int historyPos = (h == historySize ? HISTORY_CURRENT : h); + + for (int i = 0; i < pointerCount; i++) { + nativeGetPointerCoords(event.mNativePtr, i, historyPos, pc[i]); + } + + final long eventTimeNanos = nativeGetEventTimeNanos(event.mNativePtr, historyPos); + nativeAddBatch(mNativePtr, eventTimeNanos, pc, metaState); + } + } + return true; + } + + /** + * Returns true if all points in the motion event are completely within the specified bounds. + * @hide + */ + public final boolean isWithinBoundsNoHistory(float left, float top, + float right, float bottom) { + final int pointerCount = nativeGetPointerCount(mNativePtr); + for (int i = 0; i < pointerCount; i++) { + final float x = nativeGetAxisValue(mNativePtr, AXIS_X, i, HISTORY_CURRENT); + final float y = nativeGetAxisValue(mNativePtr, AXIS_Y, i, HISTORY_CURRENT); + if (x < left || x > right || y < top || y > bottom) { + return false; + } + } + return true; + } + + private static final float clamp(float value, float low, float high) { + if (value < low) { + return low; + } else if (value > high) { + return high; + } + return value; + } + + /** + * Returns a new motion events whose points have been clamped to the specified bounds. + * @hide + */ + public final MotionEvent clampNoHistory(float left, float top, float right, float bottom) { + MotionEvent ev = obtain(); + synchronized (gSharedTempLock) { + final int pointerCount = nativeGetPointerCount(mNativePtr); + + ensureSharedTempPointerCapacity(pointerCount); + final PointerProperties[] pp = gSharedTempPointerProperties; + final PointerCoords[] pc = gSharedTempPointerCoords; + + for (int i = 0; i < pointerCount; i++) { + nativeGetPointerProperties(mNativePtr, i, pp[i]); + nativeGetPointerCoords(mNativePtr, i, HISTORY_CURRENT, pc[i]); + pc[i].x = clamp(pc[i].x, left, right); + pc[i].y = clamp(pc[i].y, top, bottom); + } + ev.mNativePtr = nativeInitialize(ev.mNativePtr, + nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), + nativeGetAction(mNativePtr), nativeGetFlags(mNativePtr), + nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), + nativeGetButtonState(mNativePtr), + nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), + nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), + nativeGetDownTimeNanos(mNativePtr), + nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT), + pointerCount, pp, pc); + return ev; + } + } + + /** + * Gets an integer where each pointer id present in the event is marked as a bit. + * @hide + */ + public final int getPointerIdBits() { + int idBits = 0; + final int pointerCount = nativeGetPointerCount(mNativePtr); + for (int i = 0; i < pointerCount; i++) { + idBits |= 1 << nativeGetPointerId(mNativePtr, i); + } + return idBits; + } + + /** + * Splits a motion event such that it includes only a subset of pointer ids. + * @hide + */ + public final MotionEvent split(int idBits) { + MotionEvent ev = obtain(); + synchronized (gSharedTempLock) { + final int oldPointerCount = nativeGetPointerCount(mNativePtr); + ensureSharedTempPointerCapacity(oldPointerCount); + final PointerProperties[] pp = gSharedTempPointerProperties; + final PointerCoords[] pc = gSharedTempPointerCoords; + final int[] map = gSharedTempPointerIndexMap; + + final int oldAction = nativeGetAction(mNativePtr); + final int oldActionMasked = oldAction & ACTION_MASK; + final int oldActionPointerIndex = (oldAction & ACTION_POINTER_INDEX_MASK) + >> ACTION_POINTER_INDEX_SHIFT; + int newActionPointerIndex = -1; + int newPointerCount = 0; + int newIdBits = 0; + for (int i = 0; i < oldPointerCount; i++) { + nativeGetPointerProperties(mNativePtr, i, pp[newPointerCount]); + final int idBit = 1 << pp[newPointerCount].id; + if ((idBit & idBits) != 0) { + if (i == oldActionPointerIndex) { + newActionPointerIndex = newPointerCount; + } + map[newPointerCount] = i; + newPointerCount += 1; + newIdBits |= idBit; + } + } + + if (newPointerCount == 0) { + throw new IllegalArgumentException("idBits did not match any ids in the event"); + } + + final int newAction; + if (oldActionMasked == ACTION_POINTER_DOWN || oldActionMasked == ACTION_POINTER_UP) { + if (newActionPointerIndex < 0) { + // An unrelated pointer changed. + newAction = ACTION_MOVE; + } else if (newPointerCount == 1) { + // The first/last pointer went down/up. + newAction = oldActionMasked == ACTION_POINTER_DOWN + ? ACTION_DOWN : ACTION_UP; + } else { + // A secondary pointer went down/up. + newAction = oldActionMasked + | (newActionPointerIndex << ACTION_POINTER_INDEX_SHIFT); + } + } else { + // Simple up/down/cancel/move or other motion action. + newAction = oldAction; + } + + final int historySize = nativeGetHistorySize(mNativePtr); + for (int h = 0; h <= historySize; h++) { + final int historyPos = h == historySize ? HISTORY_CURRENT : h; + + for (int i = 0; i < newPointerCount; i++) { + nativeGetPointerCoords(mNativePtr, map[i], historyPos, pc[i]); + } + + final long eventTimeNanos = nativeGetEventTimeNanos(mNativePtr, historyPos); + if (h == 0) { + ev.mNativePtr = nativeInitialize(ev.mNativePtr, + nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), + newAction, nativeGetFlags(mNativePtr), + nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), + nativeGetButtonState(mNativePtr), + nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), + nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), + nativeGetDownTimeNanos(mNativePtr), eventTimeNanos, + newPointerCount, pp, pc); + } else { + nativeAddBatch(ev.mNativePtr, eventTimeNanos, pc, 0); + } + } + return ev; + } + } + + @Override + public String toString() { + StringBuilder msg = new StringBuilder(); + msg.append("MotionEvent { action=").append(actionToString(getAction())); + + final int pointerCount = getPointerCount(); + for (int i = 0; i < pointerCount; i++) { + msg.append(", id[").append(i).append("]=").append(getPointerId(i)); + msg.append(", x[").append(i).append("]=").append(getX(i)); + msg.append(", y[").append(i).append("]=").append(getY(i)); + msg.append(", toolType[").append(i).append("]=").append( + toolTypeToString(getToolType(i))); + } + + msg.append(", buttonState=").append(MotionEvent.buttonStateToString(getButtonState())); + msg.append(", metaState=").append(/*KeyEvent.metaStateToString(getMetaState())*/"FIXME"); + msg.append(", flags=0x").append(Integer.toHexString(getFlags())); + msg.append(", edgeFlags=0x").append(Integer.toHexString(getEdgeFlags())); + msg.append(", pointerCount=").append(pointerCount); + msg.append(", historySize=").append(getHistorySize()); + msg.append(", eventTime=").append(getEventTime()); + msg.append(", downTime=").append(getDownTime()); + msg.append(", deviceId=").append(getDeviceId()); + msg.append(", source=0x").append(Integer.toHexString(getSource())); + msg.append(" }"); + return msg.toString(); + } + + /** + * Returns a string that represents the symbolic name of the specified unmasked action + * such as "ACTION_DOWN", "ACTION_POINTER_DOWN(3)" or an equivalent numeric constant + * such as "35" if unknown. + * + * @param action The unmasked action. + * @return The symbolic name of the specified action. + * @see #getAction() + */ + public static String actionToString(int action) { + switch (action) { + case ACTION_DOWN: + return "ACTION_DOWN"; + case ACTION_UP: + return "ACTION_UP"; + case ACTION_CANCEL: + return "ACTION_CANCEL"; + case ACTION_OUTSIDE: + return "ACTION_OUTSIDE"; + case ACTION_MOVE: + return "ACTION_MOVE"; + case ACTION_HOVER_MOVE: + return "ACTION_HOVER_MOVE"; + case ACTION_SCROLL: + return "ACTION_SCROLL"; + case ACTION_HOVER_ENTER: + return "ACTION_HOVER_ENTER"; + case ACTION_HOVER_EXIT: + return "ACTION_HOVER_EXIT"; + } + int index = (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT; + switch (action & ACTION_MASK) { + case ACTION_POINTER_DOWN: + return "ACTION_POINTER_DOWN(" + index + ")"; + case ACTION_POINTER_UP: + return "ACTION_POINTER_UP(" + index + ")"; + default: + return Integer.toString(action); + } + } + + /** + * Returns a string that represents the symbolic name of the specified axis + * such as "AXIS_X" or an equivalent numeric constant such as "42" if unknown. + * + * @param axis The axis. + * @return The symbolic name of the specified axis. + */ + public static String axisToString(int axis) { + String symbolicName = AXIS_SYMBOLIC_NAMES.get(axis); + return symbolicName != null ? symbolicName : Integer.toString(axis); + } + + /** + * Gets an axis by its symbolic name such as "AXIS_X" or an + * equivalent numeric constant such as "42". + * + * @param symbolicName The symbolic name of the axis. + * @return The axis or -1 if not found. + * @see KeyEvent#keyCodeToString(int) + */ + public static int axisFromString(String symbolicName) { + if (symbolicName == null) { + throw new IllegalArgumentException("symbolicName must not be null"); + } + + final int count = AXIS_SYMBOLIC_NAMES.size(); + for (int i = 0; i < count; i++) { + if (symbolicName.equals(AXIS_SYMBOLIC_NAMES.valueAt(i))) { + return i; + } + } + + try { + return Integer.parseInt(symbolicName, 10); + } catch (NumberFormatException ex) { + return -1; + } + } + + /** + * Returns a string that represents the symbolic name of the specified combined + * button state flags such as "0", "BUTTON_PRIMARY", + * "BUTTON_PRIMARY|BUTTON_SECONDARY" or an equivalent numeric constant such as "0x10000000" + * if unknown. + * + * @param buttonState The button state. + * @return The symbolic name of the specified combined button state flags. + * @hide + */ + public static String buttonStateToString(int buttonState) { + if (buttonState == 0) { + return "0"; + } + StringBuilder result = null; + int i = 0; + while (buttonState != 0) { + final boolean isSet = (buttonState & 1) != 0; + buttonState >>>= 1; // unsigned shift! + if (isSet) { + final String name = BUTTON_SYMBOLIC_NAMES[i]; + if (result == null) { + if (buttonState == 0) { + return name; + } + result = new StringBuilder(name); + } else { + result.append('|'); + result.append(name); + } + } + i += 1; + } + return result.toString(); + } + + /** + * Returns a string that represents the symbolic name of the specified tool type + * such as "TOOL_TYPE_FINGER" or an equivalent numeric constant such as "42" if unknown. + * + * @param toolType The tool type. + * @return The symbolic name of the specified tool type. + * @hide + */ + public static String toolTypeToString(int toolType) { + String symbolicName = TOOL_TYPE_SYMBOLIC_NAMES.get(toolType); + return symbolicName != null ? symbolicName : Integer.toString(toolType); + } + + /** + * Transfer object for pointer coordinates. + * + * Objects of this type can be used to specify the pointer coordinates when + * creating new {@link MotionEvent} objects and to query pointer coordinates + * in bulk. + * + * Refer to {@link InputDevice} for information about how different kinds of + * input devices and sources represent pointer coordinates. + */ + public static final class PointerCoords { + private static final int INITIAL_PACKED_AXIS_VALUES = 8; + private long mPackedAxisBits; + private float[] mPackedAxisValues; + + /** + * Creates a pointer coords object with all axes initialized to zero. + */ + public PointerCoords() { + } + + /** + * Creates a pointer coords object as a copy of the + * contents of another pointer coords object. + * + * @param other The pointer coords object to copy. + */ + public PointerCoords(PointerCoords other) { + copyFrom(other); + } + + /** @hide */ + public static PointerCoords[] createArray(int size) { + PointerCoords[] array = new PointerCoords[size]; + for (int i = 0; i < size; i++) { + array[i] = new PointerCoords(); + } + return array; + } + + /** + * The X component of the pointer movement. + * + * @see MotionEvent#AXIS_X + */ + public float x; + + /** + * The Y component of the pointer movement. + * + * @see MotionEvent#AXIS_Y + */ + public float y; + + /** + * A normalized value that describes the pressure applied to the device + * by a finger or other tool. + * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), + * although values higher than 1 may be generated depending on the calibration of + * the input device. + * + * @see MotionEvent#AXIS_PRESSURE + */ + public float pressure; + + /** + * A normalized value that describes the approximate size of the pointer touch area + * in relation to the maximum detectable size of the device. + * It represents some approximation of the area of the screen being + * pressed; the actual value in pixels corresponding to the + * touch is normalized with the device specific range of values + * and scaled to a value between 0 and 1. The value of size can be used to + * determine fat touch events. + * + * @see MotionEvent#AXIS_SIZE + */ + public float size; + + /** + * The length of the major axis of an ellipse that describes the touch area at + * the point of contact. + * If the device is a touch screen, the length is reported in pixels, otherwise it is + * reported in device-specific units. + * + * @see MotionEvent#AXIS_TOUCH_MAJOR + */ + public float touchMajor; + + /** + * The length of the minor axis of an ellipse that describes the touch area at + * the point of contact. + * If the device is a touch screen, the length is reported in pixels, otherwise it is + * reported in device-specific units. + * + * @see MotionEvent#AXIS_TOUCH_MINOR + */ + public float touchMinor; + + /** + * The length of the major axis of an ellipse that describes the size of + * the approaching tool. + * The tool area represents the estimated size of the finger or pen that is + * touching the device independent of its actual touch area at the point of contact. + * If the device is a touch screen, the length is reported in pixels, otherwise it is + * reported in device-specific units. + * + * @see MotionEvent#AXIS_TOOL_MAJOR + */ + public float toolMajor; + + /** + * The length of the minor axis of an ellipse that describes the size of + * the approaching tool. + * The tool area represents the estimated size of the finger or pen that is + * touching the device independent of its actual touch area at the point of contact. + * If the device is a touch screen, the length is reported in pixels, otherwise it is + * reported in device-specific units. + * + * @see MotionEvent#AXIS_TOOL_MINOR + */ + public float toolMinor; + + /** + * The orientation of the touch area and tool area in radians clockwise from vertical. + * An angle of 0 radians indicates that the major axis of contact is oriented + * upwards, is perfectly circular or is of unknown orientation. A positive angle + * indicates that the major axis of contact is oriented to the right. A negative angle + * indicates that the major axis of contact is oriented to the left. + * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians + * (finger pointing fully right). + * + * @see MotionEvent#AXIS_ORIENTATION + */ + public float orientation; + + /** + * Clears the contents of this object. + * Resets all axes to zero. + */ + public void clear() { + mPackedAxisBits = 0; + + x = 0; + y = 0; + pressure = 0; + size = 0; + touchMajor = 0; + touchMinor = 0; + toolMajor = 0; + toolMinor = 0; + orientation = 0; + } + + /** + * Copies the contents of another pointer coords object. + * + * @param other The pointer coords object to copy. + */ + public void copyFrom(PointerCoords other) { + final long bits = other.mPackedAxisBits; + mPackedAxisBits = bits; + if (bits != 0) { + final float[] otherValues = other.mPackedAxisValues; + final int count = Long.bitCount(bits); + float[] values = mPackedAxisValues; + if (values == null || count > values.length) { + values = new float[otherValues.length]; + mPackedAxisValues = values; + } + System.arraycopy(otherValues, 0, values, 0, count); + } + + x = other.x; + y = other.y; + pressure = other.pressure; + size = other.size; + touchMajor = other.touchMajor; + touchMinor = other.touchMinor; + toolMajor = other.toolMajor; + toolMinor = other.toolMinor; + orientation = other.orientation; + } + + /** + * Gets the value associated with the specified axis. + * + * @param axis The axis identifier for the axis value to retrieve. + * @return The value associated with the axis, or 0 if none. + * + * @see MotionEvent#AXIS_X + * @see MotionEvent#AXIS_Y + */ + public float getAxisValue(int axis) { + switch (axis) { + case AXIS_X: + return x; + case AXIS_Y: + return y; + case AXIS_PRESSURE: + return pressure; + case AXIS_SIZE: + return size; + case AXIS_TOUCH_MAJOR: + return touchMajor; + case AXIS_TOUCH_MINOR: + return touchMinor; + case AXIS_TOOL_MAJOR: + return toolMajor; + case AXIS_TOOL_MINOR: + return toolMinor; + case AXIS_ORIENTATION: + return orientation; + default: { + if (axis < 0 || axis > 63) { + throw new IllegalArgumentException("Axis out of range."); + } + final long bits = mPackedAxisBits; + final long axisBit = 1L << axis; + if ((bits & axisBit) == 0) { + return 0; + } + final int index = Long.bitCount(bits & (axisBit - 1L)); + return mPackedAxisValues[index]; + } + } + } + + /** + * Sets the value associated with the specified axis. + * + * @param axis The axis identifier for the axis value to assign. + * @param value The value to set. + * + * @see MotionEvent#AXIS_X + * @see MotionEvent#AXIS_Y + */ + public void setAxisValue(int axis, float value) { + switch (axis) { + case AXIS_X: + x = value; + break; + case AXIS_Y: + y = value; + break; + case AXIS_PRESSURE: + pressure = value; + break; + case AXIS_SIZE: + size = value; + break; + case AXIS_TOUCH_MAJOR: + touchMajor = value; + break; + case AXIS_TOUCH_MINOR: + touchMinor = value; + break; + case AXIS_TOOL_MAJOR: + toolMajor = value; + break; + case AXIS_TOOL_MINOR: + toolMinor = value; + break; + case AXIS_ORIENTATION: + orientation = value; + break; + default: { + if (axis < 0 || axis > 63) { + throw new IllegalArgumentException("Axis out of range."); + } + final long bits = mPackedAxisBits; + final long axisBit = 1L << axis; + final int index = Long.bitCount(bits & (axisBit - 1L)); + float[] values = mPackedAxisValues; + if ((bits & axisBit) == 0) { + if (values == null) { + values = new float[INITIAL_PACKED_AXIS_VALUES]; + mPackedAxisValues = values; + } else { + final int count = Long.bitCount(bits); + if (count < values.length) { + if (index != count) { + System.arraycopy(values, index, values, index + 1, + count - index); + } + } else { + float[] newValues = new float[count * 2]; + System.arraycopy(values, 0, newValues, 0, index); + System.arraycopy(values, index, newValues, index + 1, + count - index); + values = newValues; + mPackedAxisValues = values; + } + } + mPackedAxisBits = bits | axisBit; + } + values[index] = value; + } + } + } + } + + /** + * Transfer object for pointer properties. + * + * Objects of this type can be used to specify the pointer id and tool type + * when creating new {@link MotionEvent} objects and to query pointer properties in bulk. + */ + public static final class PointerProperties { + /** + * Creates a pointer properties object with an invalid pointer id. + */ + public PointerProperties() { + clear(); + } + + /** + * Creates a pointer properties object as a copy of the contents of + * another pointer properties object. + * @param other + */ + public PointerProperties(PointerProperties other) { + copyFrom(other); + } + + /** @hide */ + public static PointerProperties[] createArray(int size) { + PointerProperties[] array = new PointerProperties[size]; + for (int i = 0; i < size; i++) { + array[i] = new PointerProperties(); + } + return array; + } + + /** + * The pointer id. + * Initially set to {@link #INVALID_POINTER_ID} (-1). + * + * @see MotionEvent#getPointerId(int) + */ + public int id; + + /** + * The pointer tool type. + * Initially set to 0. + * + * @see MotionEvent#getToolType(int) + */ + public int toolType; + + /** + * Resets the pointer properties to their initial values. + */ + public void clear() { + id = INVALID_POINTER_ID; + toolType = TOOL_TYPE_UNKNOWN; + } + + /** + * Copies the contents of another pointer properties object. + * + * @param other The pointer properties object to copy. + */ + public void copyFrom(PointerProperties other) { + id = other.id; + toolType = other.toolType; + } + + @Override + public boolean equals(Object other) { + if (other instanceof PointerProperties) { + return equals((PointerProperties)other); + } + return false; + } + + private boolean equals(PointerProperties other) { + return other != null && id == other.id && toolType == other.toolType; + } + + @Override + public int hashCode() { + return id | (toolType << 8); + } + } +} diff --git a/src/api-impl/android/view/Surface.java b/src/api-impl/android/view/Surface.java new file mode 100644 index 00000000..27675ffc --- /dev/null +++ b/src/api-impl/android/view/Surface.java @@ -0,0 +1,5 @@ +package android.view; + +public class Surface { + +} diff --git a/src/api-impl/android/view/SurfaceHolder.java b/src/api-impl/android/view/SurfaceHolder.java new file mode 100644 index 00000000..99fa2a4b --- /dev/null +++ b/src/api-impl/android/view/SurfaceHolder.java @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import android.graphics.Canvas; +import android.graphics.Rect; + +/** + * Abstract interface to someone holding a display surface. Allows you to + * control the surface size and format, edit the pixels in the surface, and + * monitor changes to the surface. This interface is typically available + * through the {@link SurfaceView} class. + * + *

When using this interface from a thread other than the one running + * its {@link SurfaceView}, you will want to carefully read the + * methods + * {@link #lockCanvas} and {@link Callback#surfaceCreated Callback.surfaceCreated()}. + */ +public interface SurfaceHolder { + + /** @deprecated this is ignored, this value is set automatically when needed. */ + @Deprecated + public static final int SURFACE_TYPE_NORMAL = 0; + /** @deprecated this is ignored, this value is set automatically when needed. */ + @Deprecated + public static final int SURFACE_TYPE_HARDWARE = 1; + /** @deprecated this is ignored, this value is set automatically when needed. */ + @Deprecated + public static final int SURFACE_TYPE_GPU = 2; + /** @deprecated this is ignored, this value is set automatically when needed. */ + @Deprecated + public static final int SURFACE_TYPE_PUSH_BUFFERS = 3; + + /** + * Exception that is thrown from {@link #lockCanvas} when called on a Surface + * whose type is SURFACE_TYPE_PUSH_BUFFERS. + */ + public static class BadSurfaceTypeException extends RuntimeException { + public BadSurfaceTypeException() { + } + + public BadSurfaceTypeException(String name) { + super(name); + } + } + + /** + * A client may implement this interface to receive information about + * changes to the surface. When used with a {@link SurfaceView}, the + * Surface being held is only available between calls to + * {@link #surfaceCreated(SurfaceHolder)} and + * {@link #surfaceDestroyed(SurfaceHolder)}. The Callback is set with + * {@link SurfaceHolder#addCallback SurfaceHolder.addCallback} method. + */ + public interface Callback { + /** + * This is called immediately after the surface is first created. + * Implementations of this should start up whatever rendering code + * they desire. Note that only one thread can ever draw into + * a {@link Surface}, so you should not draw into the Surface here + * if your normal rendering will be in another thread. + * + * @param holder The SurfaceHolder whose surface is being created. + */ + public void surfaceCreated(SurfaceHolder holder); + + /** + * This is called immediately after any structural changes (format or + * size) have been made to the surface. You should at this point update + * the imagery in the surface. This method is always called at least + * once, after {@link #surfaceCreated}. + * + * @param holder The SurfaceHolder whose surface has changed. + * @param format The new PixelFormat of the surface. + * @param width The new width of the surface. + * @param height The new height of the surface. + */ + public void surfaceChanged(SurfaceHolder holder, int format, int width, + int height); + + /** + * This is called immediately before a surface is being destroyed. After + * returning from this call, you should no longer try to access this + * surface. If you have a rendering thread that directly accesses + * the surface, you must ensure that thread is no longer touching the + * Surface before returning from this function. + * + * @param holder The SurfaceHolder whose surface is being destroyed. + */ + public void surfaceDestroyed(SurfaceHolder holder); + } + + /** + * Additional callbacks that can be received for {@link Callback}. + */ + public interface Callback2 extends Callback { + /** + * Called when the application needs to redraw the content of its + * surface, after it is resized or for some other reason. By not + * returning from here until the redraw is complete, you can ensure that + * the user will not see your surface in a bad state (at its new + * size before it has been correctly drawn that way). This will + * typically be preceeded by a call to {@link #surfaceChanged}. + * + * @param holder The SurfaceHolder whose surface has changed. + */ + public void surfaceRedrawNeeded(SurfaceHolder holder); + } + + /** + * Add a Callback interface for this holder. There can several Callback + * interfaces associated with a holder. + * + * @param callback The new Callback interface. + */ + public void addCallback(Callback callback); + + /** + * Removes a previously added Callback interface from this holder. + * + * @param callback The Callback interface to remove. + */ + public void removeCallback(Callback callback); + + /** + * Use this method to find out if the surface is in the process of being + * created from Callback methods. This is intended to be used with + * {@link Callback#surfaceChanged}. + * + * @return true if the surface is in the process of being created. + */ + public boolean isCreating(); + + /** + * Sets the surface's type. + * + * @deprecated this is ignored, this value is set automatically when needed. + */ + @Deprecated + public void setType(int type); + + /** + * Make the surface a fixed size. It will never change from this size. + * When working with a {@link SurfaceView}, this must be called from the + * same thread running the SurfaceView's window. + * + * @param width The surface's width. + * @param height The surface's height. + */ + public void setFixedSize(int width, int height); + + /** + * Allow the surface to resized based on layout of its container (this is + * the default). When this is enabled, you should monitor + * {@link Callback#surfaceChanged} for changes to the size of the surface. + * When working with a {@link SurfaceView}, this must be called from the + * same thread running the SurfaceView's window. + */ + public void setSizeFromLayout(); + + /** + * Set the desired PixelFormat of the surface. The default is OPAQUE. + * When working with a {@link SurfaceView}, this must be called from the + * same thread running the SurfaceView's window. + * + * @param format A constant from PixelFormat. + * + * @see android.graphics.PixelFormat + */ + public void setFormat(int format); + + /** + * Enable or disable option to keep the screen turned on while this + * surface is displayed. The default is false, allowing it to turn off. + * This is safe to call from any thread. + * + * @param screenOn Set to true to force the screen to stay on, false + * to allow it to turn off. + */ + public void setKeepScreenOn(boolean screenOn); + + /** + * Start editing the pixels in the surface. The returned Canvas can be used + * to draw into the surface's bitmap. A null is returned if the surface has + * not been created or otherwise cannot be edited. You will usually need + * to implement {@link Callback#surfaceCreated Callback.surfaceCreated} + * to find out when the Surface is available for use. + * + *

The content of the Surface is never preserved between unlockCanvas() and + * lockCanvas(), for this reason, every pixel within the Surface area + * must be written. The only exception to this rule is when a dirty + * rectangle is specified, in which case, non-dirty pixels will be + * preserved. + * + *

If you call this repeatedly when the Surface is not ready (before + * {@link Callback#surfaceCreated Callback.surfaceCreated} or after + * {@link Callback#surfaceDestroyed Callback.surfaceDestroyed}), your calls + * will be throttled to a slow rate in order to avoid consuming CPU. + * + *

If null is not returned, this function internally holds a lock until + * the corresponding {@link #unlockCanvasAndPost} call, preventing + * {@link SurfaceView} from creating, destroying, or modifying the surface + * while it is being drawn. This can be more convenient than accessing + * the Surface directly, as you do not need to do special synchronization + * with a drawing thread in {@link Callback#surfaceDestroyed + * Callback.surfaceDestroyed}. + * + * @return Canvas Use to draw into the surface. + */ + public Canvas lockCanvas(); + + + /** + * Just like {@link #lockCanvas()} but allows specification of a dirty rectangle. + * Every + * pixel within that rectangle must be written; however pixels outside + * the dirty rectangle will be preserved by the next call to lockCanvas(). + * + * @see android.view.SurfaceHolder#lockCanvas + * + * @param dirty Area of the Surface that will be modified. + * @return Canvas Use to draw into the surface. + */ + public Canvas lockCanvas(Rect dirty); + + /** + * Finish editing pixels in the surface. After this call, the surface's + * current pixels will be shown on the screen, but its content is lost, + * in particular there is no guarantee that the content of the Surface + * will remain unchanged when lockCanvas() is called again. + * + * @see #lockCanvas() + * + * @param canvas The Canvas previously returned by lockCanvas(). + */ + public void unlockCanvasAndPost(Canvas canvas); + + /** + * Retrieve the current size of the surface. Note: do not modify the + * returned Rect. This is only safe to call from the thread of + * {@link SurfaceView}'s window, or while inside of + * {@link #lockCanvas()}. + * + * @return Rect The surface's dimensions. The left and top are always 0. + */ + public Rect getSurfaceFrame(); + + /** + * Direct access to the surface object. The Surface may not always be + * available -- for example when using a {@link SurfaceView} the holder's + * Surface is not created until the view has been attached to the window + * manager and performed a layout in order to determine the dimensions + * and screen position of the Surface. You will thus usually need + * to implement {@link Callback#surfaceCreated Callback.surfaceCreated} + * to find out when the Surface is available for use. + * + *

Note that if you directly access the Surface from another thread, + * it is critical that you correctly implement + * {@link Callback#surfaceCreated Callback.surfaceCreated} and + * {@link Callback#surfaceDestroyed Callback.surfaceDestroyed} to ensure + * that thread only accesses the Surface while it is valid, and that the + * Surface does not get destroyed while the thread is using it. + * + *

This method is intended to be used by frameworks which often need + * direct access to the Surface object (usually to pass it to native code). + * + * @return Surface The surface. + */ + public Surface getSurface(); +} diff --git a/src/api-impl/android/view/SurfaceView.java b/src/api-impl/android/view/SurfaceView.java new file mode 100644 index 00000000..b099f3d9 --- /dev/null +++ b/src/api-impl/android/view/SurfaceView.java @@ -0,0 +1,192 @@ +package android.view; + +import android.graphics.Canvas; +import android.graphics.Rect; + +import android.content.Context; + +public class SurfaceView extends View { + public SurfaceView(Context context) { + super(context); + +// native_constructor(context); + } + + public SurfaceHolder getHolder() { + return mSurfaceHolder; + } + + final Surface mSurface = new Surface(); + + private final SurfaceHolder mSurfaceHolder = new SurfaceHolder() { + + private static final String LOG_TAG = "SurfaceHolder"; + + @Override + public boolean isCreating() { +// return mIsCreating; + return false; + } + + @Override + public void addCallback(Callback callback) { +/* synchronized (mCallbacks) { + // This is a linear search, but in practice we'll + // have only a couple callbacks, so it doesn't matter. + if (mCallbacks.contains(callback) == false) { + mCallbacks.add(callback); + } + }*/ + } + + @Override + public void removeCallback(Callback callback) { +/* synchronized (mCallbacks) { + mCallbacks.remove(callback); + }*/ + } + + @Override + public void setFixedSize(int width, int height) { +/* if (mRequestedWidth != width || mRequestedHeight != height) { + mRequestedWidth = width; + mRequestedHeight = height; + requestLayout(); + }*/ + } + + @Override + public void setSizeFromLayout() { +/* if (mRequestedWidth != -1 || mRequestedHeight != -1) { + mRequestedWidth = mRequestedHeight = -1; + requestLayout(); + }*/ + } + + @Override + public void setFormat(int format) { +/* + // for backward compatibility reason, OPAQUE always + // means 565 for SurfaceView + if (format == PixelFormat.OPAQUE) + format = PixelFormat.RGB_565; + + mRequestedFormat = format; + if (mWindow != null) { + updateWindow(false, false); + }*/ + } + + /** + * @deprecated setType is now ignored. + */ + @Override + @Deprecated + public void setType(int type) { } + + @Override + public void setKeepScreenOn(boolean screenOn) { +// Message msg = mHandler.obtainMessage(KEEP_SCREEN_ON_MSG); +// msg.arg1 = screenOn ? 1 : 0; +// mHandler.sendMessage(msg); + } + + /** + * Gets a {@link Canvas} for drawing into the SurfaceView's Surface + * + * After drawing into the provided {@link Canvas}, the caller must + * invoke {@link #unlockCanvasAndPost} to post the new contents to the surface. + * + * The caller must redraw the entire surface. + * @return A canvas for drawing into the surface. + */ + @Override + public Canvas lockCanvas() { +// return internalLockCanvas(null); + return null; + } + + /** + * Gets a {@link Canvas} for drawing into the SurfaceView's Surface + * + * After drawing into the provided {@link Canvas}, the caller must + * invoke {@link #unlockCanvasAndPost} to post the new contents to the surface. + * + * @param inOutDirty A rectangle that represents the dirty region that the caller wants + * to redraw. This function may choose to expand the dirty rectangle if for example + * the surface has been resized or if the previous contents of the surface were + * not available. The caller must redraw the entire dirty region as represented + * by the contents of the inOutDirty rectangle upon return from this function. + * The caller may also pass null instead, in the case where the + * entire surface should be redrawn. + * @return A canvas for drawing into the surface. + */ + @Override + public Canvas lockCanvas(Rect inOutDirty) { +// return internalLockCanvas(inOutDirty); + return null; + } + + private final Canvas internalLockCanvas(Rect dirty) { +/* mSurfaceLock.lock(); + + if (DEBUG) Log.i(TAG, "Locking canvas... stopped=" + + mDrawingStopped + ", win=" + mWindow); + + Canvas c = null; + if (!mDrawingStopped && mWindow != null) { + try { + c = mSurface.lockCanvas(dirty); + } catch (Exception e) { + Log.e(LOG_TAG, "Exception locking surface", e); + } + } + + if (DEBUG) Log.i(TAG, "Returned canvas: " + c); + if (c != null) { + mLastLockTime = SystemClock.uptimeMillis(); + return c; + } + + // If the Surface is not ready to be drawn, then return null, + // but throttle calls to this function so it isn't called more + // than every 100ms. + long now = SystemClock.uptimeMillis(); + long nextTime = mLastLockTime + 100; + if (nextTime > now) { + try { + Thread.sleep(nextTime-now); + } catch (InterruptedException e) { + } + now = SystemClock.uptimeMillis(); + } + mLastLockTime = now; + mSurfaceLock.unlock(); +*/ + return null; + } + + /** + * Posts the new contents of the {@link Canvas} to the surface and + * releases the {@link Canvas}. + * + * @param canvas The canvas previously obtained from {@link #lockCanvas}. + */ + @Override + public void unlockCanvasAndPost(Canvas canvas) { +// mSurface.unlockCanvasAndPost(canvas); +// mSurfaceLock.unlock(); + } + + @Override + public Surface getSurface() { + return mSurface; + } + + @Override + public Rect getSurfaceFrame() { +// return mSurfaceFrame; + return null; + } + }; +} diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java new file mode 100644 index 00000000..38be7bf3 --- /dev/null +++ b/src/api-impl/android/view/View.java @@ -0,0 +1,839 @@ +package android.view; + +import android.util.AttributeSet; +import android.util.LayoutDirection; +import android.content.Context; +import android.graphics.Rect; +import android.graphics.Canvas; + +import java.util.HashMap; + +public class View extends Object { + +// --- constants from android source + + /** + * The logging tag used by this class with android.util.Log. + */ + protected static final String VIEW_LOG_TAG = "View"; + + /** + * When set to true, apps will draw debugging information about their layouts. + * + * @hide + */ + public static final String DEBUG_LAYOUT_PROPERTY = "debug.layout"; + + /** + * Used to mark a View that has no ID. + */ + public static final int NO_ID = -1; + + /** + * Signals that compatibility booleans have been initialized according to + * target SDK versions. + */ + private static boolean sCompatibilityDone = false; + + /** + * Use the old (broken) way of building MeasureSpecs. + */ + private static boolean sUseBrokenMakeMeasureSpec = false; + + /** + * Ignore any optimizations using the measure cache. + */ + private static boolean sIgnoreMeasureCache = false; + + /** + * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when + * calling setFlags. + */ + private static final int NOT_FOCUSABLE = 0x00000000; + + /** + * This view wants keystrokes. Use with TAKES_FOCUS_MASK when calling + * setFlags. + */ + private static final int FOCUSABLE = 0x00000001; + + /** + * Mask for use with setFlags indicating bits used for focus. + */ + private static final int FOCUSABLE_MASK = 0x00000001; + + /** + * This view will adjust its padding to fit sytem windows (e.g. status bar) + */ + private static final int FITS_SYSTEM_WINDOWS = 0x00000002; + + /** + * This view is visible. + * Use with {@link #setVisibility} and {@code + * android:visibility}. + */ + public static final int VISIBLE = 0x00000000; + + /** + * This view is invisible, but it still takes up space for layout purposes. + * Use with {@link #setVisibility} and {@code + * android:visibility}. + */ + public static final int INVISIBLE = 0x00000004; + + /** + * This view is invisible, and it doesn't take any space for layout + * purposes. Use with {@link #setVisibility} and {@code + * android:visibility}. + */ + public static final int GONE = 0x00000008; + + /** + * Mask for use with setFlags indicating bits used for visibility. + * {@hide} + */ + static final int VISIBILITY_MASK = 0x0000000C; + + private static final int[] VISIBILITY_FLAGS = {VISIBLE, INVISIBLE, GONE}; + + /** + * This view is enabled. Interpretation varies by subclass. + * Use with ENABLED_MASK when calling setFlags. + * {@hide} + */ + static final int ENABLED = 0x00000000; + + /** + * This view is disabled. Interpretation varies by subclass. + * Use with ENABLED_MASK when calling setFlags. + * {@hide} + */ + static final int DISABLED = 0x00000020; + + /** + * Mask for use with setFlags indicating bits used for indicating whether + * this view is enabled + * {@hide} + */ + static final int ENABLED_MASK = 0x00000020; + + /** + * This view won't draw. {@link #onDraw(android.graphics.Canvas)} won't be + * called and further optimizations will be performed. It is okay to have + * this flag set and a background. Use with DRAW_MASK when calling setFlags. + * {@hide} + */ + static final int WILL_NOT_DRAW = 0x00000080; + + /** + * Mask for use with setFlags indicating bits used for indicating whether + * this view is will draw + * {@hide} + */ + static final int DRAW_MASK = 0x00000080; + + /** + *

This view doesn't show scrollbars.

+ * {@hide} + */ + static final int SCROLLBARS_NONE = 0x00000000; + + /** + *

This view shows horizontal scrollbars.

+ * {@hide} + */ + static final int SCROLLBARS_HORIZONTAL = 0x00000100; + + /** + *

This view shows vertical scrollbars.

+ * {@hide} + */ + static final int SCROLLBARS_VERTICAL = 0x00000200; + + /** + *

Mask for use with setFlags indicating bits used for indicating which + * scrollbars are enabled.

+ * {@hide} + */ + static final int SCROLLBARS_MASK = 0x00000300; + + /** + * Indicates that the view should filter touches when its window is obscured. + * Refer to the class comments for more information about this security feature. + * {@hide} + */ + static final int FILTER_TOUCHES_WHEN_OBSCURED = 0x00000400; + + /** + * Set for framework elements that use FITS_SYSTEM_WINDOWS, to indicate + * that they are optional and should be skipped if the window has + * requested system UI flags that ignore those insets for layout. + */ + static final int OPTIONAL_FITS_SYSTEM_WINDOWS = 0x00000800; + + /** + *

This view doesn't show fading edges.

+ * {@hide} + */ + static final int FADING_EDGE_NONE = 0x00000000; + + /** + *

This view shows horizontal fading edges.

+ * {@hide} + */ + static final int FADING_EDGE_HORIZONTAL = 0x00001000; + + /** + *

This view shows vertical fading edges.

+ * {@hide} + */ + static final int FADING_EDGE_VERTICAL = 0x00002000; + + /** + *

Mask for use with setFlags indicating bits used for indicating which + * fading edges are enabled.

+ * {@hide} + */ + static final int FADING_EDGE_MASK = 0x00003000; + + /** + *

Indicates this view can be clicked. When clickable, a View reacts + * to clicks by notifying the OnClickListener.

+ * {@hide} + */ + static final int CLICKABLE = 0x00004000; + + /** + *

Indicates this view is caching its drawing into a bitmap.

+ * {@hide} + */ + static final int DRAWING_CACHE_ENABLED = 0x00008000; + + /** + *

Indicates that no icicle should be saved for this view.

+ * {@hide} + */ + static final int SAVE_DISABLED = 0x000010000; + + /** + *

Mask for use with setFlags indicating bits used for the saveEnabled + * property.

+ * {@hide} + */ + static final int SAVE_DISABLED_MASK = 0x000010000; + + /** + *

Indicates that no drawing cache should ever be created for this view.

+ * {@hide} + */ + static final int WILL_NOT_CACHE_DRAWING = 0x000020000; + + /** + *

Indicates this view can take / keep focus when int touch mode.

+ * {@hide} + */ + static final int FOCUSABLE_IN_TOUCH_MODE = 0x00040000; + + /** + *

Enables low quality mode for the drawing cache.

+ */ + public static final int DRAWING_CACHE_QUALITY_LOW = 0x00080000; + + /** + *

Enables high quality mode for the drawing cache.

+ */ + public static final int DRAWING_CACHE_QUALITY_HIGH = 0x00100000; + + /** + *

Enables automatic quality mode for the drawing cache.

+ */ + public static final int DRAWING_CACHE_QUALITY_AUTO = 0x00000000; + + private static final int[] DRAWING_CACHE_QUALITY_FLAGS = { + DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_LOW, DRAWING_CACHE_QUALITY_HIGH + }; + + /** + *

Mask for use with setFlags indicating bits used for the cache + * quality property.

+ * {@hide} + */ + static final int DRAWING_CACHE_QUALITY_MASK = 0x00180000; + + /** + *

+ * Indicates this view can be long clicked. When long clickable, a View + * reacts to long clicks by notifying the OnLongClickListener or showing a + * context menu. + *

+ * {@hide} + */ + static final int LONG_CLICKABLE = 0x00200000; + + /** + *

Indicates that this view gets its drawable states from its direct parent + * and ignores its original internal states.

+ * + * @hide + */ + static final int DUPLICATE_PARENT_STATE = 0x00400000; + + /** + * The scrollbar style to display the scrollbars inside the content area, + * without increasing the padding. The scrollbars will be overlaid with + * translucency on the view's content. + */ + public static final int SCROLLBARS_INSIDE_OVERLAY = 0; + + /** + * The scrollbar style to display the scrollbars inside the padded area, + * increasing the padding of the view. The scrollbars will not overlap the + * content area of the view. + */ + public static final int SCROLLBARS_INSIDE_INSET = 0x01000000; + + /** + * The scrollbar style to display the scrollbars at the edge of the view, + * without increasing the padding. The scrollbars will be overlaid with + * translucency. + */ + public static final int SCROLLBARS_OUTSIDE_OVERLAY = 0x02000000; + + /** + * The scrollbar style to display the scrollbars at the edge of the view, + * increasing the padding of the view. The scrollbars will only overlap the + * background, if any. + */ + public static final int SCROLLBARS_OUTSIDE_INSET = 0x03000000; + + /** + * Mask to check if the scrollbar style is overlay or inset. + * {@hide} + */ + static final int SCROLLBARS_INSET_MASK = 0x01000000; + + /** + * Mask to check if the scrollbar style is inside or outside. + * {@hide} + */ + static final int SCROLLBARS_OUTSIDE_MASK = 0x02000000; + + /** + * Mask for scrollbar style. + * {@hide} + */ + static final int SCROLLBARS_STYLE_MASK = 0x03000000; + + /** + * View flag indicating that the screen should remain on while the + * window containing this view is visible to the user. This effectively + * takes care of automatically setting the WindowManager's + * {@link WindowManager.LayoutParams#FLAG_KEEP_SCREEN_ON}. + */ + public static final int KEEP_SCREEN_ON = 0x04000000; + + /** + * View flag indicating whether this view should have sound effects enabled + * for events such as clicking and touching. + */ + public static final int SOUND_EFFECTS_ENABLED = 0x08000000; + + /** + * View flag indicating whether this view should have haptic feedback + * enabled for events such as long presses. + */ + public static final int HAPTIC_FEEDBACK_ENABLED = 0x10000000; + + /** + *

Indicates that the view hierarchy should stop saving state when + * it reaches this view. If state saving is initiated immediately at + * the view, it will be allowed. + * {@hide} + */ + static final int PARENT_SAVE_DISABLED = 0x20000000; + + /** + *

Mask for use with setFlags indicating bits used for PARENT_SAVE_DISABLED.

+ * {@hide} + */ + static final int PARENT_SAVE_DISABLED_MASK = 0x20000000; + + /** + * View flag indicating whether {@link #addFocusables(ArrayList, int, int)} + * should add all focusable Views regardless if they are focusable in touch mode. + */ + public static final int FOCUSABLES_ALL = 0x00000000; + + /** + * View flag indicating whether {@link #addFocusables(ArrayList, int, int)} + * should add only Views focusable in touch mode. + */ + public static final int FOCUSABLES_TOUCH_MODE = 0x00000001; + + /** + * Use with {@link #focusSearch(int)}. Move focus to the previous selectable + * item. + */ + public static final int FOCUS_BACKWARD = 0x00000001; + + /** + * Use with {@link #focusSearch(int)}. Move focus to the next selectable + * item. + */ + public static final int FOCUS_FORWARD = 0x00000002; + + /** + * Use with {@link #focusSearch(int)}. Move focus to the left. + */ + public static final int FOCUS_LEFT = 0x00000011; + + /** + * Use with {@link #focusSearch(int)}. Move focus up. + */ + public static final int FOCUS_UP = 0x00000021; + + /** + * Use with {@link #focusSearch(int)}. Move focus to the right. + */ + public static final int FOCUS_RIGHT = 0x00000042; + + /** + * Use with {@link #focusSearch(int)}. Move focus down. + */ + public static final int FOCUS_DOWN = 0x00000082; + + /** + * Bits of {@link #getMeasuredWidthAndState()} and + * {@link #getMeasuredWidthAndState()} that provide the actual measured size. + */ + public static final int MEASURED_SIZE_MASK = 0x00ffffff; + + /** + * Bits of {@link #getMeasuredWidthAndState()} and + * {@link #getMeasuredWidthAndState()} that provide the additional state bits. + */ + public static final int MEASURED_STATE_MASK = 0xff000000; + + /** + * Bit shift of {@link #MEASURED_STATE_MASK} to get to the height bits + * for functions that combine both width and height into a single int, + * such as {@link #getMeasuredState()} and the childState argument of + * {@link #resolveSizeAndState(int, int, int)}. + */ + public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; + + /** + * Bit of {@link #getMeasuredWidthAndState()} and + * {@link #getMeasuredWidthAndState()} that indicates the measured size + * is smaller that the space the view would like to have. + */ + public static final int MEASURED_STATE_TOO_SMALL = 0x01000000; + +// --- and some flags + + /** + * Indicates that this view has reported that it can accept the current drag's content. + * Cleared when the drag operation concludes. + * @hide + */ + static final int PFLAG2_DRAG_CAN_ACCEPT = 0x00000001; + + /** + * Indicates that this view is currently directly under the drag location in a + * drag-and-drop operation involving content that it can accept. Cleared when + * the drag exits the view, or when the drag operation concludes. + * @hide + */ + static final int PFLAG2_DRAG_HOVERED = 0x00000002; + + /** + * Horizontal layout direction of this view is from Left to Right. + * Use with {@link #setLayoutDirection}. + */ + public static final int LAYOUT_DIRECTION_LTR = LayoutDirection.LTR; + + /** + * Horizontal layout direction of this view is from Right to Left. + * Use with {@link #setLayoutDirection}. + */ + public static final int LAYOUT_DIRECTION_RTL = LayoutDirection.RTL; + + /** + * Horizontal layout direction of this view is inherited from its parent. + * Use with {@link #setLayoutDirection}. + */ + public static final int LAYOUT_DIRECTION_INHERIT = LayoutDirection.INHERIT; + + /** + * Horizontal layout direction of this view is from deduced from the default language + * script for the locale. Use with {@link #setLayoutDirection}. + */ + public static final int LAYOUT_DIRECTION_LOCALE = LayoutDirection.LOCALE; + + /** + * Bit shift to get the horizontal layout direction. (bits after DRAG_HOVERED) + * @hide + */ + static final int PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT = 2; + + /** + * Mask for use with private flags indicating bits used for horizontal layout direction. + * @hide + */ + static final int PFLAG2_LAYOUT_DIRECTION_MASK = 0x00000003 << PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT; + + /** + * Indicates whether the view horizontal layout direction has been resolved and drawn to the + * right-to-left direction. + * @hide + */ + static final int PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL = 4 << PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT; + + /** + * Indicates whether the view horizontal layout direction has been resolved. + * @hide + */ + static final int PFLAG2_LAYOUT_DIRECTION_RESOLVED = 8 << PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT; + + /** + * Mask for use with private flags indicating bits used for resolved horizontal layout direction. + * @hide + */ + static final int PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK = 0x0000000C << PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT; + +// --- end of constants from android source + +// --- interfaces from android source + public interface OnTouchListener { + /** + * Called when a touch event is dispatched to a view. This allows listeners to + * get a chance to respond before the target view. + * + * @param v The view the touch event has been dispatched to. + * @param event The MotionEvent object containing full information about + * the event. + * @return True if the listener has consumed the event, false otherwise. + */ + boolean onTouch(View v, MotionEvent event); + } + + public interface OnClickListener { + void onClick(View v); + } + + public interface OnAttachStateChangeListener { + // TODO + } + + public static interface OnKeyListener { +// TODO +// boolean onKey(View v, int keyCode, KeyEvent event); + } + +// --- end of interfaces + +// --- subclasses + + /** + * A MeasureSpec encapsulates the layout requirements passed from parent to child. + * Each MeasureSpec represents a requirement for either the width or the height. + * A MeasureSpec is comprised of a size and a mode. There are three possible + * modes: + *
+ *
UNSPECIFIED
+ *
+ * The parent has not imposed any constraint on the child. It can be whatever size + * it wants. + *
+ * + *
EXACTLY
+ *
+ * The parent has determined an exact size for the child. The child is going to be + * given those bounds regardless of how big it wants to be. + *
+ * + *
AT_MOST
+ *
+ * The child can be as large as it wants up to the specified size. + *
+ *
+ * + * MeasureSpecs are implemented as ints to reduce object allocation. This class + * is provided to pack and unpack the <size, mode> tuple into the int. + */ + public static class MeasureSpec { + private static final int MODE_SHIFT = 30; + private static final int MODE_MASK = 0x3 << MODE_SHIFT; + + /** + * Measure specification mode: The parent has not imposed any constraint + * on the child. It can be whatever size it wants. + */ + public static final int UNSPECIFIED = 0 << MODE_SHIFT; + + /** + * Measure specification mode: The parent has determined an exact size + * for the child. The child is going to be given those bounds regardless + * of how big it wants to be. + */ + public static final int EXACTLY = 1 << MODE_SHIFT; + + /** + * Measure specification mode: The child can be as large as it wants up + * to the specified size. + */ + public static final int AT_MOST = 2 << MODE_SHIFT; + + /** + * Creates a measure specification based on the supplied size and mode. + * + * The mode must always be one of the following: + *
    + *
  • {@link android.view.View.MeasureSpec#UNSPECIFIED}
  • + *
  • {@link android.view.View.MeasureSpec#EXACTLY}
  • + *
  • {@link android.view.View.MeasureSpec#AT_MOST}
  • + *
+ * + *

Note: On API level 17 and lower, makeMeasureSpec's + * implementation was such that the order of arguments did not matter + * and overflow in either value could impact the resulting MeasureSpec. + * {@link android.widget.RelativeLayout} was affected by this bug. + * Apps targeting API levels greater than 17 will get the fixed, more strict + * behavior.

+ * + * @param size the size of the measure specification + * @param mode the mode of the measure specification + * @return the measure specification based on size and mode + */ + public static int makeMeasureSpec(int size, int mode) { + if (sUseBrokenMakeMeasureSpec) { + return size + mode; + } else { + return (size & ~MODE_MASK) | (mode & MODE_MASK); + } + } + + /** + * Extracts the mode from the supplied measure specification. + * + * @param measureSpec the measure specification to extract the mode from + * @return {@link android.view.View.MeasureSpec#UNSPECIFIED}, + * {@link android.view.View.MeasureSpec#AT_MOST} or + * {@link android.view.View.MeasureSpec#EXACTLY} + */ + public static int getMode(int measureSpec) { + return (measureSpec & MODE_MASK); + } + + /** + * Extracts the size from the supplied measure specification. + * + * @param measureSpec the measure specification to extract the size from + * @return the size in pixels defined in the supplied measure specification + */ + public static int getSize(int measureSpec) { + return (measureSpec & ~MODE_MASK); + } + + static int adjust(int measureSpec, int delta) { + return makeMeasureSpec(getSize(measureSpec + delta), getMode(measureSpec)); + } + + /** + * Returns a String representation of the specified measure + * specification. + * + * @param measureSpec the measure specification to convert to a String + * @return a String with the following format: "MeasureSpec: MODE SIZE" + */ + public static String toString(int measureSpec) { + int mode = getMode(measureSpec); + int size = getSize(measureSpec); + + StringBuilder sb = new StringBuilder("MeasureSpec: "); + + if (mode == UNSPECIFIED) + sb.append("UNSPECIFIED "); + else if (mode == EXACTLY) + sb.append("EXACTLY "); + else if (mode == AT_MOST) + sb.append("AT_MOST "); + else + sb.append(mode).append(" "); + + sb.append(size); + return sb.toString(); + } + } + +// --- end of subclasses + + public int id; + public ViewGroup parent; + public AttributeSet attrs; + protected ViewGroup.LayoutParams layout_params; + private Context context; + + public long widget; // pointer + + public static HashMap view_by_id = new HashMap(); + + public View() {} // FIXME + + public View(AttributeSet attrs) { + id = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android", "id", 0); + + if(id != 0) + view_by_id.put(id, this); + } + + public View findViewById(int id) { + /* TODO: this should probably only search among children, but the id is surely unique anyway? :P */ + return view_by_id.get(id); + } + + public void onDraw(Canvas canvas) {} + + public View(Context context) { + boolean custom_drawing; + + this.context = context; + + try { + Class[] cArg = new Class[1]; + cArg[0] = Canvas.class; + custom_drawing = !( this.getClass().getMethod("onDraw", cArg).getDeclaringClass() == View.class ); + } catch (NoSuchMethodException e) { + custom_drawing = false; + } + + if(custom_drawing) { + native_constructor(context); + } + } + + public final ViewParent getParent() { + return parent; + } + + public void setLayoutParams(ViewGroup.LayoutParams params) { + if (params == null) { + throw new NullPointerException("Layout parameters cannot be null"); + } + + native_set_size_request(params.width, params.height); + + if(params.gravity != -1) { + setGravity(params.gravity); + } + + layout_params = params; + } + + public ViewGroup.LayoutParams getLayoutParams() { + return layout_params; + } + + protected final void setMeasuredDimension(int measuredWidth, int measuredHeight) { + native_set_size_request(MeasureSpec.getSize(measuredWidth), MeasureSpec.getSize(measuredHeight)); + } + + public native void setGravity(int gravity); + public native void setOnTouchListener(OnTouchListener l); + public native void setOnClickListener(OnClickListener l); + public native final int getWidth(); + public native final int getHeight(); + + private native void native_constructor(Context context); // will create a custom GtkWidget with a custom drawing function + private native void native_set_size_request(int width, int height); + +// --- stubs + + public void setOnKeyListener(OnKeyListener l) {} + + public void setFocusable(boolean focusable) {} + public void setFocusableInTouchMode(boolean focusableInTouchMode) {} + public final boolean requestFocus() { + return requestFocus(View.FOCUS_DOWN); + } + public final boolean requestFocus(int direction) { + return requestFocus(direction, null); + } + public boolean requestFocus(int direction, Rect previouslyFocusedRect) { + return true; + } + + public void setSystemUiVisibility(int visibility) {} + + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {} + + public void setPressed(boolean pressed) { + System.out.println("calling setPressed on "+this+" with value: "+pressed); + } + + public void setSelected(boolean selected) { + System.out.println("calling setSelected on "+this+" with value: "+selected); + } + + + public ViewTreeObserver getViewTreeObserver() { + return new ViewTreeObserver(); + } + + protected void onFinishInflate() {} + + public void invalidate(Rect dirty) {} + public void invalidate(int l, int t, int r, int b) {} + public void invalidate() {} + + public void setBackgroundColor(int color) {} + public native void setVisibility(int visibility); + public void setPadding(int left, int top, int right, int bottom) {} + public void setBackgroundResource(int resid) { +// System.out.println("*** setBackgroundResource: " + getString(resid)); + } + + public void getHitRect(Rect outRect) {} + public final boolean getLocalVisibleRect(Rect r) { return false; } + + public final int getTop() { return 0; } + public final int getScrollY() { return 0; } + + public void scrollTo(int x, int y) {} + + public void getLocationOnScreen(int[] location) { // FIXME: actually return the widget's location (and also have the onclick callback convert to window coordinates, because is seems that's what android deals in..) + location[0] = 0; + location[1] = 0; + } + + public boolean performHapticFeedback(int feedbackConstant) { + return performHapticFeedback(feedbackConstant, 0); + } + + public boolean performHapticFeedback(int feedbackConstant, int flags) { + System.out.println("vibration motor go burrrr"); + return true; // FIXME why is it not void + } + + public int getPaddingLeft() { + return 0; + } + + public int getPaddingRight() { + return 0; + } + + public int getPaddingTop() { + return 0; + } + + public int getPaddingBottom() { + return 0; + } + + public void postInvalidate() {} + + public void postInvalidate(int left, int top, int right, int bottom) { + System.out.println("postInvalidate("+left+","+top+","+right+","+bottom+") called"); + } +} diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java new file mode 100644 index 00000000..9c811a92 --- /dev/null +++ b/src/api-impl/android/view/ViewGroup.java @@ -0,0 +1,102 @@ +package android.view; + +import android.util.AttributeSet; +import android.content.Context; + +import java.util.ArrayList; + +public class ViewGroup extends View implements ViewParent, ViewManager { + public int id; + public ArrayList children; + + public ViewGroup() { + children = new ArrayList(); + } + + public ViewGroup(Context context) { + super(context); + + children = new ArrayList(); + } + + public ViewGroup(AttributeSet attrs) { + super(attrs); + + children = new ArrayList(); + } + + public ViewGroup(int _id) { // FIXME + children = new ArrayList(); + + id = _id; + } + + public void addView(View child) { + addView(child, -1, null); + } + + public void addView(View child, int index) { + addView(child, index, null); + } + + public void addView(View child, LayoutParams params) { + addView(child, -1, params); + } + + public void addView(View child, int width, int height) { + addView(child, new LayoutParams(width, height)); + } + + public native void addView(View child, int index, LayoutParams params); + + public native void removeView(View view);/* { + System.out.println("NOT_IMPLEMENTED: ViewGroup.removeView: Gtk4 doesn't have a generic function for removing a child of GtkView, so you must override this function in the actual widget's class"); + }*/ + public native void removeAllViews();/* { + System.out.println("NOT_IMPLEMENTED: ViewGroup.removeAllViews: Gtk4 doesn't have a generic function for removing a child of GtkView, so you must override this function in the actual widget's class"); + new Exception().printStackTrace(); + }*/ + + public View getChildAt(int index) { + return children.get(index); + } + + public void updateViewLayout(View view, ViewGroup.LayoutParams params) {} + + public LayoutParams generateLayoutParams(AttributeSet attrs) { + return new LayoutParams(/*getContext(), attrs*/); + } + + public static class LayoutParams { + public static final int FILL_PARENT = -1; + public static final int MATCH_PARENT = -1; + public static final int WRAP_CONTENT = -2; + + public int width = 0; + public int height = 0; + public float weight = 1; + public int gravity = -1; + + public LayoutParams() { + //FIXME + } + + public LayoutParams(int width, int height) { + this.width = width; + this.height = height; + } + + public LayoutParams(int width, int height, float weight) { + this.width = width; + this.height = height; + this.weight = weight; + } + + public void setMargins(int left, int top, int right, int bottom) {} + + /** + * Used to animate layouts. + */ +// public LayoutAnimationController.AnimationParameters layoutAnimationParameters; + } +} diff --git a/src/api-impl/android/view/ViewManager.java b/src/api-impl/android/view/ViewManager.java new file mode 100644 index 00000000..ab6856f8 --- /dev/null +++ b/src/api-impl/android/view/ViewManager.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +/** Interface to let you add and remove child views to an Activity. To get an instance + * of this class, call {@link android.content.Context#getSystemService(java.lang.String) Context.getSystemService()}. + */ +public interface ViewManager +{ + /** + * Assign the passed LayoutParams to the passed View and add the view to the window. + *

Throws {@link android.view.WindowManager.BadTokenException} for certain programming + * errors, such as adding a second view to a window without removing the first view. + *

Throws {@link android.view.WindowManager.InvalidDisplayException} if the window is on a + * secondary {@link Display} and the specified display can't be found + * (see {@link android.app.Presentation}). + * @param view The view to be added to this window. + * @param params The LayoutParams to assign to view. + */ + public void addView(View view, ViewGroup.LayoutParams params); + public void updateViewLayout(View view, ViewGroup.LayoutParams params); + public void removeView(View view); +} diff --git a/src/api-impl/android/view/ViewParent.java b/src/api-impl/android/view/ViewParent.java new file mode 100644 index 00000000..0627633e --- /dev/null +++ b/src/api-impl/android/view/ViewParent.java @@ -0,0 +1,7 @@ +package android.view; + +import android.graphics.Rect; + +public interface ViewParent { + +} diff --git a/src/api-impl/android/view/ViewTreeObserver.java b/src/api-impl/android/view/ViewTreeObserver.java new file mode 100644 index 00000000..ea896a55 --- /dev/null +++ b/src/api-impl/android/view/ViewTreeObserver.java @@ -0,0 +1,1030 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view; + +import android.graphics.Rect; +import android.graphics.Region; + +import java.util.ArrayList; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * A view tree observer is used to register listeners that can be notified of global + * changes in the view tree. Such global events include, but are not limited to, + * layout of the whole tree, beginning of the drawing pass, touch mode change.... + * + * A ViewTreeObserver should never be instantiated by applications as it is provided + * by the views hierarchy. Refer to {@link android.view.View#getViewTreeObserver()} + * for more information. + */ +public final class ViewTreeObserver { + // Recursive listeners use CopyOnWriteArrayList + private CopyOnWriteArrayList mOnWindowFocusListeners; + private CopyOnWriteArrayList mOnWindowAttachListeners; + private CopyOnWriteArrayList mOnGlobalFocusListeners; + private CopyOnWriteArrayList mOnTouchModeChangeListeners; + + // Non-recursive listeners use CopyOnWriteArray + // Any listener invoked from ViewRootImpl.performTraversals() should not be recursive + private CopyOnWriteArray mOnGlobalLayoutListeners; + private CopyOnWriteArray mOnComputeInternalInsetsListeners; + private CopyOnWriteArray mOnScrollChangedListeners; + private CopyOnWriteArray mOnPreDrawListeners; + + // These listeners cannot be mutated during dispatch + private ArrayList mOnDrawListeners; + + private boolean mAlive = true; + + /** + * Interface definition for a callback to be invoked when the view hierarchy is + * attached to and detached from its window. + */ + public interface OnWindowAttachListener { + /** + * Callback method to be invoked when the view hierarchy is attached to a window + */ + public void onWindowAttached(); + + /** + * Callback method to be invoked when the view hierarchy is detached from a window + */ + public void onWindowDetached(); + } + + /** + * Interface definition for a callback to be invoked when the view hierarchy's window + * focus state changes. + */ + public interface OnWindowFocusChangeListener { + /** + * Callback method to be invoked when the window focus changes in the view tree. + * + * @param hasFocus Set to true if the window is gaining focus, false if it is + * losing focus. + */ + public void onWindowFocusChanged(boolean hasFocus); + } + + /** + * Interface definition for a callback to be invoked when the focus state within + * the view tree changes. + */ + public interface OnGlobalFocusChangeListener { + /** + * Callback method to be invoked when the focus changes in the view tree. When + * the view tree transitions from touch mode to non-touch mode, oldFocus is null. + * When the view tree transitions from non-touch mode to touch mode, newFocus is + * null. When focus changes in non-touch mode (without transition from or to + * touch mode) either oldFocus or newFocus can be null. + * + * @param oldFocus The previously focused view, if any. + * @param newFocus The newly focused View, if any. + */ + public void onGlobalFocusChanged(View oldFocus, View newFocus); + } + + /** + * Interface definition for a callback to be invoked when the global layout state + * or the visibility of views within the view tree changes. + */ + public interface OnGlobalLayoutListener { + /** + * Callback method to be invoked when the global layout state or the visibility of views + * within the view tree changes + */ + public void onGlobalLayout(); + } + + /** + * Interface definition for a callback to be invoked when the view tree is about to be drawn. + */ + public interface OnPreDrawListener { + /** + * Callback method to be invoked when the view tree is about to be drawn. At this point, all + * views in the tree have been measured and given a frame. Clients can use this to adjust + * their scroll bounds or even to request a new layout before drawing occurs. + * + * @return Return true to proceed with the current drawing pass, or false to cancel. + * + * @see android.view.View#onMeasure + * @see android.view.View#onLayout + * @see android.view.View#onDraw + */ + public boolean onPreDraw(); + } + + /** + * Interface definition for a callback to be invoked when the view tree is about to be drawn. + */ + public interface OnDrawListener { + /** + *

Callback method to be invoked when the view tree is about to be drawn. At this point, + * views cannot be modified in any way.

+ * + *

Unlike with {@link OnPreDrawListener}, this method cannot be used to cancel the + * current drawing pass.

+ * + *

An {@link OnDrawListener} listener cannot be added or removed + * from this method.

+ * + * @see android.view.View#onMeasure + * @see android.view.View#onLayout + * @see android.view.View#onDraw + */ + public void onDraw(); + } + + /** + * Interface definition for a callback to be invoked when the touch mode changes. + */ + public interface OnTouchModeChangeListener { + /** + * Callback method to be invoked when the touch mode changes. + * + * @param isInTouchMode True if the view hierarchy is now in touch mode, false otherwise. + */ + public void onTouchModeChanged(boolean isInTouchMode); + } + + /** + * Interface definition for a callback to be invoked when + * something in the view tree has been scrolled. + */ + public interface OnScrollChangedListener { + /** + * Callback method to be invoked when something in the view tree + * has been scrolled. + */ + public void onScrollChanged(); + } + + /** + * Parameters used with OnComputeInternalInsetsListener. + * + * We are not yet ready to commit to this API and support it, so + * @hide + */ + public final static class InternalInsetsInfo { + /** + * Offsets from the frame of the window at which the content of + * windows behind it should be placed. + */ + public final Rect contentInsets = new Rect(); + + /** + * Offsets from the frame of the window at which windows behind it + * are visible. + */ + public final Rect visibleInsets = new Rect(); + + /** + * Touchable region defined relative to the origin of the frame of the window. + * Only used when {@link #setTouchableInsets(int)} is called with + * the option {@link #TOUCHABLE_INSETS_REGION}. + */ + public final Region touchableRegion = new Region(); + + /** + * Option for {@link #setTouchableInsets(int)}: the entire window frame + * can be touched. + */ + public static final int TOUCHABLE_INSETS_FRAME = 0; + + /** + * Option for {@link #setTouchableInsets(int)}: the area inside of + * the content insets can be touched. + */ + public static final int TOUCHABLE_INSETS_CONTENT = 1; + + /** + * Option for {@link #setTouchableInsets(int)}: the area inside of + * the visible insets can be touched. + */ + public static final int TOUCHABLE_INSETS_VISIBLE = 2; + + /** + * Option for {@link #setTouchableInsets(int)}: the area inside of + * the provided touchable region in {@link #touchableRegion} can be touched. + */ + public static final int TOUCHABLE_INSETS_REGION = 3; + + /** + * Set which parts of the window can be touched: either + * {@link #TOUCHABLE_INSETS_FRAME}, {@link #TOUCHABLE_INSETS_CONTENT}, + * {@link #TOUCHABLE_INSETS_VISIBLE}, or {@link #TOUCHABLE_INSETS_REGION}. + */ + public void setTouchableInsets(int val) { + mTouchableInsets = val; + } + + int mTouchableInsets; + + void reset() { + contentInsets.setEmpty(); + visibleInsets.setEmpty(); + touchableRegion.setEmpty(); + mTouchableInsets = TOUCHABLE_INSETS_FRAME; + } + + boolean isEmpty() { + return contentInsets.isEmpty() + && visibleInsets.isEmpty() + && touchableRegion.isEmpty() + && mTouchableInsets == TOUCHABLE_INSETS_FRAME; + } + + @Override + public int hashCode() { + int result = contentInsets.hashCode(); + result = 31 * result + visibleInsets.hashCode(); + result = 31 * result + touchableRegion.hashCode(); + result = 31 * result + mTouchableInsets; + return result; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + InternalInsetsInfo other = (InternalInsetsInfo)o; + return mTouchableInsets == other.mTouchableInsets && + contentInsets.equals(other.contentInsets) && + visibleInsets.equals(other.visibleInsets) && + touchableRegion.equals(other.touchableRegion); + } + + void set(InternalInsetsInfo other) { + contentInsets.set(other.contentInsets); + visibleInsets.set(other.visibleInsets); + touchableRegion.set(other.touchableRegion); + mTouchableInsets = other.mTouchableInsets; + } + } + + /** + * Interface definition for a callback to be invoked when layout has + * completed and the client can compute its interior insets. + * + * We are not yet ready to commit to this API and support it, so + * @hide + */ + public interface OnComputeInternalInsetsListener { + /** + * Callback method to be invoked when layout has completed and the + * client can compute its interior insets. + * + * @param inoutInfo Should be filled in by the implementation with + * the information about the insets of the window. This is called + * with whatever values the previous OnComputeInternalInsetsListener + * returned, if there are multiple such listeners in the window. + */ + public void onComputeInternalInsets(InternalInsetsInfo inoutInfo); + } + + /** + * Creates a new ViewTreeObserver. This constructor should not be called + */ + ViewTreeObserver() { + } + + /** + * Merges all the listeners registered on the specified observer with the listeners + * registered on this object. After this method is invoked, the specified observer + * will return false in {@link #isAlive()} and should not be used anymore. + * + * @param observer The ViewTreeObserver whose listeners must be added to this observer + */ + void merge(ViewTreeObserver observer) { + if (observer.mOnWindowAttachListeners != null) { + if (mOnWindowAttachListeners != null) { + mOnWindowAttachListeners.addAll(observer.mOnWindowAttachListeners); + } else { + mOnWindowAttachListeners = observer.mOnWindowAttachListeners; + } + } + + if (observer.mOnWindowFocusListeners != null) { + if (mOnWindowFocusListeners != null) { + mOnWindowFocusListeners.addAll(observer.mOnWindowFocusListeners); + } else { + mOnWindowFocusListeners = observer.mOnWindowFocusListeners; + } + } + + if (observer.mOnGlobalFocusListeners != null) { + if (mOnGlobalFocusListeners != null) { + mOnGlobalFocusListeners.addAll(observer.mOnGlobalFocusListeners); + } else { + mOnGlobalFocusListeners = observer.mOnGlobalFocusListeners; + } + } + + if (observer.mOnGlobalLayoutListeners != null) { + if (mOnGlobalLayoutListeners != null) { + mOnGlobalLayoutListeners.addAll(observer.mOnGlobalLayoutListeners); + } else { + mOnGlobalLayoutListeners = observer.mOnGlobalLayoutListeners; + } + } + + if (observer.mOnPreDrawListeners != null) { + if (mOnPreDrawListeners != null) { + mOnPreDrawListeners.addAll(observer.mOnPreDrawListeners); + } else { + mOnPreDrawListeners = observer.mOnPreDrawListeners; + } + } + + if (observer.mOnTouchModeChangeListeners != null) { + if (mOnTouchModeChangeListeners != null) { + mOnTouchModeChangeListeners.addAll(observer.mOnTouchModeChangeListeners); + } else { + mOnTouchModeChangeListeners = observer.mOnTouchModeChangeListeners; + } + } + + if (observer.mOnComputeInternalInsetsListeners != null) { + if (mOnComputeInternalInsetsListeners != null) { + mOnComputeInternalInsetsListeners.addAll(observer.mOnComputeInternalInsetsListeners); + } else { + mOnComputeInternalInsetsListeners = observer.mOnComputeInternalInsetsListeners; + } + } + + if (observer.mOnScrollChangedListeners != null) { + if (mOnScrollChangedListeners != null) { + mOnScrollChangedListeners.addAll(observer.mOnScrollChangedListeners); + } else { + mOnScrollChangedListeners = observer.mOnScrollChangedListeners; + } + } + + observer.kill(); + } + + /** + * Register a callback to be invoked when the view hierarchy is attached to a window. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnWindowAttachListener(OnWindowAttachListener listener) { + checkIsAlive(); + + if (mOnWindowAttachListeners == null) { + mOnWindowAttachListeners + = new CopyOnWriteArrayList(); + } + + mOnWindowAttachListeners.add(listener); + } + + /** + * Remove a previously installed window attach callback. + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener) + */ + public void removeOnWindowAttachListener(OnWindowAttachListener victim) { + checkIsAlive(); + if (mOnWindowAttachListeners == null) { + return; + } + mOnWindowAttachListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the window focus state within the view tree changes. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnWindowFocusChangeListener(OnWindowFocusChangeListener listener) { + checkIsAlive(); + + if (mOnWindowFocusListeners == null) { + mOnWindowFocusListeners + = new CopyOnWriteArrayList(); + } + + mOnWindowFocusListeners.add(listener); + } + + /** + * Remove a previously installed window focus change callback. + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener) + */ + public void removeOnWindowFocusChangeListener(OnWindowFocusChangeListener victim) { + checkIsAlive(); + if (mOnWindowFocusListeners == null) { + return; + } + mOnWindowFocusListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the focus state within the view tree changes. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnGlobalFocusChangeListener(OnGlobalFocusChangeListener listener) { + checkIsAlive(); + + if (mOnGlobalFocusListeners == null) { + mOnGlobalFocusListeners = new CopyOnWriteArrayList(); + } + + mOnGlobalFocusListeners.add(listener); + } + + /** + * Remove a previously installed focus change callback. + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnGlobalFocusChangeListener(OnGlobalFocusChangeListener) + */ + public void removeOnGlobalFocusChangeListener(OnGlobalFocusChangeListener victim) { + checkIsAlive(); + if (mOnGlobalFocusListeners == null) { + return; + } + mOnGlobalFocusListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the global layout state or the visibility of views + * within the view tree changes + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnGlobalLayoutListener(OnGlobalLayoutListener listener) { + checkIsAlive(); + + if (mOnGlobalLayoutListeners == null) { + mOnGlobalLayoutListeners = new CopyOnWriteArray(); + } + + mOnGlobalLayoutListeners.add(listener); + } + + /** + * Remove a previously installed global layout callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @deprecated Use #removeOnGlobalLayoutListener instead + * + * @see #addOnGlobalLayoutListener(OnGlobalLayoutListener) + */ + @Deprecated + public void removeGlobalOnLayoutListener(OnGlobalLayoutListener victim) { + removeOnGlobalLayoutListener(victim); + } + + /** + * Remove a previously installed global layout callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnGlobalLayoutListener(OnGlobalLayoutListener) + */ + public void removeOnGlobalLayoutListener(OnGlobalLayoutListener victim) { + checkIsAlive(); + if (mOnGlobalLayoutListeners == null) { + return; + } + mOnGlobalLayoutListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the view tree is about to be drawn + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnPreDrawListener(OnPreDrawListener listener) { + checkIsAlive(); + + if (mOnPreDrawListeners == null) { + mOnPreDrawListeners = new CopyOnWriteArray(); + } + + mOnPreDrawListeners.add(listener); + + // FIXME haxx + + listener.onPreDraw(); + } + + /** + * Remove a previously installed pre-draw callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnPreDrawListener(OnPreDrawListener) + */ + public void removeOnPreDrawListener(OnPreDrawListener victim) { + checkIsAlive(); + if (mOnPreDrawListeners == null) { + return; + } + mOnPreDrawListeners.remove(victim); + } + + /** + *

Register a callback to be invoked when the view tree is about to be drawn.

+ *

Note: this method cannot be invoked from + * {@link android.view.ViewTreeObserver.OnDrawListener#onDraw()}.

+ * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnDrawListener(OnDrawListener listener) { + checkIsAlive(); + + if (mOnDrawListeners == null) { + mOnDrawListeners = new ArrayList(); + } + + mOnDrawListeners.add(listener); + } + + /** + *

Remove a previously installed pre-draw callback.

+ *

Note: this method cannot be invoked from + * {@link android.view.ViewTreeObserver.OnDrawListener#onDraw()}.

+ * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnDrawListener(OnDrawListener) + */ + public void removeOnDrawListener(OnDrawListener victim) { + checkIsAlive(); + if (mOnDrawListeners == null) { + return; + } + mOnDrawListeners.remove(victim); + } + + /** + * Register a callback to be invoked when a view has been scrolled. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnScrollChangedListener(OnScrollChangedListener listener) { + checkIsAlive(); + + if (mOnScrollChangedListeners == null) { + mOnScrollChangedListeners = new CopyOnWriteArray(); + } + + mOnScrollChangedListeners.add(listener); + } + + /** + * Remove a previously installed scroll-changed callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnScrollChangedListener(OnScrollChangedListener) + */ + public void removeOnScrollChangedListener(OnScrollChangedListener victim) { + checkIsAlive(); + if (mOnScrollChangedListeners == null) { + return; + } + mOnScrollChangedListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the invoked when the touch mode changes. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + */ + public void addOnTouchModeChangeListener(OnTouchModeChangeListener listener) { + checkIsAlive(); + + if (mOnTouchModeChangeListeners == null) { + mOnTouchModeChangeListeners = new CopyOnWriteArrayList(); + } + + mOnTouchModeChangeListeners.add(listener); + } + + /** + * Remove a previously installed touch mode change callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnTouchModeChangeListener(OnTouchModeChangeListener) + */ + public void removeOnTouchModeChangeListener(OnTouchModeChangeListener victim) { + checkIsAlive(); + if (mOnTouchModeChangeListeners == null) { + return; + } + mOnTouchModeChangeListeners.remove(victim); + } + + /** + * Register a callback to be invoked when the invoked when it is time to + * compute the window's internal insets. + * + * @param listener The callback to add + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * We are not yet ready to commit to this API and support it, so + * @hide + */ + public void addOnComputeInternalInsetsListener(OnComputeInternalInsetsListener listener) { + checkIsAlive(); + + if (mOnComputeInternalInsetsListeners == null) { + mOnComputeInternalInsetsListeners = + new CopyOnWriteArray(); + } + + mOnComputeInternalInsetsListeners.add(listener); + } + + /** + * Remove a previously installed internal insets computation callback + * + * @param victim The callback to remove + * + * @throws IllegalStateException If {@link #isAlive()} returns false + * + * @see #addOnComputeInternalInsetsListener(OnComputeInternalInsetsListener) + * + * We are not yet ready to commit to this API and support it, so + * @hide + */ + public void removeOnComputeInternalInsetsListener(OnComputeInternalInsetsListener victim) { + checkIsAlive(); + if (mOnComputeInternalInsetsListeners == null) { + return; + } + mOnComputeInternalInsetsListeners.remove(victim); + } + + private void checkIsAlive() { + if (!mAlive) { + throw new IllegalStateException("This ViewTreeObserver is not alive, call " + + "getViewTreeObserver() again"); + } + } + + /** + * Indicates whether this ViewTreeObserver is alive. When an observer is not alive, + * any call to a method (except this one) will throw an exception. + * + * If an application keeps a long-lived reference to this ViewTreeObserver, it should + * always check for the result of this method before calling any other method. + * + * @return True if this object is alive and be used, false otherwise. + */ + public boolean isAlive() { + return mAlive; + } + + /** + * Marks this ViewTreeObserver as not alive. After invoking this method, invoking + * any other method but {@link #isAlive()} and {@link #kill()} will throw an Exception. + * + * @hide + */ + private void kill() { + mAlive = false; + } + + /** + * Notifies registered listeners that window has been attached/detached. + */ + final void dispatchOnWindowAttachedChange(boolean attached) { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArrayList listeners + = mOnWindowAttachListeners; + if (listeners != null && listeners.size() > 0) { + for (OnWindowAttachListener listener : listeners) { + if (attached) listener.onWindowAttached(); + else listener.onWindowDetached(); + } + } + } + + /** + * Notifies registered listeners that window focus has changed. + */ + final void dispatchOnWindowFocusChange(boolean hasFocus) { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArrayList listeners + = mOnWindowFocusListeners; + if (listeners != null && listeners.size() > 0) { + for (OnWindowFocusChangeListener listener : listeners) { + listener.onWindowFocusChanged(hasFocus); + } + } + } + + /** + * Notifies registered listeners that focus has changed. + */ + final void dispatchOnGlobalFocusChange(View oldFocus, View newFocus) { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArrayList listeners = mOnGlobalFocusListeners; + if (listeners != null && listeners.size() > 0) { + for (OnGlobalFocusChangeListener listener : listeners) { + listener.onGlobalFocusChanged(oldFocus, newFocus); + } + } + } + + /** + * Notifies registered listeners that a global layout happened. This can be called + * manually if you are forcing a layout on a View or a hierarchy of Views that are + * not attached to a Window or in the GONE state. + */ + public final void dispatchOnGlobalLayout() { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArray listeners = mOnGlobalLayoutListeners; + if (listeners != null && listeners.size() > 0) { + CopyOnWriteArray.Access access = listeners.start(); + try { + int count = access.size(); + for (int i = 0; i < count; i++) { + access.get(i).onGlobalLayout(); + } + } finally { + listeners.end(); + } + } + } + + /** + * Returns whether there are listeners for on pre-draw events. + */ + final boolean hasOnPreDrawListeners() { + return mOnPreDrawListeners != null && mOnPreDrawListeners.size() > 0; + } + + /** + * Notifies registered listeners that the drawing pass is about to start. If a + * listener returns true, then the drawing pass is canceled and rescheduled. This can + * be called manually if you are forcing the drawing on a View or a hierarchy of Views + * that are not attached to a Window or in the GONE state. + * + * @return True if the current draw should be canceled and resceduled, false otherwise. + */ + @SuppressWarnings("unchecked") + public final boolean dispatchOnPreDraw() { + boolean cancelDraw = false; + final CopyOnWriteArray listeners = mOnPreDrawListeners; + if (listeners != null && listeners.size() > 0) { + CopyOnWriteArray.Access access = listeners.start(); + try { + int count = access.size(); + for (int i = 0; i < count; i++) { + cancelDraw |= !(access.get(i).onPreDraw()); + } + } finally { + listeners.end(); + } + } + return cancelDraw; + } + + /** + * Notifies registered listeners that the drawing pass is about to start. + */ + public final void dispatchOnDraw() { + if (mOnDrawListeners != null) { + final ArrayList listeners = mOnDrawListeners; + int numListeners = listeners.size(); + for (int i = 0; i < numListeners; ++i) { + listeners.get(i).onDraw(); + } + } + } + + /** + * Notifies registered listeners that the touch mode has changed. + * + * @param inTouchMode True if the touch mode is now enabled, false otherwise. + */ + final void dispatchOnTouchModeChanged(boolean inTouchMode) { + final CopyOnWriteArrayList listeners = + mOnTouchModeChangeListeners; + if (listeners != null && listeners.size() > 0) { + for (OnTouchModeChangeListener listener : listeners) { + listener.onTouchModeChanged(inTouchMode); + } + } + } + + /** + * Notifies registered listeners that something has scrolled. + */ + final void dispatchOnScrollChanged() { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArray listeners = mOnScrollChangedListeners; + if (listeners != null && listeners.size() > 0) { + CopyOnWriteArray.Access access = listeners.start(); + try { + int count = access.size(); + for (int i = 0; i < count; i++) { + access.get(i).onScrollChanged(); + } + } finally { + listeners.end(); + } + } + } + + /** + * Returns whether there are listeners for computing internal insets. + */ + final boolean hasComputeInternalInsetsListeners() { + final CopyOnWriteArray listeners = + mOnComputeInternalInsetsListeners; + return (listeners != null && listeners.size() > 0); + } + + /** + * Calls all listeners to compute the current insets. + */ + final void dispatchOnComputeInternalInsets(InternalInsetsInfo inoutInfo) { + // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to + // perform the dispatching. The iterator is a safe guard against listeners that + // could mutate the list by calling the various add/remove methods. This prevents + // the array from being modified while we iterate it. + final CopyOnWriteArray listeners = + mOnComputeInternalInsetsListeners; + if (listeners != null && listeners.size() > 0) { + CopyOnWriteArray.Access access = listeners.start(); + try { + int count = access.size(); + for (int i = 0; i < count; i++) { + access.get(i).onComputeInternalInsets(inoutInfo); + } + } finally { + listeners.end(); + } + } + } + + /** + * Copy on write array. This array is not thread safe, and only one loop can + * iterate over this array at any given time. This class avoids allocations + * until a concurrent modification happens. + * + * Usage: + * + * CopyOnWriteArray.Access access = array.start(); + * try { + * for (int i = 0; i < access.size(); i++) { + * MyData d = access.get(i); + * } + * } finally { + * access.end(); + * } + */ + static class CopyOnWriteArray { + private ArrayList mData = new ArrayList(); + private ArrayList mDataCopy; + + private final Access mAccess = new Access(); + + private boolean mStart; + + static class Access { + private ArrayList mData; + private int mSize; + + T get(int index) { + return mData.get(index); + } + + int size() { + return mSize; + } + } + + CopyOnWriteArray() { + } + + private ArrayList getArray() { + if (mStart) { + if (mDataCopy == null) mDataCopy = new ArrayList(mData); + return mDataCopy; + } + return mData; + } + + Access start() { + if (mStart) throw new IllegalStateException("Iteration already started"); + mStart = true; + mDataCopy = null; + mAccess.mData = mData; + mAccess.mSize = mData.size(); + return mAccess; + } + + void end() { + if (!mStart) throw new IllegalStateException("Iteration not started"); + mStart = false; + if (mDataCopy != null) { + mData = mDataCopy; + mAccess.mData.clear(); + mAccess.mSize = 0; + } + mDataCopy = null; + } + + int size() { + return getArray().size(); + } + + void add(T item) { + getArray().add(item); + } + + void addAll(CopyOnWriteArray array) { + getArray().addAll(array.mData); + } + + void remove(T item) { + getArray().remove(item); + } + + void clear() { + getArray().clear(); + } + } +} diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java new file mode 100644 index 00000000..80d0470d --- /dev/null +++ b/src/api-impl/android/view/Window.java @@ -0,0 +1,32 @@ +package android.view; + +public class Window { + public static interface Callback {} + public static class fixme_callback implements Callback {} + + // FIXME private + public long native_window; + + private Window.Callback callback; + + public Window() { + this.callback = new fixme_callback(); + } + + public void addFlags(int flags) {} + public void setFlags(int flags, int mask) {} + public void clearFlags(int flags) {} + + public final Callback getCallback() { + return this.callback; + } + public void setCallback(Window.Callback callback) { + this.callback = callback; + } + + public void setContentView(View view) { + set_widget_as_root(native_window, view.widget); + } + + private native void set_widget_as_root(long native_window, long widget); +} diff --git a/src/api-impl/android/view/WindowManager.java b/src/api-impl/android/view/WindowManager.java new file mode 100644 index 00000000..200f3216 --- /dev/null +++ b/src/api-impl/android/view/WindowManager.java @@ -0,0 +1,8 @@ +package android.view; + +public interface WindowManager { + public android.view.Display getDefaultDisplay(); + + public class LayoutParams { + } +} diff --git a/src/api-impl/android/view/WindowManagerImpl.java b/src/api-impl/android/view/WindowManagerImpl.java new file mode 100644 index 00000000..eb7f6d60 --- /dev/null +++ b/src/api-impl/android/view/WindowManagerImpl.java @@ -0,0 +1,10 @@ +package android.view; + +public class WindowManagerImpl implements WindowManager { + public android.view.Display getDefaultDisplay() { + return new android.view.Display(); + } + + public class LayoutParams { + } +} diff --git a/src/api-impl/android/webkit/WebSettings.java b/src/api-impl/android/webkit/WebSettings.java new file mode 100644 index 00000000..112a271b --- /dev/null +++ b/src/api-impl/android/webkit/WebSettings.java @@ -0,0 +1,7 @@ +package android.webkit; + +public class WebSettings { + public String getUserAgentString() { + return "FUCK YOU"; + } +} diff --git a/src/api-impl/android/webkit/WebView.java b/src/api-impl/android/webkit/WebView.java new file mode 100644 index 00000000..08357804 --- /dev/null +++ b/src/api-impl/android/webkit/WebView.java @@ -0,0 +1,13 @@ +package android.webkit; + +import android.content.Context; + +// the only reason we need to implement this is that some app developers are such scumbags that they try to use this for tracking purposes +public class WebView { + public WebView (Context context) { + } + + public WebSettings getSettings() { + return new WebSettings(); + } +} diff --git a/src/api-impl/android/widget/EditText.java b/src/api-impl/android/widget/EditText.java new file mode 100644 index 00000000..5fe89427 --- /dev/null +++ b/src/api-impl/android/widget/EditText.java @@ -0,0 +1,10 @@ +package android.widget; + +import android.view.View; +import android.content.Context; + +public class EditText extends TextView { + public EditText(Context context){ + super(context); + } +} diff --git a/src/api-impl/android/widget/FrameLayout.java b/src/api-impl/android/widget/FrameLayout.java new file mode 100644 index 00000000..c74447ab --- /dev/null +++ b/src/api-impl/android/widget/FrameLayout.java @@ -0,0 +1,49 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.ViewGroup; +import android.view.View; +import android.view.ViewGroup.LayoutParams; + +public class FrameLayout extends ViewGroup { + + public FrameLayout(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public FrameLayout(Context context) { + super(context); + + native_constructor(context); + } + + public native void native_constructor(AttributeSet attrs); + public native void native_constructor(Context context); + + @Override + public native void addView(View child, int index, ViewGroup.LayoutParams params); + + public void addView(View child, int index) { + addView(child, index, null); + } + + public static class LayoutParams extends ViewGroup.LayoutParams { + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(int width, int height, float weight) { + super(width, height, weight); + } + + public LayoutParams(int width, int height, int gravity) { + this.width = width; + this.height = height; + this.gravity = gravity; + } + } +} diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java new file mode 100644 index 00000000..64af32db --- /dev/null +++ b/src/api-impl/android/widget/ImageView.java @@ -0,0 +1,87 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.View; + +public class ImageView extends View { + public ImageView(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public ImageView(Context context) { + super(context); + + native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + public /*native*/ void setImageResource(final int resid) {} + public void setAdjustViewBounds(boolean adjustViewBounds) {} + + public void setScaleType(ScaleType scaleType) {} + + /** + * Options for scaling the bounds of an image to the bounds of this view. + */ + public enum ScaleType { + /** + * Scale using the image matrix when drawing. The image matrix can be set using + * {@link ImageView#setImageMatrix(Matrix)}. From XML, use this syntax: + * android:scaleType="matrix". + */ + MATRIX (0), + /** + * Scale the image using {@link Matrix.ScaleToFit#FILL}. + * From XML, use this syntax: android:scaleType="fitXY". + */ + FIT_XY (1), + /** + * Scale the image using {@link Matrix.ScaleToFit#START}. + * From XML, use this syntax: android:scaleType="fitStart". + */ + FIT_START (2), + /** + * Scale the image using {@link Matrix.ScaleToFit#CENTER}. + * From XML, use this syntax: + * android:scaleType="fitCenter". + */ + FIT_CENTER (3), + /** + * Scale the image using {@link Matrix.ScaleToFit#END}. + * From XML, use this syntax: android:scaleType="fitEnd". + */ + FIT_END (4), + /** + * Center the image in the view, but perform no scaling. + * From XML, use this syntax: android:scaleType="center". + */ + CENTER (5), + /** + * Scale the image uniformly (maintain the image's aspect ratio) so + * that both dimensions (width and height) of the image will be equal + * to or larger than the corresponding dimension of the view + * (minus padding). The image is then centered in the view. + * From XML, use this syntax: android:scaleType="centerCrop". + */ + CENTER_CROP (6), + /** + * Scale the image uniformly (maintain the image's aspect ratio) so + * that both dimensions (width and height) of the image will be equal + * to or less than the corresponding dimension of the view + * (minus padding). The image is then centered in the view. + * From XML, use this syntax: android:scaleType="centerInside". + */ + CENTER_INSIDE (7); + + ScaleType(int ni) { + nativeInt = ni; + } + final int nativeInt; + } +} diff --git a/src/api-impl/android/widget/LinearLayout.java b/src/api-impl/android/widget/LinearLayout.java new file mode 100644 index 00000000..8a8caee8 --- /dev/null +++ b/src/api-impl/android/widget/LinearLayout.java @@ -0,0 +1,48 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.ViewGroup; +import android.view.View; +import android.view.ViewGroup.LayoutParams; + +public class LinearLayout extends ViewGroup { + + boolean orientation; + + public LinearLayout(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public LinearLayout(Context context) { + super(context); + + native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + @Override + public native void addView(View child, int index, ViewGroup.LayoutParams params); + @Override + public native void removeView(View view); + @Override + public native void removeAllViews(); + + public native void setOrientation(int orientation); + public void setWeightSum(float weightSum) {} + + public static class LayoutParams extends ViewGroup.LayoutParams { + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(int width, int height, float weight) { + super(width, height, weight); + } + } +} diff --git a/src/api-impl/android/widget/MediaController.java b/src/api-impl/android/widget/MediaController.java new file mode 100644 index 00000000..73b90b7d --- /dev/null +++ b/src/api-impl/android/widget/MediaController.java @@ -0,0 +1,6 @@ +package android.widget; + +public class MediaController { + public interface MediaPlayerControl { + } +} diff --git a/src/api-impl/android/widget/ProgressBar.java b/src/api-impl/android/widget/ProgressBar.java new file mode 100644 index 00000000..ad8afab1 --- /dev/null +++ b/src/api-impl/android/widget/ProgressBar.java @@ -0,0 +1,25 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.View; + +public class ProgressBar extends View { + public ProgressBar(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public ProgressBar(Context context) { + super(context); + +// native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + public synchronized void setIndeterminate(boolean indeterminate) {} +} diff --git a/src/api-impl/android/widget/RelativeLayout.java b/src/api-impl/android/widget/RelativeLayout.java new file mode 100644 index 00000000..771f3355 --- /dev/null +++ b/src/api-impl/android/widget/RelativeLayout.java @@ -0,0 +1,44 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.ViewGroup; +import android.view.View; +import android.view.ViewGroup.LayoutParams; + +public class RelativeLayout extends ViewGroup { + + boolean orientation; + + public RelativeLayout(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public RelativeLayout(Context context) { + super(context); + + native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + @Override + public native void addView(View child, int index, ViewGroup.LayoutParams params); + + public static class LayoutParams extends ViewGroup.LayoutParams { + public LayoutParams(int width, int height) { + super(width, height); + } + + public LayoutParams(int width, int height, float weight) { + super(width, height, weight); + } + + public void addRule(int verb) {} + public void addRule(int verb, int anchor) {} + } +} diff --git a/src/api-impl/android/widget/ScrollView.java b/src/api-impl/android/widget/ScrollView.java new file mode 100644 index 00000000..d88555fd --- /dev/null +++ b/src/api-impl/android/widget/ScrollView.java @@ -0,0 +1,35 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; + +import android.view.ViewGroup; +import android.view.View; +import android.view.ViewGroup.LayoutParams; + +public class ScrollView extends ViewGroup { + public ScrollView(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public ScrollView(Context context) { + super(context); + + native_constructor(context); + } + + private native void native_constructor(AttributeSet attrs); + private native void native_constructor(Context context); + + @Override + public native void addView(View child, int index, LayoutParams params); + @Override + public native void removeView(View view); + @Override + public native void removeAllViews(); + + protected void onScrollChanged(int x, int y, int oldx, int oldy) {} + public void setFillViewport(boolean fillViewport) {} +} diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java new file mode 100644 index 00000000..4e39d998 --- /dev/null +++ b/src/api-impl/android/widget/TextView.java @@ -0,0 +1,79 @@ +package android.widget; + +import android.util.AttributeSet; +import android.content.Context; +import android.graphics.Typeface; +import android.content.res.ColorStateList; +import android.text.TextPaint; +import android.content.res.TypedArray; + +import android.text.InputFilter; +import android.text.TextWatcher; + +import android.view.View; + +public class TextView extends View { + public String text; + + public TextView(int _id) { // FIXME + id = _id; + } + + public TextView(AttributeSet attrs) { + super(attrs); + + native_constructor(attrs); + } + + public TextView(Context context) { + super(context); + + native_constructor(context); + } + + native void native_constructor(AttributeSet attrs); + native void native_constructor(Context context); + + public final void setText(CharSequence text) { + if(text == null) { + native_setText("NULL"); + return; + } + + native_setText(text.toString()); + + if(text instanceof android.text.Spanned) + native_set_markup(1); + } + + private native final void native_set_markup(int bool); + + public native final void native_setText(String text); + public native void setTextSize(float size); + + public void setTextColor(int color) {} + public void setTextColor(ColorStateList colors) {} + public void setTextSize(int unit, float size) {} + public void setTypeface(Typeface tf, int style) {} + public void setTypeface(Typeface tf) {} + public void setLineSpacing(float add, float mult) {} + public final void setLinksClickable(boolean whether) {} + + public void setInputType(int type) {} + public void setFilters(InputFilter[] filters) {} + public void setCursorVisible(boolean visible) {} + public void setImeOptions(int imeOptions) {} + + public final ColorStateList getTextColors() { return new ColorStateList(new int[][] { new int[0] }, new int[1]); } + public static ColorStateList getTextColors(Context context, TypedArray attrs) { return new ColorStateList(new int[][] { new int[0] }, new int[1]); } + + public TextPaint getPaint() { + return new TextPaint(); + } + + public void addTextChangedListener(TextWatcher watcher) {} + public void setOnEditorActionListener (TextView.OnEditorActionListener l) {} + + public static interface OnEditorActionListener { + } +} diff --git a/src/api-impl/com/android/internal/Manifest.java b/src/api-impl/com/android/internal/Manifest.java new file mode 100644 index 00000000..d8361b3b --- /dev/null +++ b/src/api-impl/com/android/internal/Manifest.java @@ -0,0 +1,1183 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.android.internal; + +public final class Manifest { + public static final class permission { + /** Allows an application to access all multi-user external storage @hide + */ + public static final String ACCESS_ALL_EXTERNAL_STORAGE="android.permission.ACCESS_ALL_EXTERNAL_STORAGE"; + /** Allow an application to read and write the cache partition. + @hide + */ + public static final String ACCESS_CACHE_FILESYSTEM="android.permission.ACCESS_CACHE_FILESYSTEM"; + /** Allows read/write access to the "properties" table in the checkin + database, to change values that get uploaded. +

Not for use by third-party applications. + */ + public static final String ACCESS_CHECKIN_PROPERTIES="android.permission.ACCESS_CHECKIN_PROPERTIES"; + /** Allows an app to access approximate location derived from network location + sources such as cell towers and Wi-Fi. + */ + public static final String ACCESS_COARSE_LOCATION="android.permission.ACCESS_COARSE_LOCATION"; + /** Allows the holder to access content providers from outside an ApplicationThread. + This permission is enforced by the ActivityManagerService on the corresponding APIs, + in particular ActivityManagerService#getContentProviderExternal(String) and + ActivityManagerService#removeContentProviderExternal(String). + @hide + + */ + public static final String ACCESS_CONTENT_PROVIDERS_EXTERNALLY="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"; + /** Allows an app to access precise location from location sources such + as GPS, cell towers, and Wi-Fi. + */ + public static final String ACCESS_FINE_LOCATION="android.permission.ACCESS_FINE_LOCATION"; + /** Allows access to keyguard secure storage. Only allowed for system processes. + @hide + */ + public static final String ACCESS_KEYGUARD_SECURE_STORAGE="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"; + /** Allows an application to access extra location provider commands + */ + public static final String ACCESS_LOCATION_EXTRA_COMMANDS="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"; + /** Allows an application to create mock location providers for testing + */ + public static final String ACCESS_MOCK_LOCATION="android.permission.ACCESS_MOCK_LOCATION"; + /** Allows an application to access the MTP USB kernel driver. + For use only by the device side MTP implementation. + @hide + */ + public static final String ACCESS_MTP="android.permission.ACCESS_MTP"; + /** Allows an application to listen for network condition observations. + @hide This is not a third-party API (intended for system apps). + */ + public static final String ACCESS_NETWORK_CONDITIONS="android.permission.ACCESS_NETWORK_CONDITIONS"; + /** Allows applications to access information about networks + */ + public static final String ACCESS_NETWORK_STATE="android.permission.ACCESS_NETWORK_STATE"; + /** Allows an application to read the current set of notifications, including + any metadata and intents attached. + @hide + */ + public static final String ACCESS_NOTIFICATIONS="android.permission.ACCESS_NOTIFICATIONS"; + /** Allows an application to use SurfaceFlinger's low level features. +

Not for use by third-party applications. + */ + public static final String ACCESS_SURFACE_FLINGER="android.permission.ACCESS_SURFACE_FLINGER"; + /** Allows applications to access information about Wi-Fi networks + */ + public static final String ACCESS_WIFI_STATE="android.permission.ACCESS_WIFI_STATE"; + /** @hide + */ + public static final String ACCESS_WIMAX_STATE="android.permission.ACCESS_WIMAX_STATE"; + /** Allows applications to call into AccountAuthenticators. +

Not for use by third-party applications. + */ + public static final String ACCOUNT_MANAGER="android.permission.ACCOUNT_MANAGER"; + /** Allows an application to add voicemails into the system. + */ + public static final String ADD_VOICEMAIL="com.android.voicemail.permission.ADD_VOICEMAIL"; + /** Allows an application to use any media decoder when decoding for playback + @hide + */ + public static final String ALLOW_ANY_CODEC_FOR_PLAYBACK="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"; + /** Allows access to ASEC non-destructive API calls + @hide + */ + public static final String ASEC_ACCESS="android.permission.ASEC_ACCESS"; + /** Allows creation of ASEC volumes + @hide + */ + public static final String ASEC_CREATE="android.permission.ASEC_CREATE"; + /** Allows destruction of ASEC volumes + @hide + */ + public static final String ASEC_DESTROY="android.permission.ASEC_DESTROY"; + /** Allows mount / unmount of ASEC volumes + @hide + */ + public static final String ASEC_MOUNT_UNMOUNT="android.permission.ASEC_MOUNT_UNMOUNT"; + /** Allows rename of ASEC volumes + @hide + */ + public static final String ASEC_RENAME="android.permission.ASEC_RENAME"; + /** Allows an application to act as an AccountAuthenticator for + the AccountManager + */ + public static final String AUTHENTICATE_ACCOUNTS="android.permission.AUTHENTICATE_ACCOUNTS"; + /** Allows an application to control the backup and restore process. +

Not for use by third-party applications. + @hide pending API council + */ + public static final String BACKUP="android.permission.BACKUP"; + /** Allows an application to collect battery statistics + */ + public static final String BATTERY_STATS="android.permission.BATTERY_STATS"; + /** Must be required by an {@link android.accessibilityservice.AccessibilityService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_ACCESSIBILITY_SERVICE="android.permission.BIND_ACCESSIBILITY_SERVICE"; + /** Allows an application to tell the AppWidget service which application + can access AppWidget's data. The normal user flow is that a user + picks an AppWidget to go into a particular host, thereby giving that + host application access to the private data from the AppWidget app. + An application that has this permission should honor that contract. +

Not for use by third-party applications. + */ + public static final String BIND_APPWIDGET="android.permission.BIND_APPWIDGET"; + /** Allows an application to request CallHandlerService implementations. + @hide + */ + public static final String BIND_CALL_SERVICE="android.permission.BIND_CALL_SERVICE"; + /** Must be required by device administration receiver, to ensure that only the + system can interact with it. + */ + public static final String BIND_DEVICE_ADMIN="android.permission.BIND_DEVICE_ADMIN"; + /** Allows an application to execute contacts directory search. + This should only be used by ContactsProvider. +

Not for use by third-party applications. + @hide + */ + public static final String BIND_DIRECTORY_SEARCH="android.permission.BIND_DIRECTORY_SEARCH"; + /** Must be required by an {@link android.inputmethodservice.InputMethodService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_INPUT_METHOD="android.permission.BIND_INPUT_METHOD"; + /** Private permission, to restrict who can bring up a dialog to add a new + keyguard widget + @hide + */ + public static final String BIND_KEYGUARD_APPWIDGET="android.permission.BIND_KEYGUARD_APPWIDGET"; + /** Must be required by a {@link android.nfc.cardemulation.HostApduService} + or {@link android.nfc.cardemulation.OffHostApduService} to ensure that only + the system can bind to it. + */ + public static final String BIND_NFC_SERVICE="android.permission.BIND_NFC_SERVICE"; + /** Must be required by an {@link + android.service.notification.NotificationListenerService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_NOTIFICATION_LISTENER_SERVICE="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"; + /** Must be required by package verifier receiver, to ensure that only the + system can interact with it. + @hide + + */ + public static final String BIND_PACKAGE_VERIFIER="android.permission.BIND_PACKAGE_VERIFIER"; + /** Must be required by a {@link android.printservice.PrintService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_PRINT_SERVICE="android.permission.BIND_PRINT_SERVICE"; + /** Must be required by the PrintSpooler to ensure that only the system can bind to it. + @hide + */ + public static final String BIND_PRINT_SPOOLER_SERVICE="android.permission.BIND_PRINT_SPOOLER_SERVICE"; + /** Must be required by a {@link android.widget.RemoteViewsService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_REMOTEVIEWS="android.permission.BIND_REMOTEVIEWS"; + /** Must be required by a {@link com.android.media.remotedisplay.RemoteDisplayProvider}, + to ensure that only the system can bind to it. + @hide + */ + public static final String BIND_REMOTE_DISPLAY="android.permission.BIND_REMOTE_DISPLAY"; + /** Must be required by a TextService (e.g. SpellCheckerService) + to ensure that only the system can bind to it. + */ + public static final String BIND_TEXT_SERVICE="android.permission.BIND_TEXT_SERVICE"; + /** Must be required by a {@link android.net.VpnService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_VPN_SERVICE="android.permission.BIND_VPN_SERVICE"; + /** Must be required by a {@link android.service.wallpaper.WallpaperService}, + to ensure that only the system can bind to it. + */ + public static final String BIND_WALLPAPER="android.permission.BIND_WALLPAPER"; + /** Allows applications to connect to paired bluetooth devices + */ + public static final String BLUETOOTH="android.permission.BLUETOOTH"; + /** Allows applications to discover and pair bluetooth devices + */ + public static final String BLUETOOTH_ADMIN="android.permission.BLUETOOTH_ADMIN"; + /** Allows applications to pair bluetooth devices without user interaction. + This is not available to third party applications. + */ + public static final String BLUETOOTH_PRIVILEGED="android.permission.BLUETOOTH_PRIVILEGED"; + /** Allows bluetooth stack to access files + @hide This should only be used by Bluetooth apk. + + */ + public static final String BLUETOOTH_STACK="android.permission.BLUETOOTH_STACK"; + /** Required to be able to disable the device (very dangerous!). +

Not for use by third-party applications.. + */ + public static final String BRICK="android.permission.BRICK"; + /** Allows an application to broadcast a notification that an application + package has been removed. +

Not for use by third-party applications. + */ + public static final String BROADCAST_PACKAGE_REMOVED="android.permission.BROADCAST_PACKAGE_REMOVED"; + /** Allows an application to broadcast an SMS receipt notification. +

Not for use by third-party applications. + */ + public static final String BROADCAST_SMS="android.permission.BROADCAST_SMS"; + /** Allows an application to broadcast sticky intents. These are + broadcasts whose data is held by the system after being finished, + so that clients can quickly retrieve that data without having + to wait for the next broadcast. + */ + public static final String BROADCAST_STICKY="android.permission.BROADCAST_STICKY"; + /** Allows an application to broadcast a WAP PUSH receipt notification. +

Not for use by third-party applications. + */ + public static final String BROADCAST_WAP_PUSH="android.permission.BROADCAST_WAP_PUSH"; + /** C2DM permission. + @hide Used internally. + + */ + public static final String C2D_MESSAGE="android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE"; + /** Allows an application to initiate a phone call without going through + the Dialer user interface for the user to confirm the call + being placed. + */ + public static final String CALL_PHONE="android.permission.CALL_PHONE"; + /** Allows an application to call any phone number, including emergency + numbers, without going through the Dialer user interface for the user + to confirm the call being placed. +

Not for use by third-party applications. + */ + public static final String CALL_PRIVILEGED="android.permission.CALL_PRIVILEGED"; + /** Required to be able to access the camera device. +

This will automatically enforce the {@code + <uses-feature>} manifest element for all camera features. + If you do not require all camera features or can properly operate if a camera + is not available, then you must modify your manifest as appropriate in order to + install on devices that don't support all camera features.

+ */ + public static final String CAMERA="android.permission.CAMERA"; + /** Allows disabling the transmit-indicator LED that is normally on when + a camera is in use by an application. + @hide + */ + public static final String CAMERA_DISABLE_TRANSMIT_LED="android.permission.CAMERA_DISABLE_TRANSMIT_LED"; + /** Allows an application to capture audio for hotword detection. +

Not for use by third-party applications.

+ @hide + */ + public static final String CAPTURE_AUDIO_HOTWORD="android.permission.CAPTURE_AUDIO_HOTWORD"; + /** Allows an application to capture audio output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_AUDIO_OUTPUT="android.permission.CAPTURE_AUDIO_OUTPUT"; + /** Allows an application to capture secure video output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_SECURE_VIDEO_OUTPUT="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT"; + /** Allows an application to capture video output. +

Not for use by third-party applications.

+ */ + public static final String CAPTURE_VIDEO_OUTPUT="android.permission.CAPTURE_VIDEO_OUTPUT"; + /** Allows applications to change the background data setting. +

Not for use by third-party applications. + @hide pending API council + */ + public static final String CHANGE_BACKGROUND_DATA_SETTING="android.permission.CHANGE_BACKGROUND_DATA_SETTING"; + /** Allows an application to change whether an application component (other than its own) is + enabled or not. +

Not for use by third-party applications. + */ + public static final String CHANGE_COMPONENT_ENABLED_STATE="android.permission.CHANGE_COMPONENT_ENABLED_STATE"; + /** Allows an application to modify the current configuration, such + as locale. + */ + public static final String CHANGE_CONFIGURATION="android.permission.CHANGE_CONFIGURATION"; + /** Allows applications to change network connectivity state + */ + public static final String CHANGE_NETWORK_STATE="android.permission.CHANGE_NETWORK_STATE"; + /** Allows applications to enter Wi-Fi Multicast mode + */ + public static final String CHANGE_WIFI_MULTICAST_STATE="android.permission.CHANGE_WIFI_MULTICAST_STATE"; + /** Allows applications to change Wi-Fi connectivity state + */ + public static final String CHANGE_WIFI_STATE="android.permission.CHANGE_WIFI_STATE"; + /** @hide + */ + public static final String CHANGE_WIMAX_STATE="android.permission.CHANGE_WIMAX_STATE"; + /** Allows an application to clear the caches of all installed + applications on the device. + */ + public static final String CLEAR_APP_CACHE="android.permission.CLEAR_APP_CACHE"; + /** Allows an application to clear user data. +

Not for use by third-party applications. + */ + public static final String CLEAR_APP_USER_DATA="android.permission.CLEAR_APP_USER_DATA"; + /** Allows an application to configure and connect to Wifi displays + @hide + */ + public static final String CONFIGURE_WIFI_DISPLAY="android.permission.CONFIGURE_WIFI_DISPLAY"; + /** Allows a package to launch the secure full-backup confirmation UI. + ONLY the system process may hold this permission. + @hide + */ + public static final String CONFIRM_FULL_BACKUP="android.permission.CONFIRM_FULL_BACKUP"; + /** Allows an internal user to use privileged ConnectivityManager APIs. + @hide + */ + public static final String CONNECTIVITY_INTERNAL="android.permission.CONNECTIVITY_INTERNAL"; + /** Allows an application to control keyguard. Only allowed for system processes. + @hide + */ + public static final String CONTROL_KEYGUARD="android.permission.CONTROL_KEYGUARD"; + /** Allows enabling/disabling location update notifications from + the radio. +

Not for use by third-party applications. + */ + public static final String CONTROL_LOCATION_UPDATES="android.permission.CONTROL_LOCATION_UPDATES"; + /** Allows an application to control low-level features of Wifi displays + such as opening an RTSP socket. This permission should only be used + by the display manager. + @hide + */ + public static final String CONTROL_WIFI_DISPLAY="android.permission.CONTROL_WIFI_DISPLAY"; + /** Must be required by default container service so that only + the system can bind to it and use it to copy + protected data to secure containers or files + accessible to the system. + @hide + */ + public static final String COPY_PROTECTED_DATA="android.permission.COPY_PROTECTED_DATA"; + /** Internal permission protecting access to the encryption methods + @hide + + */ + public static final String CRYPT_KEEPER="android.permission.CRYPT_KEEPER"; + /** Allows an application to delete cache files. +

Not for use by third-party applications. + */ + public static final String DELETE_CACHE_FILES="android.permission.DELETE_CACHE_FILES"; + /** Allows an application to delete packages. +

Not for use by third-party applications. + */ + public static final String DELETE_PACKAGES="android.permission.DELETE_PACKAGES"; + /** Allows low-level access to power management. +

Not for use by third-party applications. + */ + public static final String DEVICE_POWER="android.permission.DEVICE_POWER"; + /** Allows applications to RW to diagnostic resources. +

Not for use by third-party applications. + */ + public static final String DIAGNOSTIC="android.permission.DIAGNOSTIC"; + /** Allows applications to disable the keyguard + */ + public static final String DISABLE_KEYGUARD="android.permission.DISABLE_KEYGUARD"; + /** Allows an application to retrieve state dump information from system services. +

Not for use by third-party applications. + */ + public static final String DUMP="android.permission.DUMP"; + /** Allows an application to expand or collapse the status bar. + */ + public static final String EXPAND_STATUS_BAR="android.permission.EXPAND_STATUS_BAR"; + /** Run as a manufacturer test application, running as the root user. + Only available when the device is running in manufacturer test mode. +

Not for use by third-party applications. + */ + public static final String FACTORY_TEST="android.permission.FACTORY_TEST"; + /** @hide Allows an application to register an input filter which filters the stream + of user events (keys, touch, trackball) before they are dispatched to any window. + */ + public static final String FILTER_EVENTS="android.permission.FILTER_EVENTS"; + /** Allows access to the flashlight + */ + public static final String FLASHLIGHT="android.permission.FLASHLIGHT"; + /** Allows an application to force a BACK operation on whatever is the + top activity. +

Not for use by third-party applications. + */ + public static final String FORCE_BACK="android.permission.FORCE_BACK"; + /** Allows an application to call + {@link android.app.ActivityManager#forceStopPackage}. + @hide + */ + public static final String FORCE_STOP_PACKAGES="android.permission.FORCE_STOP_PACKAGES"; + /** @hide Allows the application to temporarily freeze the screen for a + full-screen transition. + */ + public static final String FREEZE_SCREEN="android.permission.FREEZE_SCREEN"; + /** Allows access to the list of accounts in the Accounts Service + */ + public static final String GET_ACCOUNTS="android.permission.GET_ACCOUNTS"; + /** @hide Allows an application to collect battery statistics + */ + public static final String GET_APP_OPS_STATS="android.permission.GET_APP_OPS_STATS"; + /** Allows an application to get full detailed information about + recently running tasks, with full fidelity to the real state. + @hide + */ + public static final String GET_DETAILED_TASKS="android.permission.GET_DETAILED_TASKS"; + /** Allows an application to find out the space used by any package. + */ + public static final String GET_PACKAGE_SIZE="android.permission.GET_PACKAGE_SIZE"; + /** Allows an application to get information about the currently + or recently running tasks. + */ + public static final String GET_TASKS="android.permission.GET_TASKS"; + /** Allows an application to retrieve private information about + the current top activity, such as any assist context it can provide. +

Not for use by third-party applications. + */ + public static final String GET_TOP_ACTIVITY_INFO="android.permission.GET_TOP_ACTIVITY_INFO"; + /** This permission can be used on content providers to allow the global + search system to access their data. Typically it used when the + provider has some permissions protecting it (which global search + would not be expected to hold), and added as a read-only permission + to the path in the provider where global search queries are + performed. This permission can not be held by regular applications; + it is used by applications to protect themselves from everyone else + besides global search. + */ + public static final String GLOBAL_SEARCH="android.permission.GLOBAL_SEARCH"; + /** Internal permission protecting access to the global search + system: ensures that only the system can access the provider + to perform queries (since this otherwise provides unrestricted + access to a variety of content providers), and to write the + search statistics (to keep applications from gaming the source + ranking). + @hide + */ + public static final String GLOBAL_SEARCH_CONTROL="android.permission.GLOBAL_SEARCH_CONTROL"; + /** @hide Allows an application to grant or revoke specific permissions. + */ + public static final String GRANT_REVOKE_PERMISSIONS="android.permission.GRANT_REVOKE_PERMISSIONS"; + /** Allows access to hardware peripherals. Intended only for hardware testing. +

Not for use by third-party applications. + */ + public static final String HARDWARE_TEST="android.permission.HARDWARE_TEST"; + /** Allows an application to inject user events (keys, touch, trackball) + into the event stream and deliver them to ANY window. Without this + permission, you can only deliver events to windows in your own process. +

Not for use by third-party applications. + */ + public static final String INJECT_EVENTS="android.permission.INJECT_EVENTS"; + /** Allows an application to install a location provider into the Location Manager. +

Not for use by third-party applications. + */ + public static final String INSTALL_LOCATION_PROVIDER="android.permission.INSTALL_LOCATION_PROVIDER"; + /** Allows an application to install packages. +

Not for use by third-party applications. + */ + public static final String INSTALL_PACKAGES="android.permission.INSTALL_PACKAGES"; + /** Allows an application to install a shortcut in Launcher + */ + public static final String INSTALL_SHORTCUT="com.android.launcher.permission.INSTALL_SHORTCUT"; + /** @hide Allows an application to call APIs that allow it to do interactions + across the users on the device, using singleton services and + user-targeted broadcasts. This permission is not available to + third party applications. + */ + public static final String INTERACT_ACROSS_USERS="android.permission.INTERACT_ACROSS_USERS"; + /** @hide Fuller form of {@link android.Manifest.permission#INTERACT_ACROSS_USERS} + that removes restrictions on where broadcasts can be sent and allows other + types of interactions. + */ + public static final String INTERACT_ACROSS_USERS_FULL="android.permission.INTERACT_ACROSS_USERS_FULL"; + /** Allows an application to open windows that are for use by parts + of the system user interface. +

Not for use by third-party applications. + */ + public static final String INTERNAL_SYSTEM_WINDOW="android.permission.INTERNAL_SYSTEM_WINDOW"; + /** Allows applications to open network sockets. + */ + public static final String INTERNET="android.permission.INTERNET"; + /** Allows an application to call into a carrier setup flow. It is up to the + carrier setup application to enforce that this permission is required + @hide This is not a third-party API (intended for OEMs and system apps). + */ + public static final String INVOKE_CARRIER_SETUP="android.permission.INVOKE_CARRIER_SETUP"; + /** Allows an application to call + {@link android.app.ActivityManager#killBackgroundProcesses}. + */ + public static final String KILL_BACKGROUND_PROCESSES="android.permission.KILL_BACKGROUND_PROCESSES"; + /** Allows an application to use location features in hardware, + such as the geofencing api. +

Not for use by third-party applications. + */ + public static final String LOCATION_HARDWARE="android.permission.LOCATION_HARDWARE"; + /** Allows access to the loop radio (Android@Home mesh network) device. + @hide + */ + public static final String LOOP_RADIO="android.permission.LOOP_RADIO"; + /** @hide Allows an application to magnify the content of a display. + */ + public static final String MAGNIFY_DISPLAY="android.permission.MAGNIFY_DISPLAY"; + /** Allows an application to manage the list of accounts in the AccountManager + */ + public static final String MANAGE_ACCOUNTS="android.permission.MANAGE_ACCOUNTS"; + /** @hide Allows an application to create/manage/remove stacks + */ + public static final String MANAGE_ACTIVITY_STACKS="android.permission.MANAGE_ACTIVITY_STACKS"; + /** Allows an application to manage (create, destroy, + Z-order) application tokens in the window manager. +

Not for use by third-party applications. + */ + public static final String MANAGE_APP_TOKENS="android.permission.MANAGE_APP_TOKENS"; + /** Allows an application to install and/or uninstall CA certificates on + behalf of the user. + @hide + */ + public static final String MANAGE_CA_CERTIFICATES="android.permission.MANAGE_CA_CERTIFICATES"; + /** Required to add or remove another application as a device admin. +

Not for use by third-party applications. + @hide + */ + public static final String MANAGE_DEVICE_ADMINS="android.permission.MANAGE_DEVICE_ADMINS"; + /** Allows an application to manage access to documents, usually as part + of a document picker. + */ + public static final String MANAGE_DOCUMENTS="android.permission.MANAGE_DOCUMENTS"; + /** Allows an application to manage network policies (such as warning and disable + limits) and to define application-specific rules. @hide + */ + public static final String MANAGE_NETWORK_POLICY="android.permission.MANAGE_NETWORK_POLICY"; + /** Allows an application to manage preferences and permissions for USB devices + @hide + */ + public static final String MANAGE_USB="android.permission.MANAGE_USB"; + /** @hide Allows an application to call APIs that allow it to query and manage + users on the device. This permission is not available to + third party applications. + */ + public static final String MANAGE_USERS="android.permission.MANAGE_USERS"; + /** Allows an application to mark traffic as from another user for per user routing. + Used by system wide services like media server that execute delegated network connections + for users. + @hide + + */ + public static final String MARK_NETWORK_SOCKET="android.permission.MARK_NETWORK_SOCKET"; + /** Not for use by third-party applications. + */ + public static final String MASTER_CLEAR="android.permission.MASTER_CLEAR"; + /** Allows an application to know what content is playing and control its playback. +

Not for use by third-party applications due to privacy of media consumption

+ */ + public static final String MEDIA_CONTENT_CONTROL="android.permission.MEDIA_CONTENT_CONTROL"; + /** Internal permission allowing an application to query/set which + applications can bind AppWidgets. + @hide + */ + public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"; + /** Allows an application to modify global audio settings + */ + public static final String MODIFY_AUDIO_SETTINGS="android.permission.MODIFY_AUDIO_SETTINGS"; + /** Allows an application to account its network traffic against other UIDs. Used + by system services like download manager and media server. Not for use by + third party apps. @hide + */ + public static final String MODIFY_NETWORK_ACCOUNTING="android.permission.MODIFY_NETWORK_ACCOUNTING"; + /** Allows modification of the telephony state - power on, mmi, etc. + Does not include placing calls. +

Not for use by third-party applications. + */ + public static final String MODIFY_PHONE_STATE="android.permission.MODIFY_PHONE_STATE"; + /** Allows formatting file systems for removable storage. +

Not for use by third-party applications. + */ + public static final String MOUNT_FORMAT_FILESYSTEMS="android.permission.MOUNT_FORMAT_FILESYSTEMS"; + /** Allows mounting and unmounting file systems for removable storage. +

Not for use by third-party applications. + */ + public static final String MOUNT_UNMOUNT_FILESYSTEMS="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"; + /** Allows an application to move location of installed package. + @hide + */ + public static final String MOVE_PACKAGE="android.permission.MOVE_PACKAGE"; + /** Allows access to configure network interfaces, configure/use IPSec, etc. + @hide + */ + public static final String NET_ADMIN="android.permission.NET_ADMIN"; + /** @hide Allows low-level access to tun tap driver + */ + public static final String NET_TUNNELING="android.permission.NET_TUNNELING"; + /** Allows applications to perform I/O operations over NFC + */ + public static final String NFC="android.permission.NFC"; + /** Allows an application to collect component usage + statistics @hide + */ + public static final String PACKAGE_USAGE_STATS="android.permission.PACKAGE_USAGE_STATS"; + /** @hide Package verifier needs to have this permission before the PackageManager will + trust it to verify packages. + + */ + public static final String PACKAGE_VERIFICATION_AGENT="android.permission.PACKAGE_VERIFICATION_AGENT"; + /** Allows an application to perform CDMA OTA provisioning @hide + */ + public static final String PERFORM_CDMA_PROVISIONING="android.permission.PERFORM_CDMA_PROVISIONING"; + /** @deprecated This functionality will be removed in the future; please do + not use. Allow an application to make its activities persistent. + */ + @Deprecated + public static final String PERSISTENT_ACTIVITY="android.permission.PERSISTENT_ACTIVITY"; + /** Allows an application to see the number being dialed during an outgoing + call with the option to redirect the call to a different number or + abort the call altogether. + */ + public static final String PROCESS_OUTGOING_CALLS="android.permission.PROCESS_OUTGOING_CALLS"; + /** Allows an application to read the user's calendar data. + */ + public static final String READ_CALENDAR="android.permission.READ_CALENDAR"; + /** Allows an application to read the user's call log. +

Note: If your app uses the + {@link #READ_CONTACTS} permission and both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 15 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 16 or higher.

+ */ + public static final String READ_CALL_LOG="android.permission.READ_CALL_LOG"; + /** Allows an application to read previously received cell broadcast + messages and to register a content observer to get notifications when + a cell broadcast has been received and added to the database. For + emergency alerts, the database is updated immediately after the + alert dialog and notification sound/vibration/speech are presented. + The "read" column is then updated after the user dismisses the alert. + This enables supplementary emergency assistance apps to start loading + additional emergency information (if Internet access is available) + when the alert is first received, and to delay presenting the info + to the user until after the initial alert dialog is dismissed. + @hide Pending API council approval + */ + public static final String READ_CELL_BROADCASTS="android.permission.READ_CELL_BROADCASTS"; + /** Allows an application to read the user's contacts data. + */ + public static final String READ_CONTACTS="android.permission.READ_CONTACTS"; + /** Allows applications to read dream settings and dream state. + @hide + */ + public static final String READ_DREAM_STATE="android.permission.READ_DREAM_STATE"; + /** Allows an application to read from external storage. +

Any app that declares the {@link #WRITE_EXTERNAL_STORAGE} permission is implicitly + granted this permission.

+

This permission is enforced starting in API level 19. Before API level 19, this + permission is not enforced and all apps still have access to read from external storage. + You can test your app with the permission enforced by enabling Protect USB + storage under Developer options in the Settings app on a device running Android 4.1 or + higher.

+

Also starting in API level 19, this permission is not required to + read/write files in your application-specific directories returned by + {@link android.content.Context#getExternalFilesDir} and + {@link android.content.Context#getExternalCacheDir}. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. + */ + public static final String READ_EXTERNAL_STORAGE="android.permission.READ_EXTERNAL_STORAGE"; + /** Allows an application to take screen shots and more generally + get access to the frame buffer data. +

Not for use by third-party applications. + */ + public static final String READ_FRAME_BUFFER="android.permission.READ_FRAME_BUFFER"; + /** Allows an application to read (but not write) the user's + browsing history and bookmarks. + */ + public static final String READ_HISTORY_BOOKMARKS="com.android.browser.permission.READ_HISTORY_BOOKMARKS"; + /** Allows an application to retrieve the current state of keys and + switches. +

Not for use by third-party applications. + @deprecated The API that used this permission has been removed. + */ + @Deprecated + public static final String READ_INPUT_STATE="android.permission.READ_INPUT_STATE"; + /** Allows an application to read the low-level system log files. +

Not for use by third-party applications, because + Log entries can contain the user's private information. + */ + public static final String READ_LOGS="android.permission.READ_LOGS"; + /** Allows an application to read historical network usage for + specific networks and applications. @hide + */ + public static final String READ_NETWORK_USAGE_HISTORY="android.permission.READ_NETWORK_USAGE_HISTORY"; + /** Allows read only access to phone state. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. + */ + public static final String READ_PHONE_STATE="android.permission.READ_PHONE_STATE"; + /** Allows read access to privileged phone state. + @hide Used internally. + */ + public static final String READ_PRIVILEGED_PHONE_STATE="android.permission.READ_PRIVILEGED_PHONE_STATE"; + /** Allows an application to read the user's personal profile data. + */ + public static final String READ_PROFILE="android.permission.READ_PROFILE"; + /** Allows an application to read SMS messages. + */ + public static final String READ_SMS="android.permission.READ_SMS"; + /** Allows an application to read from the user's social stream. + */ + public static final String READ_SOCIAL_STREAM="android.permission.READ_SOCIAL_STREAM"; + /** Allows applications to read the sync settings + */ + public static final String READ_SYNC_SETTINGS="android.permission.READ_SYNC_SETTINGS"; + /** Allows applications to read the sync stats + */ + public static final String READ_SYNC_STATS="android.permission.READ_SYNC_STATS"; + /** Allows an application to read the user dictionary. This should + really only be required by an IME, or a dictionary editor like + the Settings app. + */ + public static final String READ_USER_DICTIONARY="android.permission.READ_USER_DICTIONARY"; + /** Required to be able to reboot the device. +

Not for use by third-party applications. + */ + public static final String REBOOT="android.permission.REBOOT"; + /** Allows an application to receive the + {@link android.content.Intent#ACTION_BOOT_COMPLETED} that is + broadcast after the system finishes booting. If you don't + request this permission, you will not receive the broadcast at + that time. Though holding this permission does not have any + security implications, it can have a negative impact on the + user experience by increasing the amount of time it takes the + system to start and allowing applications to have themselves + running without the user being aware of them. As such, you must + explicitly declare your use of this facility to make that visible + to the user. + */ + public static final String RECEIVE_BOOT_COMPLETED="android.permission.RECEIVE_BOOT_COMPLETED"; + /** @hide + */ + public static final String RECEIVE_DATA_ACTIVITY_CHANGE="android.permission.RECEIVE_DATA_ACTIVITY_CHANGE"; + /** Allows an application to receive emergency cell broadcast messages, + to record or display them to the user. +

Not for use by third-party applications. + @hide Pending API council approval + */ + public static final String RECEIVE_EMERGENCY_BROADCAST="android.permission.RECEIVE_EMERGENCY_BROADCAST"; + /** Allows an application to monitor incoming MMS messages, to record + or perform processing on them. + */ + public static final String RECEIVE_MMS="android.permission.RECEIVE_MMS"; + /** Allows an application to monitor incoming SMS messages, to record + or perform processing on them. + */ + public static final String RECEIVE_SMS="android.permission.RECEIVE_SMS"; + /** Allows an application to monitor incoming WAP push messages. + */ + public static final String RECEIVE_WAP_PUSH="android.permission.RECEIVE_WAP_PUSH"; + /** Allows an application to record audio + */ + public static final String RECORD_AUDIO="android.permission.RECORD_AUDIO"; + /** Allows registration for remote audio playback. @hide + */ + public static final String REMOTE_AUDIO_PLAYBACK="android.permission.REMOTE_AUDIO_PLAYBACK"; + /** @hide Allows an application to change to remove/kill tasks + */ + public static final String REMOVE_TASKS="android.permission.REMOVE_TASKS"; + /** Allows an application to change the Z-order of tasks + */ + public static final String REORDER_TASKS="android.permission.REORDER_TASKS"; + /** @deprecated The {@link android.app.ActivityManager#restartPackage} + API is no longer supported. + */ + @Deprecated + public static final String RESTART_PACKAGES="android.permission.RESTART_PACKAGES"; + /** @hide Allows an application to retrieve the content of the active window + An active window is the window that has fired an accessibility event. + */ + public static final String RETRIEVE_WINDOW_CONTENT="android.permission.RETRIEVE_WINDOW_CONTENT"; + /** @hide Allows an application to retrieve info for a window from the window manager. + */ + public static final String RETRIEVE_WINDOW_INFO="android.permission.RETRIEVE_WINDOW_INFO"; + /** Allows an application (Phone) to send a request to other applications + to handle the respond-via-message action during incoming calls. +

Not for use by third-party applications. + */ + public static final String SEND_RESPOND_VIA_MESSAGE="android.permission.SEND_RESPOND_VIA_MESSAGE"; + /** Allows an application to send SMS messages. + */ + public static final String SEND_SMS="android.permission.SEND_SMS"; + /** Allows applications to access serial ports via the SerialManager. + @hide + */ + public static final String SERIAL_PORT="android.permission.SERIAL_PORT"; + /** Allows an application to watch and control how activities are + started globally in the system. Only for is in debugging + (usually the monkey command). +

Not for use by third-party applications. + */ + public static final String SET_ACTIVITY_WATCHER="android.permission.SET_ACTIVITY_WATCHER"; + /** Allows an application to broadcast an Intent to set an alarm for the + user. + */ + public static final String SET_ALARM="com.android.alarm.permission.SET_ALARM"; + /** Allows an application to control whether activities are immediately + finished when put in the background. +

Not for use by third-party applications. + */ + public static final String SET_ALWAYS_FINISH="android.permission.SET_ALWAYS_FINISH"; + /** Modify the global animation scaling factor. +

Not for use by third-party applications. + */ + public static final String SET_ANIMATION_SCALE="android.permission.SET_ANIMATION_SCALE"; + /** Configure an application for debugging. +

Not for use by third-party applications. + */ + public static final String SET_DEBUG_APP="android.permission.SET_DEBUG_APP"; + /** Allows low-level access to setting the keyboard layout. +

Not for use by third-party applications. + @hide + */ + public static final String SET_KEYBOARD_LAYOUT="android.permission.SET_KEYBOARD_LAYOUT"; + /** Allows low-level access to setting the orientation (actually + rotation) of the screen. +

Not for use by third-party applications. + */ + public static final String SET_ORIENTATION="android.permission.SET_ORIENTATION"; + /** Allows low-level access to setting the pointer speed. +

Not for use by third-party applications. + */ + public static final String SET_POINTER_SPEED="android.permission.SET_POINTER_SPEED"; + /** @deprecated No longer useful, see + {@link android.content.pm.PackageManager#addPackageToPreferred} + for details. + */ + @Deprecated + public static final String SET_PREFERRED_APPLICATIONS="android.permission.SET_PREFERRED_APPLICATIONS"; + /** Allows an application to set the maximum number of (not needed) + application processes that can be running. +

Not for use by third-party applications. + */ + public static final String SET_PROCESS_LIMIT="android.permission.SET_PROCESS_LIMIT"; + /** @hide Change the screen compatibility mode of applications + */ + public static final String SET_SCREEN_COMPATIBILITY="android.permission.SET_SCREEN_COMPATIBILITY"; + /** Allows applications to set the system time. +

Not for use by third-party applications. + */ + public static final String SET_TIME="android.permission.SET_TIME"; + /** Allows applications to set the system time zone + */ + public static final String SET_TIME_ZONE="android.permission.SET_TIME_ZONE"; + /** Allows applications to set the wallpaper + */ + public static final String SET_WALLPAPER="android.permission.SET_WALLPAPER"; + /** Allows applications to set a live wallpaper. + @hide XXX Change to signature once the picker is moved to its + own apk as Ghod Intended. + */ + public static final String SET_WALLPAPER_COMPONENT="android.permission.SET_WALLPAPER_COMPONENT"; + /** Allows applications to set the wallpaper hints + */ + public static final String SET_WALLPAPER_HINTS="android.permission.SET_WALLPAPER_HINTS"; + /** Allows an application to call the activity manager shutdown() API + to put the higher-level system there into a shutdown state. + @hide + */ + public static final String SHUTDOWN="android.permission.SHUTDOWN"; + /** Allow an application to request that a signal be sent to all persistent processes. +

Not for use by third-party applications. + */ + public static final String SIGNAL_PERSISTENT_PROCESSES="android.permission.SIGNAL_PERSISTENT_PROCESSES"; + /** Allows an application to start any activity, regardless of permission + protection or exported state. @hide + */ + public static final String START_ANY_ACTIVITY="android.permission.START_ANY_ACTIVITY"; + /** Allows an application to open, close, or disable the status bar + and its icons. +

Not for use by third-party applications. + */ + public static final String STATUS_BAR="android.permission.STATUS_BAR"; + /** Allows an application to be the status bar. Currently used only by SystemUI.apk + @hide + */ + public static final String STATUS_BAR_SERVICE="android.permission.STATUS_BAR_SERVICE"; + /** Allows an application to tell the activity manager to temporarily + stop application switches, putting it into a special mode that + prevents applications from immediately switching away from some + critical UI such as the home screen. + @hide + */ + public static final String STOP_APP_SWITCHES="android.permission.STOP_APP_SWITCHES"; + /** Allows an application to allow access the subscribed feeds + ContentProvider. + */ + public static final String SUBSCRIBED_FEEDS_READ="android.permission.SUBSCRIBED_FEEDS_READ"; + public static final String SUBSCRIBED_FEEDS_WRITE="android.permission.SUBSCRIBED_FEEDS_WRITE"; + /** Allows an application to open windows using the type + {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT}, + shown on top of all other applications. Very few applications + should use this permission; these windows are intended for + system-level interaction with the user. + */ + public static final String SYSTEM_ALERT_WINDOW="android.permission.SYSTEM_ALERT_WINDOW"; + /** @hide Allows an application to temporary enable accessibility on the device. + */ + public static final String TEMPORARY_ENABLE_ACCESSIBILITY="android.permission.TEMPORARY_ENABLE_ACCESSIBILITY"; + /** Allows using the device's IR transmitter, if available + */ + public static final String TRANSMIT_IR="android.permission.TRANSMIT_IR"; + /** Allows an application to uninstall a shortcut in Launcher + */ + public static final String UNINSTALL_SHORTCUT="com.android.launcher.permission.UNINSTALL_SHORTCUT"; + /** Allows an application to update application operation statistics. Not for + use by third party apps. @hide + */ + public static final String UPDATE_APP_OPS_STATS="android.permission.UPDATE_APP_OPS_STATS"; + /** Allows an application to update device statistics. +

Not for use by third-party applications. + */ + public static final String UPDATE_DEVICE_STATS="android.permission.UPDATE_DEVICE_STATS"; + /** Allows an application to hold an UpdateLock, recommending that a headless + OTA reboot *not* occur while the lock is held. + @hide + */ + public static final String UPDATE_LOCK="android.permission.UPDATE_LOCK"; + /** Allows an application to request authtokens from the AccountManager + */ + public static final String USE_CREDENTIALS="android.permission.USE_CREDENTIALS"; + /** Allows an application to use SIP service + */ + public static final String USE_SIP="android.permission.USE_SIP"; + /** Allows access to the vibrator + */ + public static final String VIBRATE="android.permission.VIBRATE"; + /** Allows using PowerManager WakeLocks to keep processor from sleeping or screen + from dimming + */ + public static final String WAKE_LOCK="android.permission.WAKE_LOCK"; + /** Allows applications to write the apn settings. +

Not for use by third-party applications. + */ + public static final String WRITE_APN_SETTINGS="android.permission.WRITE_APN_SETTINGS"; + /** Allows an application to write (but not read) the user's + calendar data. + */ + public static final String WRITE_CALENDAR="android.permission.WRITE_CALENDAR"; + /** Allows an application to write (but not read) the user's + contacts data. +

Note: If your app uses the + {@link #WRITE_CONTACTS} permission and both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 15 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 16 or higher.

+ */ + public static final String WRITE_CALL_LOG="android.permission.WRITE_CALL_LOG"; + /** Allows an application to write (but not read) the user's + contacts data. + */ + public static final String WRITE_CONTACTS="android.permission.WRITE_CONTACTS"; + /** Allows applications to write dream settings, and start or stop dreaming. + @hide + */ + public static final String WRITE_DREAM_STATE="android.permission.WRITE_DREAM_STATE"; + /** Allows an application to write to external storage. +

Note: If both your {@code + minSdkVersion} and {@code + targetSdkVersion} values are set to 3 or lower, the system implicitly + grants your app this permission. If you don't need this permission, be sure your {@code + targetSdkVersion} is 4 or higher. +

Starting in API level 19, this permission is not required to + read/write files in your application-specific directories returned by + {@link android.content.Context#getExternalFilesDir} and + {@link android.content.Context#getExternalCacheDir}. + */ + public static final String WRITE_EXTERNAL_STORAGE="android.permission.WRITE_EXTERNAL_STORAGE"; + /** Allows an application to modify the Google service map. +

Not for use by third-party applications. + */ + public static final String WRITE_GSERVICES="android.permission.WRITE_GSERVICES"; + /** Allows an application to write (but not read) the user's + browsing history and bookmarks. + */ + public static final String WRITE_HISTORY_BOOKMARKS="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"; + /** Allows an application to write to internal media storage + @hide + */ + public static final String WRITE_MEDIA_STORAGE="android.permission.WRITE_MEDIA_STORAGE"; + /** Allows an application to write (but not read) the user's + personal profile data. + */ + public static final String WRITE_PROFILE="android.permission.WRITE_PROFILE"; + /** Allows an application to read or write the secure system settings. +

Not for use by third-party applications. + */ + public static final String WRITE_SECURE_SETTINGS="android.permission.WRITE_SECURE_SETTINGS"; + /** Allows an application to read or write the system settings. + */ + public static final String WRITE_SETTINGS="android.permission.WRITE_SETTINGS"; + /** Allows an application to write SMS messages. + */ + public static final String WRITE_SMS="android.permission.WRITE_SMS"; + /** Allows an application to write (but not read) the user's + social stream data. + */ + public static final String WRITE_SOCIAL_STREAM="android.permission.WRITE_SOCIAL_STREAM"; + /** Allows applications to write the sync settings + */ + public static final String WRITE_SYNC_SETTINGS="android.permission.WRITE_SYNC_SETTINGS"; + /** Allows an application to write to the user dictionary. + */ + public static final String WRITE_USER_DICTIONARY="android.permission.WRITE_USER_DICTIONARY"; + } + public static final class permission_group { + /** Used for permissions that allow requesting certain accessibility features. + */ + public static final String ACCESSIBILITY_FEATURES="android.permission-group.ACCESSIBILITY_FEATURES"; + /** Permissions for direct access to the accounts managed + by the Account Manager. + */ + public static final String ACCOUNTS="android.permission-group.ACCOUNTS"; + /** Used for permissions that provide direct access to the hardware on + the device that has an effect on battery life. This includes vibrator, + flashlight, etc. + */ + public static final String AFFECTS_BATTERY="android.permission-group.AFFECTS_BATTERY"; + /** Group of permissions that are related to the other applications + installed on the system. Examples include such as listing + running apps, or killing background processes. + */ + public static final String APP_INFO="android.permission-group.APP_INFO"; + /** Used for permissions that provide direct access to speaker settings + the device. + */ + public static final String AUDIO_SETTINGS="android.permission-group.AUDIO_SETTINGS"; + /** Used for permissions that provide access to other devices through Bluetooth. + */ + public static final String BLUETOOTH_NETWORK="android.permission-group.BLUETOOTH_NETWORK"; + /** Used for permissions that provide access to the user + bookmarks and browser history. + */ + public static final String BOOKMARKS="android.permission-group.BOOKMARKS"; + /** Used for permissions that provide access to the device + calendar to create / view events. + */ + public static final String CALENDAR="android.permission-group.CALENDAR"; + /** Used for permissions that are associated with accessing + camera or capturing images/video from the device. + */ + public static final String CAMERA="android.permission-group.CAMERA"; + /** Used for permissions that can be used to make the user spend money + without their direct involvement. + */ + public static final String COST_MONEY="android.permission-group.COST_MONEY"; + /** Group of permissions that are related to development features. These + are not permissions that should appear in third-party applications; they + protect APIs that are intended only to be used for development + purposes. + */ + public static final String DEVELOPMENT_TOOLS="android.permission-group.DEVELOPMENT_TOOLS"; + /** Used for permissions that provide access to the user voicemail box. + */ + public static final String DEVICE_ALARMS="android.permission-group.DEVICE_ALARMS"; + /** Group of permissions that allow manipulation of how + another application displays UI to the user. + */ + public static final String DISPLAY="android.permission-group.DISPLAY"; + /** Used for permissions that provide direct access to the hardware on + the device. This includes audio, the camera, vibrator, etc. + */ + public static final String HARDWARE_CONTROLS="android.permission-group.HARDWARE_CONTROLS"; + /** Used for permissions that allow access to the user's current + location. + */ + public static final String LOCATION="android.permission-group.LOCATION"; + /** Used for permissions that allow an application to send messages + on behalf of the user or intercept messages being received by the + user. This is primarily intended for SMS/MMS messaging, such as + receiving or reading an MMS. + */ + public static final String MESSAGES="android.permission-group.MESSAGES"; + /** Used for permissions that are associated with accessing + microphone audio from the device. Note that phone calls also capture audio + but are in a separate (more visible) permission group. + */ + public static final String MICROPHONE="android.permission-group.MICROPHONE"; + /** Used for permissions that provide access to networking services. The + main permission here is internet access, but this is also an + appropriate group for accessing or modifying any network configuration + or other related network operations. + */ + public static final String NETWORK="android.permission-group.NETWORK"; + /** Used for permissions that provide access to information about the device + user such as profile information. This includes both reading and + writing of this data (which should generally be expressed as two + distinct permissions). + */ + public static final String PERSONAL_INFO="android.permission-group.PERSONAL_INFO"; + /** Used for permissions that are associated with accessing and modifyign + telephony state: placing calls, intercepting outgoing calls, reading + and modifying the phone state. + */ + public static final String PHONE_CALLS="android.permission-group.PHONE_CALLS"; + /** Group of permissions that are related to the screenlock. + */ + public static final String SCREENLOCK="android.permission-group.SCREENLOCK"; + /** Used for permissions that provide access to the user's social connections, + such as contacts, call logs, social stream, etc. This includes + both reading and writing of this data (which should generally be + expressed as two distinct permissions). + */ + public static final String SOCIAL_INFO="android.permission-group.SOCIAL_INFO"; + /** Used for permissions that change the status bar + */ + public static final String STATUS_BAR="android.permission-group.STATUS_BAR"; + /** Group of permissions that are related to SD card access. + */ + public static final String STORAGE="android.permission-group.STORAGE"; + /** Used for permissions that access the sync settings or sync + related information. + */ + public static final String SYNC_SETTINGS="android.permission-group.SYNC_SETTINGS"; + /** Group of permissions that are related to system clock. + */ + public static final String SYSTEM_CLOCK="android.permission-group.SYSTEM_CLOCK"; + /** Group of permissions that are related to system APIs. Many + of these are not permissions the user will be expected to understand, + and such permissions should generally be marked as "normal" protection + level so they don't get displayed. This can also, however, be used + for miscellaneous features that provide access to the operating system, + such as writing the global system settings. + */ + public static final String SYSTEM_TOOLS="android.permission-group.SYSTEM_TOOLS"; + /** Used for permissions that provide access to the user + calendar to create / view events. + */ + public static final String USER_DICTIONARY="android.permission-group.USER_DICTIONARY"; + /** Used for permissions that provide access to the user voicemail box. + */ + public static final String VOICEMAIL="android.permission-group.VOICEMAIL"; + /** Group of permissions that allow manipulation of how + another application displays UI to the user. + */ + public static final String WALLPAPER="android.permission-group.WALLPAPER"; + /** Used for permissions that provide access to the user + calendar to create / view events. + */ + public static final String WRITE_USER_DICTIONARY="android.permission-group.WRITE_USER_DICTIONARY"; + } +} diff --git a/src/api-impl/com/android/internal/R.java b/src/api-impl/com/android/internal/R.java new file mode 100644 index 00000000..3941a8cf --- /dev/null +++ b/src/api-impl/com/android/internal/R.java @@ -0,0 +1,53534 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.android.internal; + +public final class R { + public static final class anim { + public static final int accelerate_decelerate_interpolator=0x010a0004; + /** Acceleration curve matching Flash's quadratic ease out function. + */ + public static final int accelerate_interpolator=0x010a0005; + public static final int anticipate_interpolator=0x010a0007; + public static final int anticipate_overshoot_interpolator=0x010a0009; + public static final int app_starting_exit=0x010a0011; + public static final int bounce_interpolator=0x010a000a; + public static final int cycle_interpolator=0x010a000c; + /** Acceleration curve matching Flash's quadratic ease in function. + */ + public static final int decelerate_interpolator=0x010a0006; + public static final int dock_bottom_enter=0x010a0014; + public static final int dock_bottom_exit=0x010a0015; + public static final int dock_left_enter=0x010a0016; + public static final int dock_left_exit=0x010a0017; + public static final int dock_right_enter=0x010a0018; + public static final int dock_right_exit=0x010a0019; + public static final int dock_top_enter=0x010a001a; + public static final int dock_top_exit=0x010a001b; + public static final int fade_in=0x010a0000; + public static final int fade_out=0x010a0001; + public static final int linear_interpolator=0x010a000b; + public static final int lock_screen_behind_enter=0x010a0027; + public static final int lock_screen_wallpaper_behind_enter=0x010a002a; + public static final int overshoot_interpolator=0x010a0008; + public static final int push_down_in=0x010a002d; + public static final int push_down_out=0x010a002f; + public static final int push_up_in=0x010a0031; + public static final int push_up_out=0x010a0032; + public static final int rotation_animation_enter=0x010a0037; + public static final int rotation_animation_jump_exit=0x010a0038; + public static final int rotation_animation_xfade_exit=0x010a0039; + public static final int screen_rotate_0_enter=0x010a003a; + public static final int screen_rotate_0_exit=0x010a003b; + public static final int screen_rotate_0_frame=0x010a003c; + public static final int screen_rotate_180_enter=0x010a003d; + public static final int screen_rotate_180_exit=0x010a003e; + public static final int screen_rotate_180_frame=0x010a003f; + public static final int screen_rotate_finish_enter=0x010a0040; + public static final int screen_rotate_finish_exit=0x010a0041; + public static final int screen_rotate_finish_frame=0x010a0042; + public static final int screen_rotate_minus_90_enter=0x010a0043; + public static final int screen_rotate_minus_90_exit=0x010a0044; + public static final int screen_rotate_minus_90_frame=0x010a0045; + public static final int screen_rotate_plus_90_enter=0x010a0046; + public static final int screen_rotate_plus_90_exit=0x010a0047; + public static final int screen_rotate_plus_90_frame=0x010a0048; + public static final int screen_rotate_start_enter=0x010a0049; + public static final int screen_rotate_start_exit=0x010a004a; + public static final int screen_rotate_start_frame=0x010a004b; + public static final int screen_user_enter=0x010a004c; + public static final int screen_user_exit=0x010a004d; + public static final int slide_in_child_bottom=0x010a0053; + public static final int slide_in_left=0x010a0002; + public static final int slide_in_right=0x010a0054; + public static final int slide_out_left=0x010a0057; + public static final int slide_out_right=0x010a0003; + public static final int window_move_from_decor=0x010a006d; + } + public static final class animator { + /** A simple fade-in animation. + */ + public static final int fade_in=0x010b0000; + /** A simple fade-out animation. + */ + public static final int fade_out=0x010b0001; + } + public static final class array { + /** This string array should be overridden by the manufacture to present a list of carrier-id,locale. The wifi regulatory domain is extracted from the locale information. This is used at startup to set system defaults by checking the system property ro.carrier for the carrier-id and searching through this array + An Array of [[Carrier-ID] + [default-locale]] + */ + public static final int carrier_properties=0x01070034; + /** Various locale-specific string resources for Contacts + various string resources for Contacts + */ + public static final int common_nicknames=0x01070032; + /** Array of output values for button backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + The brightness values must be between 0 and 255 and be non-decreasing. + This must be overridden in platform specific overlays + */ + public static final int config_autoBrightnessButtonBacklightValues=0x01070021; + /** Array of output values for keyboard backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + The brightness values must be between 0 and 255 and be non-decreasing. + This must be overridden in platform specific overlays + */ + public static final int config_autoBrightnessKeyboardBacklightValues=0x01070022; + /** Array of output values for LCD backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + The brightness values must be between 0 and 255 and be non-decreasing. + This must be overridden in platform specific overlays + */ + public static final int config_autoBrightnessLcdBacklightValues=0x01070020; + /** Array of light sensor LUX values to define our levels for auto backlight brightness support. + The N entries of this array define N + 1 control points as follows: + (1-based arrays) + + Point 1: (0, value[1]): lux <= 0 + Point 2: (level[1], value[2]): 0 < lux <= level[1] + Point 3: (level[2], value[3]): level[2] < lux <= level[3] + ... + Point N+1: (level[N], value[N+1]): level[N] < lux + + The control points must be strictly increasing. Each control point + corresponds to an entry in the brightness backlight values arrays. + For example, if LUX == level[1] (first element of the levels array) + then the brightness will be determined by value[2] (second element + of the brightness values array). + + Spline interpolation is used to determine the auto-brightness + backlight values for LUX levels between these control points. + + Must be overridden in platform specific overlays + */ + public static final int config_autoBrightnessLevels=0x0107001f; + /** call barring MMI code from TS 22.030 Annex B + call barring MMI code from TS 22.030 Annex B + Indonesia AXIS does not support Call Barring service + and "333" is used for other purpose + call barring MMI code from TS 22.030 Annex B + Indonesia Hutchison does not support Call Barring service + and "333" is used for other purpose + */ + public static final int config_callBarringMMI=0x0107002f; + /** If the DUN connection for this CDMA device supports more than just DUN + traffic you should list them here. + If this device is not CDMA this is ignored. If this list is empty on + a DUN-requiring CDMA device, the DUN APN will just support just DUN. + */ + public static final int config_cdma_dun_supported_types=0x01070016; + /** Set of NetworkInfo.getType() that reflect data usage. + TYPE_MOBILE_IA + */ + public static final int config_data_usage_network_types=0x0107000e; + /** Vibrator pattern to be used as the default for notifications + that specify DEFAULT_VIBRATE. + + */ + public static final int config_defaultNotificationVibePattern=0x01070029; + /** The list of IMEs which should be disabled until used. + This function suppresses update notifications for these pre-installed apps. + We need to set this configuration carefully that they should not have functionarities + other than "IME" or "Spell Checker". In InputMethodManagerService, + the listed IMEs are disabled until used when all of the following conditions are met. + 1. Not selected as an enabled IME in the Settings + 2. Not selected as a spell checker in the Settings + 3. Installed + 4. A pre-installed IME + 5. Not enabled + And the disabled_until_used state for an IME is released by InputMethodManagerService + when the IME is selected as an enabled IME. + */ + public static final int config_disabledUntilUsedPreinstalledImes=0x0107002b; + /** Vibrator pattern for a very short but reliable vibration for soft keyboard tap + */ + public static final int config_keyboardTapVibePattern=0x0107001b; + /** Package name(s) containing location provider support. + These packages can contain services implementing location providers, + such as the Geocode Provider, Network Location Provider, and + Fused Location Provider. They will each be searched for + service components implementing these providers. + It is strongly recommended that the packages explicitly named + below are on the system image, so that they will not map to + a 3rd party application. + The location framework also has support for installation + of new location providers at run-time. The new package does not + have to be explicitly listed here, however it must have a signature + that matches the signature of at least one package on this list. + + */ + public static final int config_locationProviderPackageNames=0x01070023; + /** Vibrator pattern for feedback about a long screen/key press + */ + public static final int config_longPressVibePattern=0x01070019; + /** Array of integer pairs controlling the rate at which the master volume changes + in response to volume up and down key events. + The first integer of each pair is compared against the current master volume + (in range 0 to 100). + The last pair with first integer <= the current volume is chosen, + and the second integer of the pair indicates the amount to increase the master volume + when volume up is pressed. + default: always increase volume by 5% + */ + public static final int config_masterVolumeRamp=0x0107000a; + /** If the mobile hotspot feature requires provisioning, a package name and class name + can be provided to launch a supported application that provisions the devices. + + Example Usage: + + String[] appDetails = getStringArray(R.array.config_mobile_hotspot_provision_app); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setClassName(appDetails[0], appDetails[1]); + startActivityForResult(intent, 0); + + public void onActivityResult(int requestCode, int resultCode, Intent intent) { + super.onActivityResult(requestCode, resultCode, intent); + if (requestCode == 0) { + if (resultCode == Activity.RESULT_OK) { + //Mobile hotspot provisioning successful + } else { + //Mobile hotspot provisioning failed + } + } + + See src/com/android/settings/TetherSettings.java for more details. + + The first element is the package name and the second element is the class name + of the provisioning app + + com.example.provisioning + com.example.provisioning.Activity + + */ + public static final int config_mobile_hotspot_provision_app=0x01070014; + /** Vibrator pattern to be used as the default for notifications + that do not specify vibration but vibrate anyway because the device + is in vibrate mode. + + */ + public static final int config_notificationFallbackVibePattern=0x0107002a; + public static final int config_notificationScorers=0x0107002c; + /** Array of OEM specific USB mode override config. + OEM can override a certain USB mode depending on ro.bootmode. + Specify an array of below items to set override rule. + [bootmode]:[original USB mode]:[USB mode used] + */ + public static final int config_oemUsbModeOverride=0x01070027; + /** The list of ril radio technologies (see ServiceState.java) which only support + a single data connection at one time. This may change by carrier via + overlays (some don't support multiple pdp on UMTS). All unlisted radio + tech types support unlimited types (practically only 2-4 used). + EVDO_B + */ + public static final int config_onlySingleDcAllowed=0x01070028; + /** Don't use roaming icon for considered operators. + Can use mcc or mcc+mnc as item. For example, 302 or 21407. + If operators, 21404 and 21407, make roaming agreements, user of 21404 should not see + the roaming icon as using 21407 network. + To do this, add 21407 item to values-mcc214-mnc04/config.xml + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + Don't use roaming icon for considered operators + */ + public static final int config_operatorConsideredNonRoaming=0x0107002d; + /** Array of ConnectivityManager.TYPE_xxxx constants for networks that may only + be controlled by systemOrSignature apps. + */ + public static final int config_protectedNetworks=0x0107000c; + /** Vibrator pattern for feedback about booting with safe mode disabled + */ + public static final int config_safeModeDisabledVibePattern=0x0107001c; + /** Vibrator pattern for feedback about booting with safe mode disabled + */ + public static final int config_safeModeEnabledVibePattern=0x0107001d; + /** Show roaming icon though same named operators. + Uses "startsWith" so you can use a leading substring like the mcc or + use the complete mcc+mnc string. + Though same mcc and same operator name, some operator want to roam. + user of 40485 should see the roaming icon as using 40483 network + though same Reliance network. + To do this, add 40483 item to values-mcc404-mnc85/config.xml + Show roaming icon though same named operators. + Show roaming icon though same named operators. + Show roaming icon though same named operators. + Show roaming icon though same named operators. + */ + public static final int config_sameNamedOperatorConsideredRoaming=0x0107002e; + /** List of paths to serial ports that are available to the serial manager. + for example, /dev/ttyUSB0 + + */ + public static final int config_serialPorts=0x01070018; + /** National language locking shift tables to enable for SMS encoding. + Decoding is always enabled. 3GPP TS 23.038 states that this feature + should not be enabled until a formal request is issued by the relevant + national regulatory body. Array elements are codes from the table above. + Example 1: devices sold in Turkey must include table 1 after the + Turkish Telecommunication Authority requires locking shift encoding + to be enabled (est. July 2012). (http://www.btk.gov.tr/eng/pdf/2009/BY-LAW_SMS.pdf) + See also: http://www.mobitech.com.tr/tr/ersanozturkblog_en/index.php?entry=entry090223-160014 + Example 2: devices sold in India should include tables 4 through 13 + to enable use of the new Release 9 tables for Indic languages. + */ + public static final int config_sms_enabled_locking_shift_tables=0x01070026; + /** National Language Identifier codes for the following two config items. + (from 3GPP TS 23.038 V9.1.1 Table 6.2.1.2.4.1): + 0 - reserved + 1 - Turkish + 2 - Spanish (single shift table only) + 3 - Portuguese + 4 - Bengali + 5 - Gujarati + 6 - Hindi + 7 - Kannada + 8 - Malayalam + 9 - Oriya + 10 - Punjabi + 11 - Tamil + 12 - Telugu + 13 - Urdu + 14+ - reserved + National language single shift tables to enable for SMS encoding. + Decoding is always enabled. 3GPP TS 23.038 states that this feature + should not be enabled until a formal request is issued by the relevant + national regulatory body. Array elements are codes from the table above. + Example 1: devices sold in Turkey must include table 1 to conform with + By-Law Number 27230. (http://www.btk.gov.tr/eng/pdf/2009/BY-LAW_SMS.pdf) + Example 2: devices sold in India should include tables 4 through 13 + to enable use of the new Release 9 tables for Indic languages. + National Language Identifier codes for the following two config items. + (from 3GPP TS 23.038 V9.1.1 Table 6.2.1.2.4.1): + 0 - reserved + 1 - Turkish + 2 - Spanish (single shift table only) + 3 - Portuguese + 4 - Bengali + 5 - Gujarati + 6 - Hindi + 7 - Kannada + 8 - Malayalam + 9 - Oriya + 10 - Punjabi + 11 - Tamil + 12 - Telugu + 13 - Urdu + 14+ - reserved + National language single shift tables to enable for SMS encoding. + Decoding is always enabled. 3GPP TS 23.038 states that this feature + should not be enabled until a formal request is issued by the relevant + national regulatory body. Array elements are codes from the table above. + Example 1: devices sold in Turkey must include table 1 to conform with + By-Law Number 27230. (http://www.btk.gov.tr/eng/pdf/2009/BY-LAW_SMS.pdf) + Example 2: devices sold in India should include tables 4 through 13 + to enable use of the new Release 9 tables for Indic languages. + */ + public static final int config_sms_enabled_single_shift_tables=0x01070025; + /** Do not translate. Defines the slots for the right-hand side icons. That is to say, the + icons in the status bar that are not notifications. + */ + public static final int config_statusBarIcons=0x01070009; + /** List of regexpressions describing the interface (if any) that represent tetherable + bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this + should be empty. + */ + public static final int config_tether_bluetooth_regexs=0x01070012; + /** Dhcp range (min, max) to use for tethering purposes + */ + public static final int config_tether_dhcp_range=0x01070013; + /** Array of ConnectivityManager.TYPE_xxxx values allowable for tethering + Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or + Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int absListViewStyle=0x0101006a; + /** The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + +
ConstantValueDescription
typeViewClicked0x00000001 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CLICKED} events.
typeViewLongClicked0x00000002 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_LONG_CLICKED} events.
typeViewSelected0x00000004 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SELECTED} events.
typeViewFocused0x00000008 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_FOCUSED} events.
typeViewTextChanged0x00000010 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED} events.
typeWindowStateChanged0x00000020 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} events.
typeNotificationStateChanged0x00000040 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED} events.
typeViewHoverEnter0x00000080 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} events.
typeViewHoverExit0x00000100 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} events.
typeTouchExplorationGestureStart0x00000200 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} events.
typeTouchExplorationGestureEnd0x00000400 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} events.
typeWindowContentChanged0x00000800 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} events.
typeViewScrolled0x000001000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SCROLLED} events.
typeViewTextSelectionChanged0x000002000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} events.
typeAllMask0xffffffff Receives {@link android.view.accessibility.AccessibilityEvent#TYPES_ALL_MASK} i.e. all events.
+ */ + public static final int accessibilityEventTypes=0x01010380; + /** The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
feedbackSpoken0x00000001 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_SPOKEN} feedback.
feedbackHaptic0x00000002 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_HAPTIC} feedback.
feedbackAudible0x00000004 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_AUDIBLE} feedback.
feedbackVisual0x00000008 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_VISUAL} feedback.
feedbackGeneric0x00000010 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_GENERIC} feedback.
feedbackAllMask0xffffffff Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_ALL_MASK} feedback.
+ */ + public static final int accessibilityFeedbackType=0x01010382; + /** Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. + This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
flagDefault0x00000001 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT}
flagIncludeNotImportantViews0x00000002 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}
flagRequestTouchExplorationMode0x00000004 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}
flagRequestEnhancedWebAccessibility0x00000008 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY}
flagReportViewIds0x00000010 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
flagRequestFilterKeyEvents0x00000020 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS}
+ */ + public static final int accessibilityFlags=0x01010384; + /** The drawable for accessibility focused views. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int accessibilityFocusedDrawable=0x01010421; + /** Indicates to accessibility services whether the user should be notified when + this view changes. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Accessibility services should not announce changes to this view.
polite1 Accessibility services should announce changes to this view.
assertive2 Accessibility services should interrupt ongoing speech to immediately + announce changes to this view.
+ */ + public static final int accessibilityLiveRegion=0x010103ee; + /** A preferences.xml file for authenticator-specific settings. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int accountPreferences=0x0101029f; + /** The account type this authenticator handles. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int accountType=0x0101028f; + /** The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int action=0x0101002d; + /** Custom divider drawable to use for elements in the action bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarDivider=0x0101039b; + /** Custom item state list drawable background for action bar items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarItemBackground=0x0101039c; + /** Size of the Action Bar, including the contextual + bar used to present Action Modes. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
wrap_content0
+ */ + public static final int actionBarSize=0x010102eb; + /** Reference to a style for the split Action Bar. This style + controls the split component that holds the menu/action + buttons. actionBarStyle is still used for the primary + bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarSplitStyle=0x01010388; + /** Reference to a style for the Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarStyle=0x010102ce; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabBarStyle=0x010102f4; + /** Default style for tabs within an action bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabStyle=0x010102f3; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarTabTextStyle=0x010102f5; + /** Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar. Most of the time + this will be a reference to the current theme, but when + the action bar has a significantly different contrast + profile than the rest of the activity the difference + can become important. If this is set to @null the current + theme will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionBarWidgetTheme=0x01010397; + /** Default action button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionButtonStyle=0x010102d8; + /** Default ActionBar dropdown style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionDropDownStyle=0x010102d7; + /** An optional layout to be used as an action view. + See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionLayout=0x010102fb; + /** TextAppearance style that will be applied to text that + appears within action menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionMenuTextAppearance=0x01010360; + /** Color for text that appears within action menu items. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int actionMenuTextColor=0x01010361; + /** Background drawable to use for action mode UI +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeBackground=0x010102db; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCloseButtonStyle=0x010102f7; + /** Drawable to use for the close action mode button +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCloseDrawable=0x010102dc; + /** Drawable to use for the Copy action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCopyDrawable=0x01010312; + /** Drawable to use for the Cut action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeCutDrawable=0x01010311; + /** Drawable to use for the Paste action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModePasteDrawable=0x01010313; + /** PopupWindow style to use for action modes when showing as a window overlay. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModePopupWindowStyle=0x01010409; + /** Drawable to use for the Select all action button in Contextual Action Bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeSelectAllDrawable=0x0101037e; + /** Drawable to use for the Share action button in WebView selection action modes +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeShareDrawable=0x01010406; + /** Background drawable to use for action mode UI in the lower split bar +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeSplitBackground=0x0101039d; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeStyle=0x01010394; + /** Drawable to use for the Web Search action button in WebView selection action modes +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionModeWebSearchDrawable=0x01010408; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int actionOverflowButtonStyle=0x010102f6; + /** The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item. + See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)} + for more info. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int actionProviderClass=0x01010389; + /** The name of an optional View class to instantiate and use as an + action view. See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int actionViewClass=0x010102fc; + /** Drawable used as a background for activated items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activatedBackgroundIndicator=0x010102fd; + /** When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityCloseEnterAnimation=0x010100ba; + /** When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityCloseExitAnimation=0x010100bb; + /** When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityOpenEnterAnimation=0x010100b8; + /** When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int activityOpenExitAnimation=0x010100b9; + /** Fully qualified class name of an activity that allows the user to manually + add printers to this print service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int addPrintersActivity=0x010103e6; + /** Sets whether this ViewGroup's drawable states also include + its children's drawable states. This is used, for example, to + make a group appear to be focused when its child EditText or button + is focused. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int addStatesFromChildren=0x010100f0; + /** Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int adjustViewBounds=0x0101011e; + /** Fully qualified class name of an activity with advanced print options + specific to this print service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int advancedPrintOptionsActivity=0x010103f1; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alertDialogCenterButtons=0x010103fc; + /** Icon drawable to use for alerts +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogIcon=0x01010355; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogStyle=0x0101005d; + /** Theme to use for alert dialogs spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int alertDialogTheme=0x01010309; + /** Alignment constants. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
alignBounds0 Align the bounds of the children. + See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
alignMargins1 Align the margins of the children. + See {@link android.widget.GridLayout#ALIGN_MARGINS}.
+ */ + public static final int alignmentMode=0x0101037a; + /** Resource representing the term "All Contacts" (e.g. "All Friends" or + "All connections"). Optional (Default is "All Contacts"). +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allContactsName=0x010102cc; + /** Whether to allow the application to participate in the backup + and restore infrastructure. If this attribute is set to false, + no backup or restore of the application will ever be performed, even by a + full-system backup that would otherwise cause all application data to be saved + via adb. The default value of this attribute is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowBackup=0x01010280; + /** Option to let applications specify that user data can/cannot be + cleared. This flag is turned on by default. + This attribute is usable only by applications + included in the system image. Third-party apps cannot use it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowClearUserData=0x01010005; + /** Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority. + Otherwise the SyncManager will be sure not to issue a start sync request + to this SyncAdapter if the SyncAdapter is already syncing another account. + Defaults to false. + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowParallelSyncs=0x01010332; + /** Indicates whether the drawer can be opened/closed by a single tap + on the handle. (If false, the user must drag or fling, or click + using the trackball, to open/close the drawer.) Default is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowSingleTap=0x01010259; + /** Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int allowTaskReparenting=0x01010204; + /** alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque). +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alpha=0x0101031f; + /** The alphabetic shortcut key. This is the shortcut when using a keyboard + with alphabetic keys. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alphabeticShortcut=0x010101e3; + /** Defines whether the ViewGroup should always draw its children using their + drawing cache or not. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alwaysDrawnWithCache=0x010100ef; + /** Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations. + +

Normally the system will reset a task (remove all activities from + the stack and reset the root activity) in certain situations when + the user re-selects that task from the home screen. Typically this + will be done if the user hasn't visited that task for a certain + amount of time, such as 30 minutes. + +

By setting this attribute, the user will always return to your + task in its last state, regardless of how they get there. This is + useful, for example, in an application like the web browser where there + is a lot of state (such as multiple open tabs) that the application + would not like to lose. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int alwaysRetainTaskState=0x01010203; + /** Angle of the gradient. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int angle=0x010101a0; + /** Defines whether to animate the current View when the ViewAnimation + is first displayed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateFirstView=0x010102d5; + /** Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run. When this flag is set to true, a default + LayoutTransition object will be set on the ViewGroup container and default + animations will run when these layout changes occur. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateLayoutChanges=0x010102f2; + /** Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle. Default is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animateOnClick=0x0101025c; + /** Animation to use on each child. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int animation=0x010101cd; + /** Defines whether layout animations should create a drawing cache for their + children. Enabling the animation cache consumes more memory and requires + a longer initialization but provides better performance. The animation + cache is enabled by default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animationCache=0x010100ed; + /** Sets how long a transition animation should run (in milliseconds) + when layout has changed. Only relevant if animation is turned on. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int animationDuration=0x01010112; + /** The order in which the animations will be started. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Animations are started in the natural order.
reverse1 Animations are started in the reverse order.
random2 Animations are started randomly.
+ */ + public static final int animationOrder=0x010101ce; + /** @deprecated Not used by the framework. + Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.} +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int animationResolution=0x0101031a; + /** Enables or disables antialiasing. Antialiasing can be used to smooth the + edges of a bitmap when rotated. Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int antialias=0x0101011a; + /** Indicates whether the application can accommodate any screen + density. Older applications are assumed to not be able to, + new ones able to. You can explicitly supply your abilities + here. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int anyDensity=0x0101026c; + /** A drawable that can be rendered in Android's system UI for representing + the service. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int apduServiceBanner=0x010103ed; + /** Value is a string that specifies the Maps API Key to use. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int apiKey=0x01010211; + /** Name of the author of this component, e.g. Google. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int author=0x010102b4; + /** Specify the authorities under which this content provider can be + found. Multiple authorities may be supplied by separating them + with a semicolon. Authority names should use a Java-style naming + convention (such as com.google.provider.MyProvider) + in order to avoid conflicts. Typically this name is the same + as the class implementation describing the provider's data structure. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int authorities=0x01010018; + /** The view id of the AppWidget subview which should be auto-advanced. + by the widget's host. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int autoAdvanceViewId=0x0101030f; + /** Default AutoCompleteTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int autoCompleteTextViewStyle=0x0101006b; + /** Controls whether links such as urls and email addresses are + automatically found and converted to clickable links. The default + value is "none", disabling this feature. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
none0x00 Match no patterns (default).
web0x01 Match Web URLs.
email0x02 Match email addresses.
phone0x04 Match phone numbers.
map0x08 Match map addresses.
all0x0f Match all patterns (equivalent to web|email|phone|map).
+ */ + public static final int autoLink=0x010100b0; + /** Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). See + {@link android.graphics.drawable.Drawable#setAutoMirrored}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoMirrored=0x010103ea; + /** When true, automatically start animating +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoStart=0x010102b5; + /** If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors. + The default is "false". + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int autoText=0x0101016a; + /** If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity). If set to false any URLs entered are treated as + normal query text. + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int autoUrlDetect=0x0101028c; + /** A drawable to use as the background. This can be either a reference + to a full drawable resource (such as a PNG image, 9-patch, + XML state list description, etc), or a solid color such as "#ff000000" + (black). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int background=0x010100d4; + /** Default background dim amount when a menu, dialog, or something similar pops up. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backgroundDimAmount=0x01010032; + /** Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backgroundDimEnabled=0x0101021f; + /** Specifies a background drawable for the bottom component of a split action bar. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int backgroundSplit=0x0101038b; + /** Specifies a background drawable for a second stacked row of the action bar. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int backgroundStacked=0x0101038a; + /** The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int backupAgent=0x0101027f; + /** The offset of the baseline within this view. See {see android.view.View#getBaseline} + for details +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baseline=0x0101031c; + /** If true, the image view will be baseline aligned with based on its + bottom edge. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAlignBottom=0x01010122; + /** When set to false, prevents the layout from aligning its children's + baselines. This attribute is particularly useful when the children + use different values for gravity. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAligned=0x01010126; + /** When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView). +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int baselineAlignedChildIndex=0x01010127; + /** Style for buttons without an explicit border, often used in groups. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int borderlessButtonStyle=0x0101032b; + /** Amount of bottom padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottom=0x010101b0; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomBright=0x010100cd; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomDark=0x010100c9; + /** Radius of the bottom left corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomLeftRadius=0x010101ab; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int bottomMedium=0x010100ce; + /** Extra offset for the handle at the bottom of the SlidingDrawer. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomOffset=0x01010257; + /** Radius of the bottom right corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int bottomRightRadius=0x010101ac; + /** The short title for the bread crumb of this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int breadCrumbShortTitle=0x01010304; + /** The title for the bread crumb of this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int breadCrumbTitle=0x01010303; + /** Determines the minimum type that getText() will return. + The default is "normal". + Note that EditText and LogTextBox always return Editable, + even if you specify something less powerful here. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Can return any CharSequence, possibly a + Spanned one if the source text was Spanned.
spannable1 Can only return Spannable.
editable2 Can only return Spannable and Editable.
+ */ + public static final int bufferType=0x0101014e; + /** Drawable used for the button graphic (e.g. checkbox, radio button, etc). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int button=0x01010107; + /** Style for buttons within button bars +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonBarButtonStyle=0x0101032f; + /** Style for button bars +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonBarStyle=0x0101032e; + /** Normal Button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyle=0x01010048; + /** Button style to inset into an EditText. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleInset=0x0101004a; + /** Small Button style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleSmall=0x01010049; + /** ToggleButton style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int buttonStyleToggle=0x0101004b; + /** Indicates that this list will always be drawn on top of solid, single-color + opaque background. This allows the list to optimize drawing. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cacheColorHint=0x01010101; + /** Whether the calendar view is shown. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int calendarViewShown=0x0101034c; + /** The CalendarView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int calendarViewStyle=0x0101035d; + /** Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements. For example, installing scripts to make app + content more accessible. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestEnhancedWebAccessibility=0x010103d8; + /** Attribute whether the accessibility service wants to be able to request to + filter key events. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestFilterKeyEvents=0x010103d9; + /** Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag. +

+ +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRequestTouchExplorationMode=0x010103d7; + /** Attribute whether the accessibility service wants to be able to retrieve the + active window content. This setting cannot be changed at runtime. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int canRetrieveWindowContent=0x01010385; + /** A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method. The + text itself will be ignored, but the style spans will be applied + to the candidate text as it is edited. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. + */ + public static final int candidatesTextStyleSpans=0x01010230; + /** If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types. + The default is "none". + {@deprecated Use inputType instead.} +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Don't automatically capitalize anything.
sentences1 Capitalize the first word of each sentence.
words2 Capitalize the first letter of every word.
characters3 Capitalize every character.
+ */ + @Deprecated + public static final int capitalize=0x01010169; + /** The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly. + Additionally, when a category is specified, Android will ensure that either + all AIDs in this group are routed to this application, or none at all. + This attribute is optional. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int category=0x010103e8; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerBright=0x010100cc; + /** Optional center color. For linear gradients, use centerX or centerY + to place the center color. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerColor=0x0101020b; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerDark=0x010100c8; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int centerMedium=0x010100cf; + /** X coordinate of the origin of the gradient within the shape. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerX=0x010101a2; + /** Y coordinate of the origin of the gradient within the shape. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int centerY=0x010101a3; + /** Default style for CheckBoxPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkBoxPreferenceStyle=0x0101008f; + /** Drawable used for the check mark graphic. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkMark=0x01010108; + /** Whether the item is capable of displaying a check mark. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checkable=0x010101e5; + /** Whether the items are capable of displaying a check mark. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 The items are not checkable.
all1 The items are all checkable.
single2 The items are checkable and there will only be a single checked item in + this group.
+ */ + public static final int checkableBehavior=0x010101e0; + /** Default Checkbox style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkboxStyle=0x0101006c; + /** Indicates the initial checked state of this button. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checked=0x01010106; + /** The id of the child radio button that should be checked by default + within this radio group. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int checkedButton=0x01010148; + /** Default CheckedTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int checkedTextViewStyle=0x010103c8; + /** Drawable or color that is used as a divider for children. (It will drawn + below and above child items.) The height of this will be the same as + the height of the normal list item divider. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int childDivider=0x01010111; + /** Indicator shown beside the child View. This can be a stateful Drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int childIndicator=0x0101010c; + /** The end bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorEnd=0x010103d4; + /** The left bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorLeft=0x0101010f; + /** The right bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorRight=0x01010110; + /** The start bound for a child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int childIndicatorStart=0x010103d3; + /** Defines the choice behavior for the view. By default, lists do not have + any choice behavior. By setting the choiceMode to singleChoice, the list + allows up to one item to be in a chosen state. By setting the choiceMode to + multipleChoice, the list allows any number of items to be chosen. + Finally, by setting the choiceMode to multipleChoiceModal the list allows + any number of items to be chosen in a special selection mode. + The application will supply a + {@link android.widget.AbsListView.MultiChoiceModeListener} using + {@link android.widget.AbsListView#setMultiChoiceModeListener} to control the + selection mode. This uses the {@link android.view.ActionMode} API. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Normal list that does not indicate choices.
singleChoice1 The list allows up to one choice.
multipleChoice2 The list allows multiple choices.
multipleChoiceModal3 The list allows multiple choices in a custom selection mode.
+ */ + public static final int choiceMode=0x0101012b; + /** Specify whether an activity's task should be cleared when it + is re-launched from the home screen. As a result, every time the + user starts the task, they will be brought to its root activity, + regardless of whether they used BACK or HOME to last leave it. + This flag only applies to activities that + are used to start the root of a new task. + +

An example of the use of this flag would be for the case where + a user launches activity A from home, and from there goes to + activity B. They now press home, and then return to activity A. + Normally they would see activity B, since that is what they were + last doing in A's task. However, if A has set this flag to true, + then upon going to the background all of the tasks on top of it (B + in this case) are removed, so when the user next returns to A they + will restart at its original activity. + +

When this option is used in conjunction with + {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the + clear. That is, all activities above the root activity of the + task will be removed: those that have an affinity will be moved + to the task they are associated with, otherwise they will simply + be dropped as described here. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clearTaskOnLaunch=0x01010015; + /** Defines whether this view reacts to click events. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clickable=0x010100e5; + /** Defines whether a child is limited to draw inside of its bounds or not. + This is useful with animations that scale the size of the children to more + than 100% for instance. In such a case, this property should be set to false + to allow the children to draw outside of their bounds. The default value of + this property is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clipChildren=0x010100ea; + /** The orientation for the clip. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal1 Clip the drawable horizontally.
vertical2 Clip the drawable vertically.
+ */ + public static final int clipOrientation=0x0101020a; + /** Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area. This property is set to true by default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int clipToPadding=0x010100eb; + /** The unicode value or comma-separated values that this key outputs. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int codes=0x01010242; + /** The zero-based index of the columns to collapse. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int collapseColumns=0x0101014b; + /** Solid color for the gradient shape. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int color=0x010101a5; + /** Default highlight color for items that are + activated. (Activated meaning persistent selection.) +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorActivatedHighlight=0x01010390; + /** Color that matches (as closely as possible) the window background. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorBackground=0x01010031; + /** This is a hint for a solid color that can be used for caching + rendered views. This should be the color of the background when + there is a solid background color; it should be null when the + background is a texture or translucent. When a device is able + to use accelerated drawing (thus setting state_accelerated), the + cache hint is ignored and always assumed to be transparent. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorBackgroundCacheHint=0x010102ab; + /** Default highlight color for items that are + focused. (Focused meaning cursor-based selection.) +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorFocusedHighlight=0x0101038f; + /** Default color of foreground imagery. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorForeground=0x01010030; + /** Default color of foreground imagery on an inverted background. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorForegroundInverse=0x01010206; + /** Default highlight color for items that are long-pressed. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorLongPressedHighlight=0x0101038e; + /** Default highlight color for items in multiple selection + mode. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorMultiSelectHighlight=0x01010391; + /** Default highlight color for items that are pressed. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int colorPressedHighlight=0x0101038d; + /** The maxmimum number of columns to create when automatically positioning children. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnCount=0x01010377; + /** Fraction of the animation duration used to delay the beginning of + the animation of each column. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnDelay=0x010101cf; + /** When set to true, forces column boundaries to appear in the same order + as column indices. + The default is true. + See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnOrderPreserved=0x01010378; + /** Specifies the fixed width for each column. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int columnWidth=0x01010117; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application is designed for. If this value is smaller than + the "smallest screen width" of the device it is running on, the user + is offered to run it in a compatibility mode that emulates a + smaller screen and zooms it to fit the screen. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for compatibleWidthLimitDp is larger than 320. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int compatibleWidthLimitDp=0x01010365; + /** Defines the hint displayed in the drop down menu. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int completionHint=0x01010172; + /** Defines the hint view displayed in the drop down menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int completionHintView=0x01010173; + /** Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int completionThreshold=0x01010174; + /** Specify one or more configuration changes that the activity will + handle itself. If not specified, the activity will be restarted + if any of these configuration changes happen in the system. Otherwise, + the activity will remain running and its + {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged} + method called with the new configuration. + +

Note that all of these configuration changes can impact the + resource values seen by the application, so you will generally need + to re-retrieve all resources (including view layouts, drawables, etc) + to correctly handle any configuration change. + +

These values must be kept in sync with those in + {@link android.content.pm.ActivityInfo} and + include/utils/ResourceTypes.h. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
mcc0x0001 The IMSI MCC has changed, that is a SIM has been detected and + updated the Mobile Country Code.
mnc0x0002 The IMSI MNC has changed, that is a SIM has been detected and + updated the Mobile Network Code.
locale0x0004 The locale has changed, that is the user has selected a new + language that text should be displayed in.
touchscreen0x0008 The touchscreen has changed. Should never normally happen.
keyboard0x0010 The keyboard type has changed, for example the user has plugged + in an external keyboard.
keyboardHidden0x0020 The keyboard or navigation accessibility has changed, for example + the user has slid the keyboard out to expose it. Note that + despite its name, this applied to any accessibility: keyboard + or navigation.
navigation0x0040 The navigation type has changed. Should never normally happen.
orientation0x0080 The screen orientation has changed, that is the user has + rotated the device.
screenLayout0x0100 The screen layout has changed. This might be caused by a + different display being activated.
uiMode0x0200 The global user interface mode has changed. For example, + going in or out of car mode, night mode changing, etc.
screenSize0x0400 The current available screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in the + currently available size, so will change when the user switches + between landscape and portrait.
smallestScreenSize0x0800 The physical screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in size + regardless of orientation, so will only change when the actual + physical screen size has changed such as switching to an external + display.
layoutDirection0x2000 The layout direction has changed. For example going from LTR to RTL.
fontScale0x40000000 The font scaling factor has changed, that is the user has + selected a new global font size.
+ */ + public static final int configChanges=0x0101001f; + /** A class name in the AppWidget's package to be launched to configure. + If not supplied, then no activity will be launched. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int configure=0x0101025d; + /** If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states. If false, the size will vary based on the + current state. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int constantSize=0x01010196; + /** Identifier for the child that represents the drawer's content. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int content=0x0101025b; + /** the authority of a content provider. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int contentAuthority=0x01010290; + /** Defines text that briefly describes content of the view. This property is used + primarily for accessibility. Since some views do not have textual + representation this attribute can be used for providing such. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int contentDescription=0x01010273; + /** If true, the image will be cropped to fit within its padding. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cropToPadding=0x01010123; + /** Makes the cursor visible (the default) or invisible. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cursorVisible=0x01010152; + /** Specifies a layout for custom navigation. Overrides navigationMode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int customNavigationLayout=0x010102d2; + /** Account handles its own token storage and permissions. + Default to false + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int customTokens=0x0101033b; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int cycles=0x010101d4; + /** Gap between dashes in the stroke. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dashGap=0x010101a7; + /** Length of a dash in the stroke. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dashWidth=0x010101a6; + /** The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}. +

Note: scheme and host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + URIs here should always be normalized to use lower case letters + for these elements (as well as other proper Uri normalization).

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int data=0x0101002e; + /** The DatePicker style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int datePickerStyle=0x0101035c; + /** The text appearance for the calendar dates. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dateTextAppearance=0x01010349; + /** Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int debuggable=0x0101000f; + /** The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a floating point value, such as "1.2". + */ + public static final int defaultValue=0x010101ed; + /** Fraction of the animation duration used to delay the beginning of + the animation of each child. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int delay=0x010101cc; + /** The key of another Preference that this Preference will depend on. If the other + Preference is not set or is off, this Preference will be disabled. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dependency=0x010101ec; + /** Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
beforeDescendants0 The ViewGroup will get focus before any of its descendants.
afterDescendants1 The ViewGroup will get focus only if none of its descendants want it.
blocksDescendants2 The ViewGroup will block its descendants from receiving focus.
+ */ + public static final int descendantFocusability=0x010100f1; + /** Descriptive text for the associated data. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int description=0x01010020; + /** Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detachWallpaper=0x010102a6; + /** Column in data table that contains details for this data. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detailColumn=0x010102a3; + /** Flag indicating that detail should be built from SocialProvider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int detailSocialSummary=0x010102a4; + /** Background that can be used behind parts of a UI that provide + details on data the user is selecting. For example, this is + the background element of PreferenceActivity's embedded + preference fragment. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int detailsElementBackground=0x0101034e; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dial=0x01010102; + /** Window decor layout to use in dialog mode with custom titles +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogCustomTitleDecorLayout=0x01010411; + /** The icon for the dialog. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogIcon=0x010101f4; + /** A layout to be used as the content View for the dialog. By default, this shouldn't + be needed. If a custom DialogPreference is required, this should be set. For example, + the EditTextPreference uses a layout with an EditText as this attribute. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogLayout=0x010101f7; + /** The message in the dialog. If a dialogLayout is provided and contains + a TextView with ID android:id/message, this message will be placed in there. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dialogMessage=0x010101f3; + /** Default style for DialogPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogPreferenceStyle=0x01010091; + /** Theme to use for dialogs spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogTheme=0x01010308; + /** The title in the dialog. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dialogTitle=0x010101f2; + /** Window decor layout to use in dialog mode with title only +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogTitleDecorLayout=0x01010412; + /** Window decor layout to use in dialog mode with icons +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dialogTitleIconsDecorLayout=0x01010410; + /** If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept. + If this is set, numeric is implied to be true. + The default is false. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int digits=0x01010166; + /** Direction of the animation in the grid. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
left_to_right0x0 Animates columns from left to right.
right_to_left0x1 Animates columns from right to left.
top_to_bottom0x0 Animates rows from top to bottom.
bottom_to_top0x2 Animates rows from bottom to top.
+ */ + public static final int direction=0x010101d1; + /** Reference to an array resource that be used to announce the directions with targets around the circle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int directionDescriptions=0x010103a1; + /** Priority of the rows and columns. When the priority is none, + both rows and columns have the same priority. When the priority is + column, the animations will be applied on the columns first. The same + goes for rows. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Rows and columns are animated at the same time.
column1 Columns are animated first.
row2 Rows are animated first.
+ */ + public static final int directionPriority=0x010101d2; + /** The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int disableDependentsState=0x010101f1; + /** Default disabled alpha for widgets that set enabled/disabled alpha programmatically. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int disabledAlpha=0x01010033; + /** Options affecting how the action bar is displayed. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
none0
useLogo0x1
showHome0x2
homeAsUp0x4
showTitle0x8
showCustom0x10
disableHome0x20
+ */ + public static final int displayOptions=0x010102d0; + /** Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dither=0x0101011c; + /** Drawable or color to draw between list items. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int divider=0x01010129; + /** Height of the divider. Will use the intrinsic height of the divider if this + is not specified. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dividerHeight=0x0101012a; + /** Drawable to use for generic horizontal dividers. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dividerHorizontal=0x0101032c; + /** Size of padding on either end of a divider. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dividerPadding=0x0101032a; + /** Drawable to use for generic vertical dividers. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dividerVertical=0x0101030a; + /** When set to true, the selector will be drawn over the selected item. + Otherwise the selector is drawn behind the selected item. The default + value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int drawSelectorOnTop=0x010100fc; + /** Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int drawable=0x01010199; + /** The drawable to be drawn below the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableBottom=0x0101016e; + /** The drawable to be drawn to the end of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableEnd=0x01010393; + /** The drawable to be drawn to the left of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableLeft=0x0101016f; + /** The padding between the drawables and the text. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int drawablePadding=0x01010171; + /** The drawable to be drawn to the right of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableRight=0x01010170; + /** The drawable to be drawn to the start of the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableStart=0x01010392; + /** The drawable to be drawn above the text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int drawableTop=0x0101016d; + /** Defines the quality of translucent drawing caches. This property is used + only when the drawing cache is enabled and translucent. The default value is auto. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Lets the framework decide what quality level should be used + for the drawing cache.
low1 Low quality. When set to low quality, the drawing cache uses a lower color + depth, thus losing precision in rendering gradients, but uses less memory.
high2 High quality. When set to high quality, the drawing cache uses a higher + color depth but uses more memory.
+ */ + public static final int drawingCacheQuality=0x010100e8; + /** View to anchor the auto-complete dropdown to. If not specified, the text view itself + is used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownAnchor=0x01010263; + /** Specifies the basic height of the dropdown. Its value may + be a dimension (such as "12dip") for a constant height, + fill_parent or match_parent to fill the height of the + screen, or wrap_content to match the height of + the content of the drop down. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fit the height of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the height of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the height of the content.
+ */ + public static final int dropDownHeight=0x01010283; + /** Default style for drop down hints. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownHintAppearance=0x01010088; + /** Amount of pixels by which the drop down should be offset horizontally. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dropDownHorizontalOffset=0x010102ac; + /** Default style for drop down items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownItemStyle=0x01010086; + /** Default ListView style for drop downs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownListViewStyle=0x0101006d; + /** Selector in a drop down list. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int dropDownSelector=0x01010175; + /** Default dropdown Spinner style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int dropDownSpinnerStyle=0x010102d6; + /** Amount of pixels by which the drop down should be offset vertically. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int dropDownVerticalOffset=0x010102ad; + /** Specifies the basic width of the dropdown. Its value may + be a dimension (such as "12dip") for a constant width, + fill_parent or match_parent to match the width of the + screen, or wrap_content to match the width of + the anchored view. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+ */ + public static final int dropDownWidth=0x01010262; + /** When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.) from its direct parent rather than from itself. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int duplicateParentState=0x010100e9; + /** Amount of time (in milliseconds) to display this frame. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int duration=0x01010198; + /** EditText background drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextBackground=0x01010352; + /** EditText text foreground color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int editTextColor=0x01010351; + /** Default style for EditTextPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextPreferenceStyle=0x01010092; + /** Default EditText style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editTextStyle=0x0101006e; + /** If set, specifies that this TextView has an input method. + It will be a textual one unless it has otherwise been specified. + For TextView, this is false by default. For EditText, it is + true by default. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int editable=0x0101016b; + /** Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#extras + EditorInfo.extras} field when the input + method is connected. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int editorExtras=0x01010224; + /** Where to ellipsize text. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
none0
start1
middle2
end3
marquee4
+ */ + public static final int ellipsize=0x010100ab; + /** Makes the TextView be exactly this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int ems=0x01010158; + /** Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass. + For example, a non-enabled EditText prevents the user from editing the contained text, and + a non-enabled Button prevents the user from tapping the button. + The appearance of enabled and non-enabled widgets may differ, if the drawables referenced + from evaluating state_enabled differ. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int enabled=0x0101000e; + /** End color of the gradient. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int endColor=0x0101019e; + /** {@deprecated Use maxDate instead.} + The last year (inclusive), for example "2010". + {@deprecated Use maxDate instead.} + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int endYear=0x0101017d; + /** Amount of time (in milliseconds) to fade in a new state drawable. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int enterFadeDuration=0x0101030c; + /** Reference to an array resource that will populate a list/adapter. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int entries=0x010100b2; + /** The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks on the second item in entries, the + second item in this array will be saved to the preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int entryValues=0x010101f8; + /** Defines whether the overlay should intercept the motion events when a gesture + is recognized. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int eventsInterceptionEnabled=0x0101027d; + /** Indicates that an Activity should be excluded from the list of + recently launched activities. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int excludeFromRecents=0x01010017; + /** Amount of time (in milliseconds) to fade out an old state drawable. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int exitFadeDuration=0x0101030d; + /** The preferred left bound for an expandable list child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildIndicatorLeft=0x01010052; + /** The preferred right bound for an expandable list child's indicator. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildIndicatorRight=0x01010053; + /** The preferred left padding for an expandable list item that is a child. + If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredChildPaddingLeft=0x0101004f; + /** The preferred left bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemIndicatorLeft=0x01010050; + /** The preferred right bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorRight. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemIndicatorRight=0x01010051; + /** The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft). This takes into account + the indicator that will be shown to next to the item. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int expandableListPreferredItemPaddingLeft=0x0101004e; + /** Default ExpandableListView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int expandableListViewStyle=0x0101006f; + /** ExpandableListView with white background. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int expandableListViewWhiteStyle=0x010102b6; + /** Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int exported=0x01010010; + /** This drawable is a state list where the "activated" state + indicates active media routing. Non-activated indicates + that media is playing to the local device only. + @hide +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int externalRouteEnabledDrawable=0x01010471; + /** This is the amount by which to multiply the tension. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int extraTension=0x0101026b; + /** This is the amount of deceleration to add when easing in. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int factor=0x010101d3; + /** Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeDuration=0x01010278; + /** Defines whether the gesture will automatically fade out after being recognized. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeEnabled=0x0101027e; + /** Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeOffset=0x01010277; + /** Defines whether to fade out scrollbars when they are not in use. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadeScrollbars=0x010102aa; + /** This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}). + Using fading edges may introduce noticeable performance + degradations and should be used only when required by the application's + visual design. To request fading edges with API level 14 and above, + use the android:requiresFadingEdge attribute instead. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+ */ + public static final int fadingEdge=0x010100df; + /** Defines the length of the fading edges. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fadingEdgeLength=0x010100e0; + /**

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fade_in1 Fade will only fade appearing items in.
fade_out2 Fade will only fade disappearing items out.
fade_in_out3 Fade will fade appearing items in and disappearing items out.
+ */ + public static final int fadingMode=0x010103e1; + /** When set to true, the list will always show the fast scroll interface. + This setting implies fastScrollEnabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollAlwaysVisible=0x01010335; + /** Enables the fast scroll thumb that can be dragged to quickly scroll through + the list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollEnabled=0x01010226; + /** Position of the fast scroll index overlay window. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floating0
atThumb1
+ */ + public static final int fastScrollOverlayPosition=0x0101033a; + /** Drawable to use as the fast scroll index preview window background + when shown on the left. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollPreviewBackgroundLeft=0x01010337; + /** Drawable to use as the fast scroll index preview window background + when shown on the right. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollPreviewBackgroundRight=0x01010338; + /** Text color for the fast scroll index overlay. Make sure it + plays nicely with fastScrollPreviewBackground[Left|Right]. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fastScrollTextColor=0x01010359; + /** Drawable to use as the fast scroll thumb. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollThumbDrawable=0x01010336; + /** Drawable to use as the track for the fast scroll thumb. + This may be null. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fastScrollTrackDrawable=0x01010339; + /** When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillAfter=0x010101bd; + /** When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillBefore=0x010101bc; + /** When set to true, the value of fillBefore is taken into account. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillEnabled=0x0101024f; + /** Defines whether the scrollview should stretch its content to fill the viewport. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fillViewport=0x0101017a; + /** Enables or disables bitmap filtering. Filtering is used when the bitmap is + shrunk or stretched to smooth its apperance. Default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int filter=0x0101011b; + /** Specifies whether to filter touches when the view's window is obscured by + another visible window. When set to true, the view will not receive touches + whenever a toast, dialog or other window appears above the view's window. + Refer to the {@link android.view.View} security documentation for more details. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int filterTouchesWhenObscured=0x010102c4; + /** Specify whether an activity should be finished when a "close system + windows" request has been made. This happens, for example, when + the home key is pressed, when the device is locked, when a system + dialog showing recent applications is displayed, etc. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int finishOnCloseSystemDialogs=0x010102a7; + /** Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen. + +

If both this option and {@link android.R.attr#allowTaskReparenting} are + specified, the finish trumps the affinity: the affinity will be + ignored and the activity simply finished. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int finishOnTaskLaunch=0x01010014; + /** The first day of week according to {@link java.util.Calendar}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int firstDayOfWeek=0x0101033d; + /** Boolean internal attribute to adjust view layout based on + system windows such as the status bar. + If true, adjusts the padding of this view to leave space for the system windows. + Will only take effect if this view is in a non-embedded activity. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fitsSystemWindows=0x010100dd; + /**

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int flipInterval=0x01010179; + /** Boolean that controls whether a view can take focus. By default the user can not + move focus to a view; by setting this attribute to true the view is + allowed to take focus. This value does not impact the behavior of + directly calling {@link android.view.View#requestFocus}, which will + always request focus regardless of this view. It only impacts where + focus navigation will try to move focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int focusable=0x010100da; + /** Boolean that controls whether a view can take focus while in touch mode. + If this is true for a view, that view can gain focus when clicked on, and can keep + focus if another view is clicked on that doesn't have this attribute set to true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int focusableInTouchMode=0x010100db; + /** The color for the dates of the focused month. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int focusedMonthDateColor=0x01010343; + /** Default font family. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fontFamily=0x010103ac; + /** When set to false, the ListView will not draw the divider before each footer view. + The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int footerDividersEnabled=0x0101022f; + /** Defines the drawable to draw over the content. This can be used as an overlay. + The foreground drawable participates in the padding of the content if the gravity + is set to fill. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int foreground=0x01010109; + /** Defines the gravity to apply to the foreground drawable. The gravity defaults + to fill. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
+ */ + public static final int foregroundGravity=0x01010200; + /** Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form. + If no format string is specified, the Chronometer will simply display + "MM:SS" or "H:MM:SS". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format=0x01010105; + /** Specifies the formatting pattern used to show the time and/or date + in 12-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "h:mm a". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format12Hour=0x010103ca; + /** Specifies the formatting pattern used to show the time and/or date + in 24-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "H:mm". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int format24Hour=0x010103cb; + /** The fragment that is displayed when the user selects this item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fragment=0x010102e3; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentCloseEnterAnimation=0x010102e7; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentCloseExitAnimation=0x010102e8; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentFadeEnterAnimation=0x010102e9; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentFadeExitAnimation=0x010102ea; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentOpenEnterAnimation=0x010102e5; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fragmentOpenExitAnimation=0x010102e6; + /** If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position. By default this is disabled; + it can be useful when the contents of a text view is not stored + in a persistent place such as a content provider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int freezesText=0x0101016c; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromAlpha=0x010101ca; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromDegrees=0x010101b3; + /** The originating scene in this scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int fromScene=0x010103dd; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromXDelta=0x010101c6; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromXScale=0x010101c2; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromYDelta=0x010101c8; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int fromYScale=0x010101c4; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int fullBright=0x010100ca; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int fullDark=0x010100c6; + /** Flag indicating that an Instrumentation class should be run as a + functional test. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int functionalTest=0x01010023; + /** The preferred background for gallery items. This should be set + as the background of any Views you provide from the Adapter. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int galleryItemBackground=0x0101004c; + /** Default Gallery style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int galleryStyle=0x01010070; + /** Color used to draw a gesture. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureColor=0x01010275; + /** Default GestureOverlayView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int gestureOverlayViewStyle=0x01010400; + /** Minimum curve angle a stroke must contain before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeAngleThreshold=0x0101027c; + /** Minimum length of a stroke before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeLengthThreshold=0x0101027a; + /** Squareness threshold of a stroke before it is recognized as a gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeSquarenessThreshold=0x0101027b; + /** Defines the type of strokes that define a gesture. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
single0 A gesture is made of only one stroke.
multiple1 A gesture is made of multiple strokes.
+ */ + public static final int gestureStrokeType=0x01010279; + /** Width of the stroke used to draw the gesture. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gestureStrokeWidth=0x01010274; + /** The GLES driver version number needed by an application. + The higher 16 bits represent the major number and the lower 16 bits + represent the minor number. For example for GL 1.2 referring to + 0x00000102, the actual value should be set as 0x00010002. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int glEsVersion=0x01010281; + /** Radius of the gradient, used only with radial gradient. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int gradientRadius=0x010101a4; + /** If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission. If you are supporting this feature, you must be + sure to call {@link android.content.Context#revokeUriPermission + Context.revokeUriPermission} when URIs are deleted from your + provider. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int grantUriPermissions=0x0101001b; + /** Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int gravity=0x010100af; + /** Default GridView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int gridViewStyle=0x01010071; + /** Indicator shown beside the group View. This can be a stateful Drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int groupIndicator=0x0101010b; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int hand_hour=0x01010103; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int hand_minute=0x01010104; + /** Identifier for the child that represents the drawer's handle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int handle=0x0101025a; + /** Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running. + This allows it to target profiling data at a specific set of + operations. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int handleProfiling=0x01010022; + /** Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hapticFeedbackEnabled=0x0101025e; + /**

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hardwareAccelerated=0x010102d3; + /** Indicate whether this application contains code. If set to false, + there is no code associated with it and thus the system will not + try to load its code when launching components. The default is true + for normal behavior. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hasCode=0x0101000c; + /** Default background for the menu header. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int headerBackground=0x0101012f; + /** When set to false, the ListView will not draw the divider after each header view. + The default value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int headerDividersEnabled=0x0101022e; + /** Makes the TextView be exactly this many pixels tall. + You could get the same effect by specifying this number in the + layout parameters. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int height=0x01010155; + /** Hint text to display when the text is empty. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int hint=0x01010150; + /** Specifies a drawable to use for the 'home as up' indicator. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int homeAsUpIndicator=0x0101030b; + /** Specifies a layout to use for the "home" section of the action bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int homeLayout=0x0101031d; + /** Default horizontal divider between rows of menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int horizontalDivider=0x0101012d; + /** Default horizontal gap between keys. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int horizontalGap=0x0101023f; + /** Default HorizontalScrollView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int horizontalScrollViewStyle=0x01010353; + /** Defines the default horizontal spacing between columns. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int horizontalSpacing=0x01010114; + /** Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. +

Note: host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + host names here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int host=0x01010028; + /** A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int icon=0x01010002; + /** The icon to show in the popup preview. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int iconPreview=0x01010249; + /** The default state of the SearchView. If true, it will be iconified when not in + use and expanded when clicked. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int iconifiedByDefault=0x010102fa; + /** Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int id=0x010100d0; + /** Indicates what view should not be affected by gravity. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ignoreGravity=0x010101ff; + /** The style resource to use for an ImageButton. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imageButtonStyle=0x01010072; + /** The style resource to use for an ImageButton that is an image well. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imageWellStyle=0x01010073; + /** Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeActionId=0x01010266; + /** Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeActionLabel=0x01010265; + /** Animation to use when showing the fullscreen extract UI after + it had previously been hidden. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imeExtractEnterAnimation=0x01010268; + /** Animation to use when hiding the fullscreen extract UI after + it had previously been shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int imeExtractExitAnimation=0x01010269; + /** Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application. This allows, + for example, the candidate view to be hidden + while in fullscreen mode without having the application show through + behind it. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int imeFullscreenBackground=0x0101022c; + /** Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+ */ + public static final int imeOptions=0x01010264; + /** The extra value of the subtype. This string can be any string and will be passed to + the IME when the framework calls the IME with the subtype. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeExtraValue=0x010102ee; + /** The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + and will be passed to the IME when the framework calls the IME + with the subtype. This is also used by the framework to know the supported locales + of the IME. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeLocale=0x010102ec; + /** The mode of the subtype. This string can be a mode (e.g. voice, keyboard...) and this + string will be passed to the IME when the framework calls the IME with the + subtype. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int imeSubtypeMode=0x010102ed; + /** Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int immersive=0x010102c0; + /** Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen. Note: While not recommended, an accessibility service may + decide to ignore this attribute and operate on all views in the view tree. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
auto0 The system determines whether the view is important for accessibility - default + (recommended).
yes1 The view is important for accessibility.
no2 The view is not important for accessibility.
noHideDescendants4 The view is not important for accessibility, nor are any of its descendant + views.
+ */ + public static final int importantForAccessibility=0x010103aa; + /** Identifier for the animation to use when a view is shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int inAnimation=0x01010177; + /** Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly. (Normally true). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int includeFontPadding=0x0101015f; + /** If provided and true, this searchable activity will be + included in any global lists of search targets. + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int includeInGlobalSearch=0x0101026e; + /** Allows to enable the indeterminate mode. In this mode the progress + bar plays an infinite looping animation. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminate=0x01010139; + /** Defines how the indeterminate mode should behave when the progress + reaches max. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
repeat1 Progress starts over from 0.
cycle2 Progress keeps the current value and goes back to 0.
+ */ + public static final int indeterminateBehavior=0x0101013e; + /** Drawable used for the indeterminate mode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int indeterminateDrawable=0x0101013b; + /** Duration of the indeterminate animation. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminateDuration=0x0101013d; + /** Restricts to ONLY indeterminate mode (state-keeping progress mode will not work). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indeterminateOnly=0x0101013a; + /** Specifies a style resource to use for an indeterminate progress spinner. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int indeterminateProgressStyle=0x01010318; + /** The end bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorEnd. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorEnd=0x010103d2; + /** The left bound for an item's indicator. To specify a left bound specific to children, + use childIndicatorLeft. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorLeft=0x0101010d; + /** The right bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorRight. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorRight=0x0101010e; + /** The start bound for an item's indicator. To specify a start bound specific to children, + use childIndicatorStart. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int indicatorStart=0x010103d1; + /** Overrides the id of the inflated View with this value. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int inflatedId=0x010100f3; + /** Specify the order in which content providers hosted by a process + are instantiated when that process is created. Not needed unless + you have providers with dependencies between each other, to make + sure that they are created in the order needed by those dependencies. + The value is a simple integer, with higher numbers being + initialized first. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int initOrder=0x0101001a; + /** A resource id of a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int initialKeyguardLayout=0x010103c2; + /** A resource id of a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int initialLayout=0x01010251; + /** Inner radius of the ring. When defined, innerRadiusRatio is ignored. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int innerRadius=0x0101025f; + /** Inner radius of the ring expressed as a ratio of the ring's width. For instance, + if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9. + This value is ignored if innerRadius is defined. Default value is 9. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int innerRadiusRatio=0x0101019b; + /** If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name). + {@deprecated Use inputType instead.} +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int inputMethod=0x01010168; + /** The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+ */ + public static final int inputType=0x01010220; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetBottom=0x010101ba; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetLeft=0x010101b7; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetRight=0x010101b8; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int insetTop=0x010101b9; + /** The default install location defined by an application. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Let the system decide ideal install location
internalOnly1 Explicitly request to be installed on internal phone storage + only.
preferExternal2 Prefer to be installed on SD card. There is no guarantee that + the system will honor this request. The application might end + up being installed on internal storage if external media + is unavailable or too full.
+ */ + public static final int installLocation=0x010102b7; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int interpolator=0x01010141; + /** Set to true to tell the SyncManager to automatically call setIsSyncable(..., ..., 1) + for the SyncAdapter instead of issuaing an initialization sync to the SyncAdapter. + Defaults to false. + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAlwaysSyncable=0x01010333; + /** Set to true if this subtype is ASCII capable. If the subtype is ASCII + capable, it should guarantee that the user can input ASCII characters with + this subtype. This is important because many password fields only allow + ASCII-characters. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAsciiCapable=0x010103e9; + /** Set true if the subtype is auxiliary. An auxiliary subtype won't be shown in the + input method selection list in the settings app. + InputMethodManager#switchToLastInputMethod will ignore auxiliary subtypes when it + chooses a target subtype. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isAuxiliary=0x0101037f; + /** Set to true in all of the configurations for which this input + method should be considered an option as the default. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isDefault=0x01010221; + /** Whether this rating bar is an indicator (and non-changeable by the user). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isIndicator=0x01010147; + /** Whether this is a modifier key such as Alt or Shift. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isModifier=0x01010246; + /** Whether long-pressing on this key will make it repeat. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isRepeatable=0x01010248; + /** Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method. If not set, the default + value will be true if "scrollbars" has the vertical scrollbar + set, else it will be false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isScrollContainer=0x0101024e; + /** Whether this is a toggle key. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isSticky=0x01010247; + /** If set to true, this service will run under a special process + that is isolated from the rest of the system. The only communication + with it is through the Service API (binding and starting). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int isolatedProcess=0x010103a9; + /** Default background for each menu item. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int itemBackground=0x01010130; + /** Default disabled icon alpha for each menu item that shows an icon. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int itemIconDisabledAlpha=0x01010131; + /** Specifies padding that should be applied to the left and right sides of + system-provided items in the bar. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int itemPadding=0x0101032d; + /** Default appearance of menu item text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int itemTextAppearance=0x0101012c; + /** Controls whether the view's window should keep the screen on + while visible. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keepScreenOn=0x01010216; + /** The key to store the Preference value. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int key=0x010101e8; + /** Image for the key. This image needs to be a StateListDrawable, with the following + possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, + checkable+checked+pressed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyBackground=0x01010233; + /** Key edge flags. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
left1 Key is anchored to the left of the keyboard.
right2 Key is anchored to the right of the keyboard.
+ */ + public static final int keyEdgeFlags=0x01010245; + /** Default height of a key, in pixels or percentage of display width. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyHeight=0x0101023e; + /** The icon to display on the key instead of the label. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyIcon=0x0101024c; + /** The label to display on the key. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyLabel=0x0101024b; + /** The string of characters to output when this key is pressed. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyOutputText=0x0101024a; + /** Height of the key press feedback popup. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyPreviewHeight=0x01010239; + /** Layout resource for key press feedback. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyPreviewLayout=0x01010237; + /** Vertical offset of the key press feedback from the key. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyPreviewOffset=0x01010238; + /** Groups signing keys into a {@code KeySet} for easier reference in + other APIs. However, currently no APIs use this. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. + */ + public static final int keySet=0x010103db; + /** Color to use for the label in a key. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyTextColor=0x01010236; + /** Size of the text for character keys. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyTextSize=0x01010234; + /** Default width of a key, in pixels or percentage of display width. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int keyWidth=0x0101023d; + /** The key character map file resource. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyboardLayout=0x010103ab; + /** Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the row will be skipped. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyboardMode=0x0101024d; + /** Default KeyboardView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int keyboardViewStyle=0x0101044f; + /** This enum provides the same keycode values as can be found in + {@link android.view.KeyEvent}. +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
KEYCODE_UNKNOWN0
KEYCODE_SOFT_LEFT1
KEYCODE_SOFT_RIGHT2
KEYCODE_HOME3
KEYCODE_BACK4
KEYCODE_CALL5
KEYCODE_ENDCALL6
KEYCODE_07
KEYCODE_18
KEYCODE_29
KEYCODE_310
KEYCODE_411
KEYCODE_512
KEYCODE_613
KEYCODE_714
KEYCODE_815
KEYCODE_916
KEYCODE_STAR17
KEYCODE_POUND18
KEYCODE_DPAD_UP19
KEYCODE_DPAD_DOWN20
KEYCODE_DPAD_LEFT21
KEYCODE_DPAD_RIGHT22
KEYCODE_DPAD_CENTER23
KEYCODE_VOLUME_UP24
KEYCODE_VOLUME_DOWN25
KEYCODE_POWER26
KEYCODE_CAMERA27
KEYCODE_CLEAR28
KEYCODE_A29
KEYCODE_B30
KEYCODE_C31
KEYCODE_D32
KEYCODE_E33
KEYCODE_F34
KEYCODE_G35
KEYCODE_H36
KEYCODE_I37
KEYCODE_J38
KEYCODE_K39
KEYCODE_L40
KEYCODE_M41
KEYCODE_N42
KEYCODE_O43
KEYCODE_P44
KEYCODE_Q45
KEYCODE_R46
KEYCODE_S47
KEYCODE_T48
KEYCODE_U49
KEYCODE_V50
KEYCODE_W51
KEYCODE_X52
KEYCODE_Y53
KEYCODE_Z54
KEYCODE_COMMA55
KEYCODE_PERIOD56
KEYCODE_ALT_LEFT57
KEYCODE_ALT_RIGHT58
KEYCODE_SHIFT_LEFT59
KEYCODE_SHIFT_RIGHT60
KEYCODE_TAB61
KEYCODE_SPACE62
KEYCODE_SYM63
KEYCODE_EXPLORER64
KEYCODE_ENVELOPE65
KEYCODE_ENTER66
KEYCODE_DEL67
KEYCODE_GRAVE68
KEYCODE_MINUS69
KEYCODE_EQUALS70
KEYCODE_LEFT_BRACKET71
KEYCODE_RIGHT_BRACKET72
KEYCODE_BACKSLASH73
KEYCODE_SEMICOLON74
KEYCODE_APOSTROPHE75
KEYCODE_SLASH76
KEYCODE_AT77
KEYCODE_NUM78
KEYCODE_HEADSETHOOK79
KEYCODE_FOCUS80
KEYCODE_PLUS81
KEYCODE_MENU82
KEYCODE_NOTIFICATION83
KEYCODE_SEARCH84
KEYCODE_MEDIA_PLAY_PAUSE85
KEYCODE_MEDIA_STOP86
KEYCODE_MEDIA_NEXT87
KEYCODE_MEDIA_PREVIOUS88
KEYCODE_MEDIA_REWIND89
KEYCODE_MEDIA_FAST_FORWARD90
KEYCODE_MUTE91
KEYCODE_PAGE_UP92
KEYCODE_PAGE_DOWN93
KEYCODE_PICTSYMBOLS94
KEYCODE_SWITCH_CHARSET95
KEYCODE_BUTTON_A96
KEYCODE_BUTTON_B97
KEYCODE_BUTTON_C98
KEYCODE_BUTTON_X99
KEYCODE_BUTTON_Y100
KEYCODE_BUTTON_Z101
KEYCODE_BUTTON_L1102
KEYCODE_BUTTON_R1103
KEYCODE_BUTTON_L2104
KEYCODE_BUTTON_R2105
KEYCODE_BUTTON_THUMBL106
KEYCODE_BUTTON_THUMBR107
KEYCODE_BUTTON_START108
KEYCODE_BUTTON_SELECT109
KEYCODE_BUTTON_MODE110
KEYCODE_ESCAPE111
KEYCODE_FORWARD_DEL112
KEYCODE_CTRL_LEFT113
KEYCODE_CTRL_RIGHT114
KEYCODE_CAPS_LOCK115
KEYCODE_SCROLL_LOCK116
KEYCODE_META_LEFT117
KEYCODE_META_RIGHT118
KEYCODE_FUNCTION119
KEYCODE_SYSRQ120
KEYCODE_BREAK121
KEYCODE_MOVE_HOME122
KEYCODE_MOVE_END123
KEYCODE_INSERT124
KEYCODE_FORWARD125
KEYCODE_MEDIA_PLAY126
KEYCODE_MEDIA_PAUSE127
KEYCODE_MEDIA_CLOSE128
KEYCODE_MEDIA_EJECT129
KEYCODE_MEDIA_RECORD130
KEYCODE_F1131
KEYCODE_F2132
KEYCODE_F3133
KEYCODE_F4134
KEYCODE_F5135
KEYCODE_F6136
KEYCODE_F7137
KEYCODE_F8138
KEYCODE_F9139
KEYCODE_F10140
KEYCODE_F11141
KEYCODE_F12142
KEYCODE_NUM_LOCK143
KEYCODE_NUMPAD_0144
KEYCODE_NUMPAD_1145
KEYCODE_NUMPAD_2146
KEYCODE_NUMPAD_3147
KEYCODE_NUMPAD_4148
KEYCODE_NUMPAD_5149
KEYCODE_NUMPAD_6150
KEYCODE_NUMPAD_7151
KEYCODE_NUMPAD_8152
KEYCODE_NUMPAD_9153
KEYCODE_NUMPAD_DIVIDE154
KEYCODE_NUMPAD_MULTIPLY155
KEYCODE_NUMPAD_SUBTRACT156
KEYCODE_NUMPAD_ADD157
KEYCODE_NUMPAD_DOT158
KEYCODE_NUMPAD_COMMA159
KEYCODE_NUMPAD_ENTER160
KEYCODE_NUMPAD_EQUALS161
KEYCODE_NUMPAD_LEFT_PAREN162
KEYCODE_NUMPAD_RIGHT_PAREN163
KEYCODE_VOLUME_MUTE164
KEYCODE_INFO165
KEYCODE_CHANNEL_UP166
KEYCODE_CHANNEL_DOWN167
KEYCODE_ZOOM_IN168
KEYCODE_ZOOM_OUT169
KEYCODE_TV170
KEYCODE_WINDOW171
KEYCODE_GUIDE172
KEYCODE_DVR173
KEYCODE_BOOKMARK174
KEYCODE_CAPTIONS175
KEYCODE_SETTINGS176
KEYCODE_TV_POWER177
KEYCODE_TV_INPUT178
KEYCODE_STB_POWER179
KEYCODE_STB_INPUT180
KEYCODE_AVR_POWER181
KEYCODE_AVR_INPUT182
KEYCODE_PROG_GRED183
KEYCODE_PROG_GREEN184
KEYCODE_PROG_YELLOW185
KEYCODE_PROG_BLUE186
KEYCODE_APP_SWITCH187
KEYCODE_BUTTON_1188
KEYCODE_BUTTON_2189
KEYCODE_BUTTON_3190
KEYCODE_BUTTON_4191
KEYCODE_BUTTON_5192
KEYCODE_BUTTON_6193
KEYCODE_BUTTON_7194
KEYCODE_BUTTON_8195
KEYCODE_BUTTON_9196
KEYCODE_BUTTON_10197
KEYCODE_BUTTON_11198
KEYCODE_BUTTON_12199
KEYCODE_BUTTON_13200
KEYCODE_BUTTON_14201
KEYCODE_BUTTON_15202
KEYCODE_BUTTON_16203
KEYCODE_LANGUAGE_SWITCH204
KEYCODE_MANNER_MODE205
KEYCODE_3D_MODE206
KEYCODE_CONTACTS207
KEYCODE_CALENDAR208
KEYCODE_MUSIC209
KEYCODE_CALCULATOR210
KEYCODE_ZENKAKU_HANKAKU211
KEYCODE_EISU212
KEYCODE_MUHENKAN213
KEYCODE_HENKAN214
KEYCODE_KATAKANA_HIRAGANA215
KEYCODE_YEN216
KEYCODE_RO217
KEYCODE_KANA218
KEYCODE_ASSIST219
KEYCODE_BRIGHTNESS_DOWN220
KEYCODE_BRIGHTNESS_UP221
KEYCODE_MEDIA_AUDIO_TRACK222
+ */ + public static final int keycode=0x010100c5; + /** Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation. + Single-package restore operations will never cause the application to + be shut down. Full-system restore operations typically only occur once, + when the phone is first set up. Third-party applications will not usually + need to use this attribute. + +

The default is true, which means that after the application + has finished processing its data during a full-system restore, it will be + terminated. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int killAfterRestore=0x0101029c; + /** A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. + */ + public static final int label=0x01010001; + /** Specifies the id of a view for which this view serves as a label for + accessibility purposes. For example, a TextView before an EditText in + the UI usually specifies what infomation is contained in the EditText. + Hence, the TextView is a label for the EditText. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int labelFor=0x010103c6; + /** Size of the text for custom keys with some text and no icon. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int labelTextSize=0x01010235; + /** Request that your application's processes be created with + a large Dalvik heap. This applies to all processes + created for the application. It only applies to the first + application loaded into a process; if using a sharedUserId + to allow multiple applications to use a process, they all must + use this option consistently or will get unpredictable results. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largeHeap=0x0101035a; + /** Indicates whether the application supports larger screen form-factors. + A large screen is defined as a screen that is significantly larger + than a normal phone screen, and thus may require some special care + on the application's part to make good use of it. An example would + be a VGA normal density screen, though even larger screens + are certainly possible. An application that does not support + large screens will be placed as a postage stamp on such a + screen, so that it retains the dimensions it was originally + designed for. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largeScreens=0x01010286; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can work well on. If this value is smaller than + the "smallest screen width" of the device it is running on, the + application will be forced in to screen compatibility mode with + no way for the user to turn it off. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for largestWidthLimitDp is larger than 320. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int largestWidthLimitDp=0x01010366; + /** Specify how an activity should be launched. See the + Tasks and Back + Stack document for important information on how these options impact + the behavior of your application. + +

If this attribute is not specified, standard launch + mode will be used. Note that the particular launch behavior can + be changed in some ways at runtime through the + {@link android.content.Intent} flags + {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}, + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and + {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
standard0 The default mode, which will usually create a new instance of + the activity when it is started, though this behavior may change + with the introduction of other options such as + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_NEW_TASK}.
singleTop1 If, when starting the activity, there is already an + instance of the same activity class in the foreground that is + interacting with the user, then + re-use that instance. This existing instance will receive a call to + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with + the new Intent that is being started.
singleTask2 If, when starting the activity, there is already a task running + that starts with this activity, then instead of starting a new + instance the current task is brought to the front. The existing + instance will receive a call to {@link android.app.Activity#onNewIntent + Activity.onNewIntent()} + with the new Intent that is being started, and with the + {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT + Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set. This is a superset + of the singleTop mode, where if there is already an instance + of the activity being started at the top of the stack, it will + receive the Intent as described there (without the + FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set). See the + Tasks and Back + Stack document for more details about tasks.
singleInstance3 Only allow one instance of this activity to ever be + running. This activity gets a unique task with only itself running + in it; if it is ever launched again with the same Intent, then that + task will be brought forward and its + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} + method called. If this + activity tries to start a new activity, that new activity will be + launched in a separate task. See the + Tasks and Back + Stack document for more details about tasks.
+ */ + public static final int launchMode=0x0101001d; + /** Specifies the type of layer backing this view. The default value is none. + Refer to {@link android.view.View#setLayerType(int, android.graphics.Paint)} + for more information. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Don't use a layer.
software1 Use a software layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
hardware2 Use a hardware layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
+ */ + public static final int layerType=0x01010354; + /** Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout=0x010100f2; + /** Defines the layout animation to use the first time the ViewGroup is laid out. + Layout animations can also be started manually after the first layout. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layoutAnimation=0x010100ec; + /** Defines the direction of layout drawing. This typically is associated with writing + direction of the language script used. The possible values are "ltr" for Left-to-Right, + "rtl" for Right-to-Left, "locale" and "inherit" from parent view. If there is nothing + to inherit, "locale" is used. "locale" falls back to "en-US". "ltr" is the direction + used in "en-US". The default for this attribute is "inherit". +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ltr0 Left-to-Right
rtl1 Right-to-Left
inherit2 Inherit from parent
locale3 Locale
+ */ + public static final int layoutDirection=0x010103b2; + /** Defines the layout mode of this ViewGroup. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
clipBounds0 Use the children's clip bounds when laying out this container.
opticalBounds1 Use the children's optical bounds when laying out this container.
+ */ + public static final int layoutMode=0x010103da; + /** Positions the bottom edge of this view above the given anchor view ID. + Accommodates bottom margin of this view and top margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_above=0x01010184; + /** Positions the baseline of this view on the baseline of the given anchor view ID. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignBaseline=0x01010186; + /** Makes the bottom edge of this view match the bottom edge of the given anchor view ID. + Accommodates bottom margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignBottom=0x0101018a; + /** Makes the end edge of this view match the end edge of the given anchor view ID. + Accommodates end margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignEnd=0x010103ba; + /** Makes the left edge of this view match the left edge of the given anchor view ID. + Accommodates left margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignLeft=0x01010187; + /** If true, makes the bottom edge of this view match the bottom edge of the parent. + Accommodates bottom margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentBottom=0x0101018e; + /** If true, makes the end edge of this view match the end edge of the parent. + Accommodates end margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentEnd=0x010103bc; + /** If true, makes the left edge of this view match the left edge of the parent. + Accommodates left margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentLeft=0x0101018b; + /** If true, makes the right edge of this view match the right edge of the parent. + Accommodates right margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentRight=0x0101018d; + /** If true, makes the start edge of this view match the start edge of the parent. + Accommodates start margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentStart=0x010103bb; + /** If true, makes the top edge of this view match the top edge of the parent. + Accommodates top margin. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignParentTop=0x0101018c; + /** Makes the right edge of this view match the right edge of the given anchor view ID. + Accommodates right margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignRight=0x01010189; + /** Makes the start edge of this view match the start edge of the given anchor view ID. + Accommodates start margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignStart=0x010103b9; + /** Makes the top edge of this view match the top edge of the given anchor view ID. + Accommodates top margin. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_alignTop=0x01010188; + /** If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_alignWithParentIfMissing=0x01010192; + /** Positions the top edge of this view below the given anchor view ID. + Accommodates top margin of this view and bottom margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_below=0x01010185; + /** If true, centers this child horizontally within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerHorizontal=0x01010190; + /** If true, centers this child horizontally and vertically within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerInParent=0x0101018f; + /** If true, centers this child vertically within its parent. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_centerVertical=0x01010191; + /** The index of the column in which this child should be. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_column=0x0101014c; + /** The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_columnSpan=0x0101037d; + /** Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int layout_gravity=0x010100b3; + /** Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+ */ + public static final int layout_height=0x010100f5; + /** Specifies extra space on the left, top, right and bottom + sides of this view. This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_margin=0x010100f6; + /** Specifies extra space on the bottom side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginBottom=0x010100fa; + /** Specifies extra space on the end side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginEnd=0x010103b6; + /** Specifies extra space on the left side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginLeft=0x010100f7; + /** Specifies extra space on the right side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginRight=0x010100f9; + /** Specifies extra space on the start side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginStart=0x010103b5; + /** Specifies extra space on the top side of this view. + This space is outside this view's bounds. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_marginTop=0x010100f8; + /** The row boundary delimiting the top of the group of cells + occupied by this view. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_row=0x0101037b; + /** The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_rowSpan=0x0101037c; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_scale=0x01010193; + /** Defines how many columns this child should span. Must be >= 1. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_span=0x0101014d; + /** Positions the start edge of this view to the end of the given anchor view ID. + Accommodates start margin of this view and end margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toEndOf=0x010103b8; + /** Positions the right edge of this view to the left of the given anchor view ID. + Accommodates right margin of this view and left margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toLeftOf=0x01010182; + /** Positions the left edge of this view to the right of the given anchor view ID. + Accommodates left margin of this view and right margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toRightOf=0x01010183; + /** Positions the end edge of this view to the start of the given anchor view ID. + Accommodates end margin of this view and start margin of anchor view. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int layout_toStartOf=0x010103b7; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_weight=0x01010181; + /** Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+ */ + public static final int layout_width=0x010100f4; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_x=0x0101017f; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int layout_y=0x01010180; + /** Amount of left padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int left=0x010101ad; + /** Extra spacing between lines of text. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lineSpacingExtra=0x01010217; + /** Extra spacing between lines of text, as a multiplier. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lineSpacingMultiplier=0x01010218; + /** Makes the TextView be exactly this many lines tall. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int lines=0x01010154; + /** If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int linksClickable=0x010100b1; + /** Drawable used as a background for selected list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceBackgroundIndicator=0x010102f0; + /** Drawable to use for multiple choice indicators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceIndicatorMultiple=0x0101021a; + /** Drawable to use for single choice indicators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listChoiceIndicatorSingle=0x01010219; + /** The drawable for the list divider. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listDivider=0x01010214; + /** The list divider used in alert dialogs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listDividerAlertDialog=0x01010305; + /** Default ListPopupWindow style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listPopupWindowStyle=0x010102ff; + /** The preferred list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeight=0x0101004d; + /** A larger, more robust list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeightLarge=0x01010386; + /** A smaller, sleeker list item height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemHeightSmall=0x01010387; + /** The preferred padding along the end edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingEnd=0x010103be; + /** The preferred padding along the left edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingLeft=0x010103a3; + /** The preferred padding along the right edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingRight=0x010103a4; + /** The preferred padding along the start edge of list items. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int listPreferredItemPaddingStart=0x010103bd; + /** Drawable used to indicate the currently selected item in the list. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int listSelector=0x010100fb; + /** TextView style for list separators. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listSeparatorTextViewStyle=0x01010208; + /** Default ListView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listViewStyle=0x01010074; + /** ListView with white background. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int listViewWhiteStyle=0x01010075; + /** A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int logo=0x010102be; + /** Defines whether this view reacts to long click events. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int longClickable=0x010100e6; + /** Defines whether the animator loops to the first view once it + has reached the end of the list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int loopViews=0x01010307; + /** Name of the activity to be launched to manage application's space on + device. The specified activity gets automatically launched when the + application's space needs to be managed and is usually invoked + through user actions. Applications can thus provide their own custom + behavior for managing space for various scenarios like out of memory + conditions. This is an optional attribute and + applications can choose not to specify a default activity to + manage space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int manageSpaceActivity=0x01010004; + /** Default MapView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int mapViewStyle=0x0101008a; + /** The number of times to repeat the marquee animation. Only applied if the + TextView has marquee enabled. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
marquee_forever-1 Indicates that marquee should repeat indefinitely.
+ */ + public static final int marqueeRepeatLimit=0x0101021d; + /** Defines the maximum value the progress can take. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int max=0x01010136; + /** The maximal date shown by this calendar view in mm/dd/yyyy format. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxDate=0x01010340; + /** Makes the TextView be at most this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxEms=0x01010157; + /** An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxHeight=0x01010120; + /** Defines the maximum number of items per row. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxItemsPerRow=0x01010134; + /** Set an input filter to constrain the text length to the + specified number. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLength=0x01010160; + /** The maximum level allowed for this item. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLevel=0x010101b2; + /** Makes the TextView be at most this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the maxLines attribute to apply. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxLines=0x01010153; + /** Defines the maximum number of rows displayed. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxRows=0x01010133; + /** Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission. When running on a version + of Android higher than the number given here, the permission will not + be requested. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxSdkVersion=0x01010271; + /** An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int maxWidth=0x0101011f; + /** Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring. Defaults to false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int measureAllChildren=0x0101010a; + /** When set to true, all children with a weight will be considered having + the minimum size of the largest child. If false, all children are + measured normally. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int measureWithLargestChild=0x010102d4; + /** Default style for the MediaRouteButton widget. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int mediaRouteButtonStyle=0x010103ad; + /** The types of media routes the button and its resulting + chooser will filter by. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
liveAudio0x1 Allow selection of live audio routes.
user0x800000 Allow selection of user (app-specified) routes.
+ */ + public static final int mediaRouteTypes=0x010103ae; + /** The category applied to all items within this group. + (This will be or'ed with the orderInCategory attribute.) +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+ */ + public static final int menuCategory=0x010101de; + /** Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mimeType=0x01010026; + /** The minimal date shown by this calendar view in mm/dd/yyyy format. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minDate=0x0101033f; + /** Makes the TextView be at least this many ems wide. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minEms=0x0101015a; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minHeight=0x01010140; + /** The minimum level allowed for this item. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minLevel=0x010101b1; + /** Makes the TextView be at least this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the minLines attribute to apply. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minLines=0x01010156; + /** Minimum height that the AppWidget can be resized to. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minResizeHeight=0x01010396; + /** Minimum width that the AppWidget can be resized to. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minResizeWidth=0x01010395; + /** This is the minimum SDK version number that the application + requires. This number is an abstract integer, from the list + in {@link android.os.Build.VERSION_CODES} If + not supplied, the application will work on any SDK. This + may also be string (such as "Donut") if the application was built + against a development branch, in which case it will only work against + the development builds. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minSdkVersion=0x0101020c; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int minWidth=0x0101013f; + /** Enables or disables the mipmap hint. See + {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information. + Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mipMap=0x010103cd; + /** Defines if the associated drawables need to be mirrored when in RTL mode. + Default is false +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int mirrorForRtl=0x010103ce; + /**

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
oneLine1 Always show only the first line.
collapsing2 When selected show both lines, otherwise show only the first line. + This is the default mode.
twoLine3 Always show both lines.
+ */ + public static final int mode=0x0101017e; + /** 'More' icon. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int moreIcon=0x01010135; + /** Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int multiprocess=0x01010013; + /** A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int name=0x01010003; + /** The type of navigation to use. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Normal static title text
listMode1 The action bar will use a selection list for navigation.
tabMode2 The action bar will use a series of horizontal tabs for navigation.
+ */ + public static final int navigationMode=0x010102cf; + /** The negative button text for the dialog. Set to @null to hide the negative button. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int negativeButtonText=0x010101f6; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusDown=0x010100e4; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusForward=0x0101033c; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}. + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusLeft=0x010100e1; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusRight=0x010100e2; + /** Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int nextFocusUp=0x010100e3; + /** Specify whether an activity should be kept in its history stack. + If this attribute is set, then as soon as the user navigates away + from the activity it will be finished and they will no longer be + able to return to it. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int noHistory=0x0101022d; + /** Indicates whether an application supports the normal screen + form-factors. Traditionally this is an HVGA normal density + screen, but WQVGA low density and WVGA high density are also + considered to be normal. This attribute is true by default, + and applications currently should leave it that way. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int normalScreens=0x01010285; + /** The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce. This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int notificationTimeout=0x01010383; + /** Defines how many columns to show. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
auto_fit-1 Display as many columns as possible to fill the available space.
+ */ + public static final int numColumns=0x01010118; + /** The number of stars (or rating items) to show. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int numStars=0x01010144; + /** NumberPicker style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int numberPickerStyle=0x01010403; + /** If set, specifies that this TextView has a numeric input method. + The default is false. + {@deprecated Use inputType instead.} +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
integer0x01 Input is numeric.
signed0x03 Input is numeric, with sign allowed.
decimal0x05 Input is numeric, with decimals allowed.
+ */ + @Deprecated + public static final int numeric=0x01010165; + /** The numeric shortcut key. This is the shortcut when using a numeric (e.g., 12-key) + keyboard. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int numericShortcut=0x010101e4; + /** Name of the method in this View's context to invoke when the view is + clicked. This name must correspond to a public method that takes + exactly one parameter of type View. For instance, if you specify + android:onClick="sayHello", you must declare a + public void sayHello(View v) method of your context + (typically, your Activity). +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int onClick=0x0101026f; + /** If true, the animation will only run a single time and then + stop. If false (the default), it will continually run, + restarting at the first frame after the last has finished. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int oneshot=0x01010197; + /** Indicates the opacity of the layer. This can be useful to allow the + system to enable drawing optimizations. The default value is + translucent. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
opaque-1 Indicates that the layer is opaque and contains no transparent + nor translucent pixels.
transparent-2 The layer is completely transparent (no pixel will be drawn.)
translucent-3 The layer has translucent pixels.
+ */ + public static final int opacity=0x0101031e; + /** The order for the Preference (lower values are to be ordered first). If this is not + specified, the default orderin will be alphabetic. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int order=0x010101ea; + /** The order within the category applied to all items within this group. + (This will be or'ed with the category attribute.) +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int orderInCategory=0x010101df; + /** Name of the property being animated. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child animations should be played together.
sequentially1 child animations should be played sequentially, in the same order as the xml.
+ */ + public static final int ordering=0x010102e2; + /** Whether to order the Preference under this group as they appear in the XML file. + If this is false, the ordering will follow the Preference order attribute and + default to alphabetic for those without the order attribute. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int orderingFromXml=0x010101e7; + /** Standard orientation constant. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+ */ + public static final int orientation=0x010100c4; + /** Identifier for the animation to use when a view is hidden. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int outAnimation=0x01010178; + /** Drawable to draw below list content. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int overScrollFooter=0x010102c3; + /** Drawable to draw above list content. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int overScrollHeader=0x010102c2; + /** Defines over-scrolling behavior. This property is used only if the + View is scrollable. Over-scrolling is the ability for the user to + receive feedback when attempting to scroll beyond meaningful content. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
always0 Always show over-scroll effects, even if the content fits entirely + within the available space.
ifContentScrolls1 Only show over-scroll effects if the content is large + enough to meaningfully scroll.
never2 Never show over-scroll effects.
+ */ + public static final int overScrollMode=0x010102c1; + /** Set true when this subtype should be selected by default if no other subtypes are + selected explicitly. Note that a subtype with this parameter being true will + not be shown in the subtypes list. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int overridesImplicitlyEnabledSubtype=0x010103a2; + /** Comma separated package names from which this serivce would like to receive events (leave out for all packages). + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int packageNames=0x01010381; + /** Sets the padding, in pixels, of all four edges. Padding is defined as + space between the edges of the view and the view's content. A views size + will include it's padding. If a {@link android.R.attr#background} + is provided, the padding will initially be set to that (0 if the + drawable does not have padding). Explicitly setting a padding value + will override the corresponding padding found in the background. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int padding=0x010100d5; + /** Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingBottom=0x010100d9; + /** Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingEnd=0x010103b4; + /** Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingLeft=0x010100d6; + /** Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingRight=0x010100d8; + /** Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingStart=0x010103b3; + /** Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int paddingTop=0x010100d7; + /** The background of a panel when it is inset from the left and right edges of the screen. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelBackground=0x0101005e; + /** Color that matches (as closely as possible) the panel background. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelColorBackground=0x01010061; + /** Default color of foreground panel imagery. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelColorForeground=0x01010060; + /** The background of a panel when it extends to the left and right edges of the screen. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int panelFullBackground=0x0101005f; + /** Default appearance of panel text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int panelTextAppearance=0x01010062; + /** The name of the logical parent of the activity as it appears in the manifest. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int parentActivityName=0x010103a7; + /** Whether the characters of the field are displayed as + password dots instead of themselves. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int password=0x0101015c; + /** Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int path=0x0101002a; + /** Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pathPattern=0x0101002c; + /** Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pathPrefix=0x0101002b; + /** Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int permission=0x01010006; + /** Flags indicating more context for a permission. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
costsMoney0x0001 Set to indicate that this permission allows an operation that + may cost the user money. Such permissions may be highlighted + when shown to the user with this additional information.
+ */ + public static final int permissionFlags=0x010103c7; + /** Specified the name of a group that this permission is associated + with. The group must have been defined with the + {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int permissionGroup=0x0101000a; + /** Flags indicating more context for a permission group. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
personalInfo0x0001 Set to indicate that this permission group contains permissions + protecting access to some information that is considered + personal to the user (such as contacts, e-mails, etc).
+ */ + public static final int permissionGroupFlags=0x010103c5; + /** Flag to control special persistent mode of an application. This should + not normally be used by applications; it requires that the system keep + your application running at all times. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int persistent=0x0101000d; + /** Defines the persistence of the drawing cache. The drawing cache might be + enabled by a ViewGroup for all its children in specific situations (for + instance during a scrolling.) This property lets you persist the cache + in memory after its initial usage. Persisting the cache consumes more + memory but may prevent frequent garbage collection is the cache is created + over and over again. By default the persistence is set to scrolling. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0x0 The drawing cache is not persisted after use.
animation0x1 The drawing cache is persisted after a layout animation.
scrolling0x2 The drawing cache is persisted after a scroll.
all0x3 The drawing cache is always persisted.
+ */ + public static final int persistentDrawingCache=0x010100ee; + /** If set, specifies that this TextView has a phone number input + method. The default is false. + {@deprecated Use inputType instead.} +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int phoneNumber=0x01010167; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pivotX=0x010101b5; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int pivotY=0x010101b6; + /** Reference to the Pointer style +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int pointerStyle=0x01010420; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupAnimationStyle=0x010102c9; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int popupBackground=0x01010176; + /** The characters to display in the popup keyboard. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int popupCharacters=0x01010244; + /** The XML keyboard layout of any popup keyboard. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupKeyboard=0x01010243; + /** Layout resource for popup keyboards. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupLayout=0x0101023b; + /** Default PopupMenu style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupMenuStyle=0x01010300; + /** Default PopupWindow style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int popupWindowStyle=0x01010076; + /** Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. If a host is supplied + but not a port, any port is matched. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int port=0x01010029; + /** The positive button text for the dialog. Set to @null to hide the positive button. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int positiveButtonText=0x010101f5; + /** Default style for PreferenceCategory. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceCategoryStyle=0x0101008c; + /** Preference frame layout styles. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceFrameLayoutStyle=0x0101041e; + /** Default style for informational Preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceInformationStyle=0x0101008d; + /** The preference layout that has the child/tabbed effect. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceLayoutChild=0x01010094; + /** Default style for PreferenceScreen. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceScreenStyle=0x0101008b; + /** Default style for Preference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int preferenceStyle=0x0101008e; + /** Theme to use for presentations spawned from this theme. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int presentationTheme=0x010103c0; + /** A preview of what the AppWidget will look like after it's configured. + If not supplied, the AppWidget's icon will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int previewImage=0x010102da; + /** Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int priority=0x0101001c; + /** An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#privateImeOptions + EditorInfo.privateImeOptions} field when the input + method is connected. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int privateImeOptions=0x01010223; + /** Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int process=0x01010011; + /** Defines the default progress value, between 0 and max. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int progress=0x01010137; + /** Specifies the horizontal padding on either end for an embedded progress bar. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int progressBarPadding=0x01010319; + /** Default ProgressBar style. This is a medium circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyle=0x01010077; + /** Horizontal ProgressBar style. This is a horizontal progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleHorizontal=0x01010078; + /** Inverse ProgressBar style. This is a medium circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleInverse=0x01010287; + /** Large ProgressBar style. This is a large circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleLarge=0x0101007a; + /** Large inverse ProgressBar style. This is a large circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleLargeInverse=0x01010289; + /** Small ProgressBar style. This is a small circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmall=0x01010079; + /** Small inverse ProgressBar style. This is a small circular progress bar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmallInverse=0x01010288; + /** Small ProgressBar in title style. This is a small circular progress bar that will be placed in title bars. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressBarStyleSmallTitle=0x0101020f; + /** Drawable used for the progress mode. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int progressDrawable=0x0101013c; + /** The prompt to display when the spinner's dialog is shown. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int prompt=0x0101017b; + /** Name of the property being animated. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int propertyName=0x010102e1; + /** Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it. {@link + android.Manifest.permission Standard permissions} have a predefined and + permanent protectionLevel. If you are creating a custom permission in an + application, you can define a protectionLevel attribute with one of the + values listed below. If no protectionLevel is defined for a custom + permission, the system assigns the default ("normal"). +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
normal0 A lower-risk permission that gives an application access to isolated + application-level features, with minimal risk to other applications, + the system, or the user. The system automatically grants this type + of permission to a requesting application at installation, without + asking for the user's explicit approval (though the user always + has the option to review these permissions before installing).
dangerous1 A higher-risk permission that would give a requesting application + access to private user data or control over the device that can + negatively impact the user. Because this type of permission + introduces potential risk, the system may not automatically + grant it to the requesting application. For example, any dangerous + permissions requested by an application may be displayed to the + user and require confirmation before proceeding, or some other + approach may be taken to avoid the user automatically allowing + the use of such facilities.
signature2 A permission that the system is to grant only if the requesting + application is signed with the same certificate as the application + that declared the permission. If the certificates match, the system + automatically grants the permission without notifying the user or + asking for the user's explicit approval.
signatureOrSystem3 A permission that the system is to grant only to packages in the + Android system image or that are signed with the same + certificates. Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
system0x10 Additional flag from base permission type: this permission can also + be granted to any applications installed on the system image. + Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission flag is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
development0x20 Additional flag from base permission type: this permission can also + (optionally) be granted to development applications.
+ */ + public static final int protectionLevel=0x01010009; + /** The attribute that holds a Base64-encoded public key. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int publicKey=0x010103a6; + /** If you wish to handle an action key during normal search query entry, you + must define an action string here. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryActionMsg=0x010101db; + /** If provided and true, this searchable activity will be invoked for all + queries in a particular session. If set to false and the activity + returned zero results for a query, it will not be invoked again in that session for + supersets of that zero-results query. For example, if the activity returned zero + results for "bo", it would not be queried again for "bob". + The default value is false. Optional attribute.. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryAfterZeroResults=0x01010282; + /** An optional query hint string to be displayed in the empty query field. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int queryHint=0x01010358; + /** Default quickcontact badge style with large quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowLarge=0x010102b3; + /** Default quickcontact badge style with medium quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowMedium=0x010102b2; + /** Default quickcontact badge style with small quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleSmallWindowSmall=0x010102b1; + /** Default quickcontact badge style with large quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowLarge=0x010102b0; + /** Default quickcontact badge style with medium quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowMedium=0x010102af; + /** Default quickcontact badge style with small quickcontact window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int quickContactBadgeStyleWindowSmall=0x010102ae; + /** Default RadioButton style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int radioButtonStyle=0x0101007e; + /** Defines the radius of the four corners. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int radius=0x010101a8; + /** The rating to set by default. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rating=0x01010145; + /** Default RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyle=0x0101007c; + /** Indicator RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyleIndicator=0x01010210; + /** Small indicator RatingBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ratingBarStyleSmall=0x0101007d; + /** A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int readPermission=0x01010007; + /** Defines how many times the animation should repeat. The default value is 0. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+ */ + public static final int repeatCount=0x010101bf; + /** Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+ */ + public static final int repeatMode=0x010101c0; + /** Application's requirement for five way navigation +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int reqFiveWayNav=0x01010232; + /** Application's requirement for a hard keyboard +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int reqHardKeyboard=0x01010229; + /** The input method preferred by an application. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
nokeys1
qwerty2
twelvekey3
+ */ + public static final int reqKeyboardType=0x01010228; + /** The navigation device preferred by an application. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
undefined0
nonav1
dpad2
trackball3
wheel4
+ */ + public static final int reqNavigation=0x0101022a; + /** The touch screen type used by an application. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
notouch1
stylus2
finger3
+ */ + public static final int reqTouchScreen=0x01010227; + /** Whether the device must be unlocked before routing data to this service. + The default is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requireDeviceUnlock=0x010103ec; + /** Specify whether this feature is required for the application. + The default is true, meaning the application requires the + feature, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + not impose a restriction on where the application can be + installed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int required=0x0101028e; + /** Declare that this application requires an account of a certain + type. The default value is null and indicates that the application can work without + any accounts. The type should correspond to the account authenticator type, such as + "com.google". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiredAccountType=0x010103d6; + /** Flag to specify if this application needs to be present for all users. Only pre-installed + applications can request this feature. Default value is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiredForAllUsers=0x010103d0; + /** Defines which edges should be faded on scrolling. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+ */ + public static final int requiresFadingEdge=0x010103a5; + /** Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with. This attribute provides the required minimum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can run on. For example, a typical phone + screen is 320, a 7" tablet 600, and a 10" tablet 720. If the + smallest screen width of the device is below the value supplied here, + then the application is considered incompatible with that device. + If not supplied, then any old smallScreens, normalScreens, largeScreens, + or xlargeScreens attributes will be used instead. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int requiresSmallestWidthDp=0x01010364; + /** Optional parameter which indicates if and how this widget can be + resized. Supports combined values using | operator. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x0
horizontal0x1
vertical0x2
+ */ + public static final int resizeMode=0x01010363; + /** Indicates whether the application can resize itself to newer + screen sizes. This is mostly used to distinguish between old + applications that may not be compatible with newly introduced + screen sizes and newer applications that should be; it will be + set for you automatically based on whether you are targeting + a newer platform that supports more screens. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int resizeable=0x0101028d; + /** Resource identifier to assign to this piece of named meta-data. + The resource identifier can later be retrieved from the meta data + Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int resource=0x01010025; + /** Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device. Setting + this attribute to true will permit the Backup Manager to + attempt restore even when a version mismatch suggests that the data are + incompatible. Use with caution! + +

The default value of this attribute is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int restoreAnyVersion=0x010102ba; + /** @deprecated This attribute is not used by the Android operating system. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int restoreNeedsApplication=0x0101029d; + /** Declare that this application requires access to restricted accounts of a certain + type. The default value is null and restricted accounts won\'t be visible to this + application. The type should correspond to the account authenticator type, such as + "com.google". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int restrictedAccountType=0x010103d5; + /** Amount of right padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int right=0x010101af; + /** Default style for RingtonePreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int ringtonePreferenceStyle=0x01010093; + /** Which ringtone type(s) to show in the picker. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ringtone1 Ringtones.
notification2 Notification sounds.
alarm4 Alarm sounds.
all7 All available ringtone sounds.
+ */ + public static final int ringtoneType=0x010101f9; + /** rotation of the view, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotation=0x01010326; + /** rotation of the view around the x axis, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotationX=0x01010327; + /** rotation of the view around the y axis, in degrees. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rotationY=0x01010328; + /** The maxmimum number of rows to create when automatically positioning children. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowCount=0x01010375; + /** Fraction of the animation duration used to delay the beginning of + the animation of each row. +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowDelay=0x010101d0; + /** Row edge flags. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
top4 Row is anchored to the top of the keyboard.
bottom8 Row is anchored to the bottom of the keyboard.
+ */ + public static final int rowEdgeFlags=0x01010241; + /** Defines the height of each row. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowHeight=0x01010132; + /** When set to true, forces row boundaries to appear in the same order + as row indices. + The default is true. + See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int rowOrderPreserved=0x01010376; + /** If unset, no state will be saved for this view when it is being + frozen. The default is true, allowing the view to be saved + (however it also must have an ID assigned to it for its + state to be saved). Setting this to false only disables the + state for this view, not for its children which may still + be saved. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int saveEnabled=0x010100e7; + /** Specifies where the drawable is positioned after scaling. The default value is + left. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+ */ + public static final int scaleGravity=0x010101fe; + /** Scale height, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleHeight=0x010101fd; + /** Controls how the image should be resized or moved to match the size + of this ImageView. +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
matrix0
fitXY1
fitStart2
fitCenter3
fitEnd4
center5
centerCrop6
centerInside7
+ */ + public static final int scaleType=0x0101011d; + /** Scale width, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleWidth=0x010101fc; + /** scale of the view in the x direction. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleX=0x01010324; + /** scale of the view in the y direction. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scaleY=0x01010325; + /** Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}. +

Note: scheme matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + schemes here should always use lower case letters.

+

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scheme=0x01010027; + /** Specifies a compatible screen density, as per the device + configuration screen density bins. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ldpi120 A low density screen, approximately 120dpi.
mdpi160 A medium density screen, approximately 160dpi.
hdpi240 A high density screen, approximately 240dpi.
xhdpi320 An extra high density screen, approximately 320dpi.
+ */ + public static final int screenDensity=0x010102cb; + /** Specify the orientation an activity should be run in. If not + specified, it will run in the current preferred orientation + of the screen. +

This attribute is supported by the {@code <activity>} + element. +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
unspecified-1 No preference specified: let the system decide the best + orientation. This will either be the orientation selected + by the activity below, or the user's preferred orientation + if this activity is the bottom of a task. If the user + explicitly turned off sensor based orientation through settings + sensor based device rotation will be ignored. If not by default + sensor based orientation will be taken into account and the + orientation will changed based on how the user rotates the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}.
landscape0 Would like to have the screen in a landscape orientation: that + is, with the display wider than it is tall, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}.
portrait1 Would like to have the screen in a portrait orientation: that + is, with the display taller than it is wide, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}.
user2 Use the user's current preferred orientation of the handset. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}.
behind3 Keep the screen in the same orientation as whatever is behind + this activity. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}.
sensor4 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + Ignores user's setting to turn off sensor-based rotation. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}.
nosensor5 Always ignore orientation determined by orientation sensor: + the display will not rotate when the user moves the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}.
sensorLandscape6 Would like to have the screen in landscape orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}.
sensorPortrait7 Would like to have the screen in portrait orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}.
reverseLandscape8 Would like to have the screen in landscape orientation, turned in + the opposite direction from normal landscape. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}.
reversePortrait9 Would like to have the screen in portrait orientation, turned in + the opposite direction from normal portrait. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}.
fullSensor10 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + This allows any of the 4 possible rotations, regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}.
userLandscape11 Would like to have the screen in landscape orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}.
userPortrait12 Would like to have the screen in portrait orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}.
fullUser13 Respect the user's sensor-based rotation preference, but if + sensor-based rotation is enabled then allow the screen to rotate + in all 4 possible directions regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}.
locked14 Screen is locked to its current rotation, whatever that is. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}.
+ */ + public static final int screenOrientation=0x0101001e; + /** Specifies a compatible screen size, as per the device + configuration screen size bins. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
small200 A small screen configuration, at least 240x320dp.
normal300 A normal screen configuration, at least 320x480dp.
large400 A large screen configuration, at least 400x530dp.
xlarge500 An extra large screen configuration, at least 600x800dp.
+ */ + public static final int screenSize=0x010102ca; + /** Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollHorizontally=0x0101015b; + /** Default ScrollView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollViewStyle=0x01010080; + /** The initial horizontal scroll offset, in pixels. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollX=0x010100d2; + /** The initial vertical scroll offset, in pixels. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollY=0x010100d3; + /** Defines whether the horizontal scrollbar track should always be drawn. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarAlwaysDrawHorizontalTrack=0x01010068; + /** Defines whether the vertical scrollbar track should always be drawn. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarAlwaysDrawVerticalTrack=0x01010069; + /** Defines the delay in milliseconds that a scrollbar waits before fade out. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarDefaultDelayBeforeFade=0x010102a9; + /** Defines the delay in milliseconds that a scrollbar takes to fade out. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarFadeDuration=0x010102a8; + /** Sets the width of vertical scrollbars and height of horizontal scrollbars. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollbarSize=0x01010063; + /** Controls the scrollbar style and position. The scrollbars can be overlaid or + inset. When inset, they add to the padding of the view. And the + scrollbars can be drawn inside the padding area or on the edge of + the view. For example, if a view has a background drawable and you + want to draw the scrollbars inside the padding specified by the + drawable, you can use insideOverlay or insideInset. If you want them + to appear at the edge of the view, ignoring the padding, then you can + use outsideOverlay or outsideInset. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
insideOverlay0x0 Inside the padding and overlaid
insideInset0x01000000 Inside the padding and inset
outsideOverlay0x02000000 Edge of the view and overlaid
outsideInset0x03000000 Edge of the view and inset
+ */ + public static final int scrollbarStyle=0x0101007f; + /** Defines the horizontal scrollbar thumb drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarThumbHorizontal=0x01010064; + /** Defines the vertical scrollbar thumb drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarThumbVertical=0x01010065; + /** Defines the horizontal scrollbar track drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarTrackHorizontal=0x01010066; + /** Defines the vertical scrollbar track drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int scrollbarTrackVertical=0x01010067; + /** Defines which scrollbars should be displayed on scrolling or not. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No scrollbar is displayed.
horizontal0x00000100 Displays horizontal scrollbar only.
vertical0x00000200 Displays vertical scrollbar only.
+ */ + public static final int scrollbars=0x010100de; + /** When set to true, the list uses a drawing cache during scrolling. + This makes the rendering faster but uses more memory. The default + value is true. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int scrollingCache=0x010100fe; + /** If supplied, this string will be displayed as the text of the "Search" button. + Optional attribute. + {@deprecated This will create a non-standard UI appearance, because the search bar UI is + changing to use only icons for its buttons.} +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int searchButtonText=0x01010205; + /** Theme to use for Search Dialogs +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int searchDialogTheme=0x0101041d; + /** Additional features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. Optional attribute. + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
showSearchLabelAsBadge0x04 If set, this flag enables the display of the search target (label) within the + search bar. If neither bad mode is selected, no badge will be shown.
showSearchIconAsBadge0x08This is deprecated.
The default + application icon is now always used, so this option is + obsolete.
queryRewriteFromData0x10 If set, this flag causes the suggestion column SUGGEST_COLUMN_INTENT_DATA to + be considered as the text for suggestion query rewriting. This should only + be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user + inspection and editing - typically, HTTP/HTTPS Uri's.
queryRewriteFromText0x20 If set, this flag causes the suggestion column SUGGEST_COLUMN_TEXT_1 to + be considered as the text for suggestion query rewriting. This should be used + for suggestions in which no query text is provided and the SUGGEST_COLUMN_INTENT_DATA + values are not suitable for user inspection and editing.
+ */ + public static final int searchMode=0x010101d5; + /** If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings. Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSettingsDescription=0x0101028a; + /** If provided, this is the trigger indicating that the searchable activity + provides suggestions as well. The value must be a fully-qualified content provider + authority (e.g. "com.example.android.apis.SuggestionProvider") and should match the + "android:authorities" tag in your content provider's manifest entry. Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestAuthority=0x010101d6; + /** If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestIntentAction=0x010101d9; + /** If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestIntentData=0x010101da; + /** If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path. Optional attribute. + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestPath=0x010101d7; + /** If provided, suggestion queries will be passed into your query function + as the selection parameter. Typically this will be a WHERE clause for your + database, and will contain a single question mark, which represents the actual query + string that has been typed by the user. If not provided, then the user query text + will be appended to the query Uri (after an additional "/".) Optional + attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestSelection=0x010101d8; + /** If provided, this is the minimum number of characters needed to trigger + search suggestions. The default value is 0. Optional attribute. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int searchSuggestThreshold=0x0101026d; + /** SearchView Search icon +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int searchViewSearchIcon=0x01010417; + /** Defines the secondary progress value, between 0 and max. This progress is drawn between + the primary progress and the background. It can be ideal for media scenarios such as + showing the buffering progress while the default progress shows the play progress. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int secondaryProgress=0x01010138; + /** Default SeekBar style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int seekBarStyle=0x0101007b; + /** Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int segmentedButtonStyle=0x01010330; + /** If the text is selectable, select it all when the view takes + focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int selectAllOnFocus=0x0101015e; + /** Whether the Preference is selectable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int selectable=0x010101e6; + /** Background drawable for standalone items that need focus/pressed states. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int selectableItemBackground=0x0101030e; + /** Drawable for the vertical bar shown at the beginning and at the end of the selected date. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int selectedDateVerticalBar=0x01010347; + /** The background color for the selected week. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int selectedWeekBackgroundColor=0x01010342; + /** Component name of an activity that allows the user to modify + the settings for this service. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int settingsActivity=0x01010225; + /** Place a shadow of the specified color behind the text. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowColor=0x01010161; + /** Horizontal offset of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowDx=0x01010162; + /** Vertical offset of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowDy=0x01010163; + /** Radius of the shadow. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shadowRadius=0x01010164; + /** Indicates what shape to fill with a gradient. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
rectangle0 Rectangle shape, with optional rounder corners.
oval1 Oval shape.
line2 Line shape.
ring3 Ring shape.
+ */ + public static final int shape=0x0101019a; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shareInterpolator=0x010101bb; + /** Specify the name of a user ID that will be shared between multiple + packages. By default, each package gets its own unique user-id. + By setting this value on two or more packages, each of these packages + will be given a single shared user ID, so they can for example run + in the same process. Note that for them to actually get the same + user ID, they must also be signed with the same signature. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sharedUserId=0x0101000b; + /** Specify a label for the shared user UID of this package. This is + only used if you have also used android:sharedUserId. This must + be a reference to a string resource; it can not be an explicit + string. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int sharedUserLabel=0x01010261; + /** Whether the view of this Preference should be disabled when + this Preference is disabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shouldDisableView=0x010101ee; + /** How this item should display in the Action Bar, if present. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
never0 Never show this item in an action bar, show it in the overflow menu instead. + Mutually exclusive with "ifRoom" and "always".
ifRoom1 Show this item in an action bar if there is room for it as determined + by the system. Favor this option over "always" where possible. + Mutually exclusive with "never" and "always".
always2 Always show this item in an actionbar, even if it would override + the system's limits of how much stuff to put there. This may make + your action bar look bad on some screens. In most cases you should + use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never".
withText4 When this item is shown as an action in the action bar, show a text + label with it even if it has an icon representation.
collapseActionView8 This item's action view collapses to a normal menu + item. When expanded, the action view takes over a + larger segment of its container.
+ */ + public static final int showAsAction=0x010102d9; + /** Whether to show an item for a default sound. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showDefault=0x010101fa; + /** Setting for which dividers to show. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0
beginning1
middle2
end4
+ */ + public static final int showDividers=0x01010329; + /** Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showOnLockScreen=0x010103c9; + /** Whether to show an item for 'Silent'. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showSilent=0x010101fb; + /** Whether do show week numbers. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int showWeekNumber=0x0101033e; + /** The number of weeks to be shown. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shownWeekCount=0x01010341; + /** The zero-based index of the columns to shrink. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can shrink all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int shrinkColumns=0x0101014a; + /** Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key. + + The default value is false (multi-line wrapped text mode) for non-editable text, but if + you specify any value for inputType, the default is true (single-line input field mode). + + {@deprecated This attribute is deprecated. Use maxLines instead to change + the layout of a static text, and use the textMultiLine flag in the + inputType attribute instead for editable text views (if both singleLine and inputType + are supplied, the inputType flags will override the value of singleLine). } +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int singleLine=0x0101015d; + /** If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int singleUser=0x010103bf; + /** Smaller icon of the authenticator. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int smallIcon=0x0101029e; + /** Indicates whether the application supports smaller screen form-factors. + A small screen is defined as one with a smaller aspect ratio than + the traditional HVGA screen; that is, for a portrait screen, less + tall than an HVGA screen. In practice, this means a QVGA low + density or VGA high density screen. An application that does + not support small screens will not be available for + small screen devices, since there is little the platform can do + to make such an application work on a smaller screen. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int smallScreens=0x01010284; + /** When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen. This + property is set to true by default but should be set to false if your adapter + will display items of varying heights. When this property is set to true and + your adapter displays items of varying heights, the scrollbar thumb will + change size as the user scrolls through the list. When set to fale, the list + will use only the number of items in the adapter and the number of items visible + on screen to determine the scrollbar's properties. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int smoothScrollbar=0x01010231; + /** @hide Color for the solid color background if such for optimized rendering. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int solidColor=0x0101034a; + /** Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int soundEffectsEnabled=0x01010215; + /**

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int spacing=0x01010113; + /** Default style for spinner drop down items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerDropDownItemStyle=0x01010087; + /** Default spinner item style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerItemStyle=0x01010089; + /** Display mode for spinner options. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
dialog0 Spinner options will be presented to the user as a dialog window.
dropdown1 Spinner options will be presented to the user as an inline dropdown + anchored to the spinner widget itself.
+ */ + public static final int spinnerMode=0x010102f1; + /** Default Spinner style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int spinnerStyle=0x01010081; + /** Whether the spinners are shown. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int spinnersShown=0x0101034b; + /** Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch. + If false (default), touch events will be dispatched to + the child view where the first pointer went down until + the last pointer goes up. + If true, touch events may be dispatched to multiple children. + MotionEvents for each pointer will be dispatched to the child + view where the initial ACTION_DOWN event happened. + See {@link android.view.ViewGroup#setMotionEventSplittingEnabled(boolean)} + for more information. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int splitMotionEvents=0x010102ef; + /** Sets a drawable as the content of this ImageView. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int src=0x01010119; + /** Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int ssp=0x010103e3; + /** Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sspPattern=0x010103e5; + /** Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int sspPrefix=0x010103e4; + /** Used by ListView and GridView to stack their content from the bottom. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stackFromBottom=0x010100fd; + /** Default StackView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int stackViewStyle=0x01010402; + /** Default Star style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int starStyle=0x01010082; + /** Start color of the gradient. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startColor=0x0101019d; + /** Delay in milliseconds before the transition starts. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startDelay=0x010103e2; + /** Delay in milliseconds before the animation runs, once start time is reached. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int startOffset=0x010101be; + /** {@deprecated Use minDate instead.} + The first year (inclusive), for example "1940". + {@deprecated Use minDate instead.} + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + @Deprecated + public static final int startYear=0x0101017c; + /** Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted. Generally you use this for activities + that do not store any state. When this flag is set, if for some reason + the activity is killed before it has a chance to save its state, + then the system will not remove it from the activity stack like + it normally would. Instead, the next time the user navigates to + it its {@link android.app.Activity#onCreate} method will be called + with a null icicle, just like it was starting for the first time. + +

This is used by the Home activity to make sure it does not get + removed if it crashes for some reason. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stateNotNeeded=0x01010016; + /** State identifier indicating the popup will be above the anchor. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_above_anchor=0x010100aa; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_accelerated=0x0101031b; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_activated=0x010102fe; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_active=0x010100a2; + /** State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_checkable=0x0101009f; + /** State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_checked=0x010100a0; + /** State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_drag_can_accept=0x01010368; + /** State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_drag_hovered=0x01010369; + /** State identifier indicating the group is empty (has no children). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_empty=0x010100a9; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_enabled=0x0101009e; + /** State identifier indicating the group is expanded. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_expanded=0x010100a8; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_first=0x010100a4; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_focused=0x0101009c; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_hovered=0x01010367; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_last=0x010100a6; + /** State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_long_pressable=0x0101023c; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_middle=0x010100a5; + /** State identifier indicating a TextView has a multi-line layout. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_multiline=0x0101034d; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_pressed=0x010100a7; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_selected=0x010100a1; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_single=0x010100a3; + /** State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int state_window_focused=0x0101009d; + /** A resource id of a static drawable. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int staticWallpaperPreview=0x01010331; + /** The step size of the rating. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stepSize=0x01010146; + /** If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application. The default is false. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stopWithTask=0x0101036a; + /** Different audio stream types. +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
voice0
system1
ring2
music3
alarm4
+ */ + public static final int streamType=0x01010209; + /** The zero-based index of the columns to stretch. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can stretch all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int stretchColumns=0x01010149; + /** Defines how columns should stretch to fill the available empty space, if any. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Stretching is disabled.
spacingWidth1 The spacing between each column is stretched.
columnWidth2 Each column is stretched equally.
spacingWidthUniform3 The spacing between each column is uniformly stretched..
+ */ + public static final int stretchMode=0x01010116; + /** Specifies subtitle text used for navigationMode="normal" +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtitle=0x010102d1; + /** Specifies a style to use for subtitle text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int subtitleTextStyle=0x010102f9; + /** The extra value of the subtype. This string can be any string and will be passed to + the SpellChecker. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeExtraValue=0x0101039a; + /** The unique id for the subtype. The input method framework keeps track of enabled + subtypes by ID. When the IME package gets upgraded, enabled IDs will stay enabled even + if other attributes are different. If the ID is unspecified (by calling the other + constructor or 0. Arrays.hashCode(new Object[] {locale, mode, extraValue, + isAuxiliary, overridesImplicitlyEnabledSubtype}) will be used instead. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeId=0x010103c1; + /** The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + This is also used by the framework to know the supported locales + of the spell checker. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int subtypeLocale=0x01010399; + /** If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this. If all of your suggestions + can handle the action key, you can simply define the action message using this + attribute. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int suggestActionMsg=0x010101dc; + /** If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis. + First, you must define a column (and name it here) where your suggestions will include + the action string. Then, in your content provider, you must provide this column, and + when desired, provide data in this column. + The search manager will look at your suggestion cursor, using the string + provided here in order to select a column, and will use that to select a string from + the cursor. That string will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to + your searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra + getStringExtra(SearchManager.ACTION_MSG)}. If the data does not exist for the + selection suggestion, the action key will be ignored.Optional attribute. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int suggestActionMsgColumn=0x010101dd; + /** The summary for the item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summary=0x010101e9; + /** Column in data table that summarizes this data. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryColumn=0x010102a2; + /** The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryOff=0x010101f0; + /** The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int summaryOn=0x010101ef; + /** Declare that your application will be able to deal with RTL (right to left) layouts. + If set to false (default value), your application will not care about RTL layouts. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsRtl=0x010103af; + /** Set to true if this input method supports ways to switch to + a next input method (e.g. a globe key.). When this is true and + InputMethodManager#shouldOfferSwitchingToNextInputMethod() returns true, + the IME has to offer ways to to invoke InputMethodManager#switchToNextInputMethod() + accordingly. +

Note that the system determines the most appropriate next input method + and subtype in order to provide the consistent user experience in switching + between IMEs and subtypes. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsSwitchingToNextInputMethod=0x010103eb; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int supportsUploading=0x0101029b; + /** Minimum width for the switch component +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchMinWidth=0x01010370; + /** Minimum space between the switch and caption text +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchPadding=0x01010371; + /** Default style for switch preferences. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int switchPreferenceStyle=0x0101036d; + /** Default style for the Switch widget. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int switchStyle=0x0101041f; + /** TextAppearance style for text displayed on the switch thumb. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int switchTextAppearance=0x0101036e; + /** The text used on the switch itself when in the "off" state. + This should be a very SHORT string, as it appears in a small space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchTextOff=0x0101036c; + /** The text used on the switch itself when in the "on" state. + This should be a very SHORT string, as it appears in a small space. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int switchTextOn=0x0101036b; + /** Flag indicating whether this content provider would like to + participate in data synchronization. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int syncable=0x01010019; + /** Determines whether the strip under the tab indicators is drawn or not. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tabStripEnabled=0x010102bd; + /** Drawable used to draw the left part of the strip underneath the tabs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabStripLeft=0x010102bb; + /** Drawable used to draw the right part of the strip underneath the tabs. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabStripRight=0x010102bc; + /** Default TabWidget style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int tabWidgetStyle=0x01010083; + /** Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tag=0x010100d1; + /** The name of the activity this alias should launch. The activity + must be in the same manifest as the alias, and have been defined + in that manifest before the alias here. This must use a Java-style + naming convention to ensure the name is unique, for example + "com.mycompany.MyName". +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetActivity=0x01010202; + /** The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetClass=0x0101002f; + /** Reference to an array resource that be used as description for the targets around the circle. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int targetDescriptions=0x010103a0; + /** The id of a target on which this transition will animate changes. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int targetId=0x010103dc; + /** The name of the application package that an Instrumentation object + will run against. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetPackage=0x01010021; + /** This is the SDK version number that the application is targeting. + It is able to run on older versions (down to minSdkVersion), but + was explicitly tested to work with the version specified here. + Specifying this version allows the platform to disable compatibility + code that are not required or enable newer features that are not + available to older applications. This may also be a string + (such as "Donut") if this is built against a development + branch, in which case minSdkVersion is also forced to be that + string. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int targetSdkVersion=0x01010270; + /** Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int taskAffinity=0x01010012; + /** When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskCloseEnterAnimation=0x010100be; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskCloseExitAnimation=0x010100bf; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskOpenEnterAnimation=0x010100bc; + /** When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskOpenExitAnimation=0x010100bd; + /** When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToBackEnterAnimation=0x010100c2; + /** When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToBackExitAnimation=0x010100c3; + /** When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToFrontEnterAnimation=0x010100c0; + /** When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int taskToFrontExitAnimation=0x010100c1; + /** This is the amount of tension. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tension=0x0101026a; + /** Option to indicate this application is only for testing purposes. + For example, it may expose functionality or data outside of itself + that would cause a security hole, but is useful for testing. This + kind of application can not be installed without the + INSTALL_ALLOW_TEST flag, which means only through adb install. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int testOnly=0x01010272; + /** Text to display. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int text=0x0101014f; + /** Defines the alignment of the text. A heuristic is used to determine the resolved + text alignment. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
inherit0 Default
gravity1 Default for the root view. The gravity determines the alignment, ALIGN_NORMAL, + ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s + text direction
textStart2 Align to the start of the paragraph, e.g. ALIGN_NORMAL.
textEnd3 Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.
center4 Center the paragraph, e.g. ALIGN_CENTER.
viewStart5 Align to the start of the view, which is ALIGN_LEFT if the view’s resolved + layoutDirection is LTR, and ALIGN_RIGHT otherwise.
viewEnd6 Align to the end of the view, which is ALIGN_RIGHT if the view’s resolved + layoutDirection is LTR, and ALIGN_LEFT otherwise
+ */ + public static final int textAlignment=0x010103b1; + /** Present the text in ALL CAPS. This may use a small-caps form when available. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textAllCaps=0x0101038c; + /** Default appearance of text: color, typeface, size, and style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearance=0x01010034; + /** The underline color and thickness for auto correction suggestion +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceAutoCorrectionSuggestion=0x010103f3; + /** Text color, typeface, size, and style for the text inside of a button. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceButton=0x01010207; + /** The underline color and thickness for easy correct suggestion +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceEasyCorrectSuggestion=0x010103c3; + /** Default appearance of text against an inverted background: + color, typeface, size, and style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceInverse=0x01010035; + /** Text color, typeface, size, and style for "large" text. Defaults to primary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLarge=0x01010040; + /** Text color, typeface, size, and style for "large" inverse text. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLargeInverse=0x01010043; + /** Text color, typeface, size, and style for the text inside of a popup menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceLargePopupMenu=0x01010301; + /** The preferred TextAppearance for the primary text of list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceListItem=0x0101039e; + /** The preferred TextAppearance for the primary text of small list items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceListItemSmall=0x0101039f; + /** Text color, typeface, size, and style for "medium" text. Defaults to primary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceMedium=0x01010041; + /** Text color, typeface, size, and style for "medium" inverse text. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceMediumInverse=0x01010044; + /** The underline color and thickness for misspelled suggestion +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceMisspelledSuggestion=0x010103f2; + /** Text color, typeface, size, and style for system search result subtitle. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSearchResultSubtitle=0x010102a0; + /** Text color, typeface, size, and style for system search result title. Defaults to primary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSearchResultTitle=0x010102a1; + /** Text color, typeface, size, and style for "small" text. Defaults to secondary text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmall=0x01010042; + /** Text color, typeface, size, and style for "small" inverse text. Defaults to secondary inverse text color. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmallInverse=0x01010045; + /** Text color, typeface, size, and style for small text inside of a popup menu. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textAppearanceSmallPopupMenu=0x01010302; + /** Drawable to use for check marks. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCheckMark=0x01010046; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCheckMarkInverse=0x01010047; + /** Color of text (usually same as colorForeground). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColor=0x01010098; + /** Color of list item text in alert dialogs. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorAlertDialogListItem=0x01010306; + /** Color of highlighted text. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHighlight=0x01010099; + /** Color of highlighted text, when used in a light theme. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHighlightInverse=0x0101034f; + /** Color of hint text (displayed when the field is empty). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHint=0x0101009a; + /** Inverse hint text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorHintInverse=0x0101003f; + /** Color of link text (URLs). +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorLink=0x0101009b; + /** Color of link text (URLs), when used in a light theme. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorLinkInverse=0x01010350; + /** The most prominent text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimary=0x01010036; + /** Bright text color. Only differentiates based on the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryDisableOnly=0x01010037; + /** Primary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverse=0x01010039; + /** Bright inverse text color. Only differentiates based on the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverseDisableOnly=0x0101028b; + /** Bright inverse text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryInverseNoDisable=0x0101003d; + /** Bright text color. This does not differentiate the disabled state. As an example, + buttons use this since they display the disabled state via the background and not the + foreground text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorPrimaryNoDisable=0x0101003b; + /** Text color for urls in search suggestions, used by things like global search and the browser. @hide +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSearchUrl=0x01010267; + /** Secondary text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondary=0x01010038; + /** Secondary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryInverse=0x0101003a; + /** Dim inverse text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryInverseNoDisable=0x0101003e; + /** Dim text color. This does not differentiate the disabled state. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorSecondaryNoDisable=0x0101003c; + /** Tertiary text color. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorTertiary=0x01010212; + /** Tertiary inverse text color, useful for inverted backgrounds. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int textColorTertiaryInverse=0x01010213; + /** Reference to a drawable that will be drawn under the insertion cursor. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textCursorDrawable=0x01010362; + /** Defines the direction of the text. A heuristic is used to determine the resolved text + direction of paragraphs. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
inherit0 Default
firstStrong1 Default for the root view. The first strong directional character determines the + paragraph direction. If there is no strong directional character, the paragraph + direction is the view’s resolved layout direction.
anyRtl2 The paragraph direction is RTL if it contains any strong RTL character, otherwise + it is LTR if it contains any strong LTR characters. If there are neither, the + paragraph direction is the view’s resolved layout direction.
ltr3 The paragraph direction is left to right.
rtl4 The paragraph direction is right to left.
locale5 The paragraph direction is coming from the system Locale.
+ */ + public static final int textDirection=0x010103b0; + /** Variation of textEditPasteWindowLayout displayed when the clipboard is empty. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditNoPasteWindowLayout=0x01010315; + /** The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditPasteWindowLayout=0x01010314; + /** Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSideNoPasteWindowLayout=0x0101035f; + /** Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSidePasteWindowLayout=0x0101035e; + /** Layout of the TextView item that will populate the suggestion popup window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textEditSuggestionItemLayout=0x01010374; + /** When set to true, the list will filter results as the user types. The + List's adapter must support the Filterable interface for this to work. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textFilterEnabled=0x010100ff; + /** Indicates that the content of a non-editable TextView can be selected. + Default value is false. EditText content is always selectable. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textIsSelectable=0x01010316; + /** The text for the button when it is not checked. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textOff=0x01010125; + /** The text for the button when it is checked. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textOn=0x01010124; + /** Sets the horizontal scaling factor for the text. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textScaleX=0x01010151; + /** Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandle=0x010102c7; + /** Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleLeft=0x010102c5; + /** Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleRight=0x010102c6; + /** Reference to a style that will be used for the window containing a text + selection anchor. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSelectHandleWindowStyle=0x010102c8; + /** Size of text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + Supported values include the following:

+

    +
  • px Pixels
  • +
  • sp Scaled pixels (scaled to relative pixel size on screen). See {@link android.util.DisplayMetrics} for more information.
  • +
  • pt Points
  • +
  • dip Device independent pixels. See {@link android.util.DisplayMetrics} for more information.
  • +
+ +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int textSize=0x01010095; + /** Default text typeface style. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+ */ + public static final int textStyle=0x01010097; + /** Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textSuggestionsWindowStyle=0x01010373; + /** Default TextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int textViewStyle=0x01010084; + /** The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int theme=0x01010000; + /** Thickness of the ring. When defined, thicknessRatio is ignored. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thickness=0x01010260; + /** Thickness of the ring expressed as a ratio of the ring's width. For instance, + if thicknessRatio=3, then the thickness equals the ring's width divided by 3. + This value is ignored if innerRadius is defined. Default value is 3. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thicknessRatio=0x0101019c; + /** Draws the thumb on a seekbar. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int thumb=0x01010142; + /** An offset for the thumb that allows it to extend out of the range of the track. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thumbOffset=0x01010143; + /** Amount of padding on either side of text within the switch thumb. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int thumbTextPadding=0x01010372; + /** Reference to a the wallpaper's thumbnail bitmap. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int thumbnail=0x010102a5; + /** Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. + Gravity is ignored when the tile mode is enabled. Default value is "disabled". +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
disabled-1 Do not tile the bitmap. This is the default value.
clamp0 Replicates the edge color.
repeat1 Repeats the bitmap in both direction.
mirror2 Repeats the shader's image horizontally and vertically, alternating + mirror images so that adjacent images always seam.
+ */ + public static final int tileMode=0x01010201; + /** The TimePicker style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int timePickerStyle=0x01010404; + /** Specifies the time zone to use. When this attribute is specified, the + TextClock will ignore the time zone of the system. To use the user's + time zone, do not specify this attribute. The default value is the + user's time zone. Please refer to {@link java.util.TimeZone} for more + information about time zone ids. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int timeZone=0x010103cc; + /** Set a tinting color for the image. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int tint=0x01010121; + /** The title associated with the item. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int title=0x010101e1; + /** The condensed title associated with the item. This is used in situations where the + normal title may be too long to be displayed. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int titleCondensed=0x010101e2; + /** Specifies a style to use for title text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int titleTextStyle=0x010102f8; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toAlpha=0x010101cb; + /**

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toDegrees=0x010101b4; + /** The destination scene in this scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int toScene=0x010103de; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toXDelta=0x010101c7; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toXScale=0x010101c3; + /**

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toYDelta=0x010101c9; + /**

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int toYScale=0x010101c5; + /** Amount of top padding inside the gradient shape. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int top=0x010101ae; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int topBright=0x010100cb; + /**

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int topDark=0x010100c7; + /** Radius of the top left corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topLeftRadius=0x010101a9; + /** Extra offset for the handle at the top of the SlidingDrawer. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topOffset=0x01010258; + /** Radius of the top right corner. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int topRightRadius=0x010101aa; + /** Drawable to use as the "track" that the switch thumb slides within. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int track=0x0101036f; + /** Sets the transcript mode for the list. In transcript mode, the list + scrolls to the bottom to make new items visible when they are added. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
disabled0 Disables transcript mode. This is the default value.
normal1 The list will automatically scroll to the bottom when + a data set change notification is received and only if the last item is + already visible on screen.
alwaysScroll2 The list will automatically scroll to the bottom, no matter what items + are currently visible.
+ */ + public static final int transcriptMode=0x01010100; + /** x location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotX property of the View. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int transformPivotX=0x01010320; + /** y location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotY property of the View. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int transformPivotY=0x01010321; + /** The id of a transition to be used in a particular scene change. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int transition=0x010103df; + /**

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child transitions should be played together.
sequential1 child transitions should be played sequentially, in the same order + as the xml.
+ */ + public static final int transitionOrdering=0x010103e0; + /** translation in x of the view. This value is added post-layout to the left + property of the view, which is set by its layout. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int translationX=0x01010322; + /** translation in y of the view. This value is added post-layout to the left + property of the view, which is set by its layout. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int translationY=0x01010323; + /** Type of gradient. The default type is linear. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
linear0 Linear gradient.
radial1 Radial, or circular, gradient.
sweep2 Sweep, or angled or diamond, gradient.
+ */ + public static final int type=0x010101a1; + /** Default text typeface. +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+ */ + public static final int typeface=0x01010096; + /** Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+ */ + public static final int uiOptions=0x01010398; + /** Color used to draw the user's strokes until we are sure it's a gesture. +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int uncertainGestureColor=0x01010276; + /** The color for the dates of an unfocused month. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int unfocusedMonthDateColor=0x01010344; + /** Sets the alpha on the items that are not selected. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int unselectedAlpha=0x0101020e; + /** Update period in milliseconds, or 0 if the AppWidget will update itself. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int updatePeriodMillis=0x01010250; + /** When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters. + The default value is false. + See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useDefaultMargins=0x01010379; + /** Use the drawable's intrinsic width and height as minimum size values. + Useful if the target drawable is a 9-patch or otherwise should not be scaled + down beyond a minimum size. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useIntrinsicSizeAsMinimum=0x01010310; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int useLevel=0x0101019f; + /**

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int userVisible=0x01010291; + /** Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int value=0x01010024; + /** Value the animation starts from. +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int valueFrom=0x010102de; + /** Value the animation animates to. +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int valueTo=0x010102df; + /** The type of valueFrom and valueTo. +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floatType0 valueFrom and valueTo are floats. This is the default value is valueType is + unspecified. Note that if either valueFrom or valueTo represent colors + (beginning with "#"), then this attribute is ignored and the color values are + interpreted as integers.
intType1 valueFrom and valueTo are integers.
+ */ + public static final int valueType=0x010102e0; + /** If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int variablePadding=0x01010195; + /** The vendor name if this print service is vendor specific. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int vendor=0x010103e7; + /** Internal version code. This is the number used to determine whether + one version is more recent than another: it has no other meaning than + that higher numbers are more recent. You could use this number to + encode a "x.y" in the lower and upper 16 bits, make it a build + number, simply increase it by one each time a new version is + released, or define it however else you want, as long as each + successive version has a higher number. This is not a version + number generally shown to the user, that is usually supplied + with {@link android.R.attr#versionName}. +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int versionCode=0x0101021b; + /** The text shown to the user to indicate the version they have. This + is used for no other purpose than display to the user; the actual + significant version number is given by {@link android.R.attr#versionCode}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int versionName=0x0101021c; + /** Amount to offset the touch Y coordinate by, for bias correction. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalCorrection=0x0101023a; + /** Default vertical divider between menu items. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int verticalDivider=0x0101012e; + /** Default vertical gap between rows of keys. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalGap=0x01010240; + /** Determines which side the vertical scroll bar should be placed on. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
defaultPosition0 Place the scroll bar wherever the system default determines.
left1 Place the scroll bar on the left.
right2 Place the scroll bar on the right.
+ */ + public static final int verticalScrollbarPosition=0x01010334; + /** Defines the default vertical spacing between rows. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int verticalSpacing=0x01010115; + /** Controls the initial visibility of the view. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
visible0 Visible on screen; the default value.
invisible1 Not displayed, but taken into account during layout (space is left for it).
gone2 Completely hidden, as if the view had not been added.
+ */ + public static final int visibility=0x010100dc; + /** Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int visible=0x01010194; + /** Flag indicating whether the application requests the VM to operate in + the safe mode. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int vmSafeMode=0x010102b8; + /** If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceLanguage=0x01010255; + /** If provided, this specifies the language model that should be used by the + voice recognition system. See + {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL } for more information. + If not provided, the default value + {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM } will be used. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceLanguageModel=0x01010253; + /** If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query. Must be one + or greater. If not provided, the recognizer will choose how many results to return. + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voiceMaxResults=0x01010256; + /** If provided, this specifies a prompt that will be displayed during voice input. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int voicePromptText=0x01010254; + /** Voice search features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. + If showVoiceSearchButton is set, then launchWebSearch or launchRecognizer must + also be set. Optional attribute. + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
showVoiceSearchButton0x01 If set, display a voice search button. This only takes effect if voice search is + available on the device.
launchWebSearch0x02 If set, the voice search button will take the user directly to a built-in + voice web search activity. Most applications will not use this flag, as it + will take the user away from the activity in which search was invoked.
launchRecognizer0x04 If set, the voice search button will take the user directly to a built-in + voice recording activity. This activity will prompt the user to speak, + transcribe the spoken text, and forward the resulting query + text to the searchable activity, just as if the user had typed it into + the search UI and clicked the search button.
+ */ + public static final int voiceSearchMode=0x01010252; + /** When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperCloseEnterAnimation=0x01010295; + /** When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperCloseExitAnimation=0x01010296; + /** When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraCloseEnterAnimation=0x01010299; + /** When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraCloseExitAnimation=0x0101029a; + /** When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraOpenEnterAnimation=0x01010297; + /** When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperIntraOpenExitAnimation=0x01010298; + /** When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperOpenEnterAnimation=0x01010293; + /** When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen). +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int wallpaperOpenExitAnimation=0x01010294; + /** Default WebTextView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webTextViewStyle=0x010102b9; + /** Default WebView style. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webViewStyle=0x01010085; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webviewchromium_select_dialog_multichoice=0x01010481; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int webviewchromium_select_dialog_singlechoice=0x01010482; + /** The text appearance for the week day abbreviation of the calendar header. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int weekDayTextAppearance=0x01010348; + /** The color for the week numbers. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int weekNumberColor=0x01010345; + /** The color for the separator line between weeks. +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + */ + public static final int weekSeparatorLineColor=0x01010346; + /** Defines the maximum weight sum. If unspecified, the sum is computed + by adding the layout_weight of all of the children. This can be + used for instance to give a single child 50% of the total available + space by giving it a layout_weight of 0.5 and setting the weightSum + to 1.0. +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int weightSum=0x01010128; + /** Optional parameter which indicates where this widget can be shown, + ie. home screen, keyguard or both. + resized. Supports combined values using | operator. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
home_screen0x1
keyguard0x2
+ */ + public static final int widgetCategory=0x010103c4; + /** The layout for the controllable widget portion of a Preference. This is inflated + into the layout for a Preference and should be used more frequently than + the layout attribute. For example, a checkbox preference would specify + a custom layout (consisting of just the CheckBox) here. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int widgetLayout=0x010101eb; + /** Makes the TextView be exactly this many pixels wide. + You could get the same effect by specifying this number in the + layout parameters. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int width=0x01010159; + /** Flag indicating whether this window should have an Action Bar + in place of the usual title bar. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionBar=0x010102cd; + /** Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionBarOverlay=0x010102e4; + /** Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowActionModeOverlay=0x010102dd; + /** Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowAnimationStyle=0x010100ae; + /** Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowBackground=0x01010054; + /** Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowCloseOnTouchOutside=0x0101035b; + /** This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowContentOverlay=0x01010059; + /** Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowDisablePreview=0x01010222; + /** Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowEnableSplitTouch=0x01010317; + /** The animation used when a window is being added. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowEnterAnimation=0x010100b4; + /** The animation used when a window is being removed. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowExitAnimation=0x010100b5; + /** A fixed height for the window along the major axis of the screen, + that is, when in portrait. Can be either an absolute dimension + or a fraction of the screen size in that dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFixedHeightMajor=0x01010427; + /** A fixed height for the window along the minor axis of the screen, + that is, when in landscape. Can be either an absolute dimension + or a fraction of the screen size in that dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFixedHeightMinor=0x01010425; + /** A fixed width for the window along the major axis of the screen, + that is, when in landscape. Can be either an absolute dimension + or a fraction of the screen size in that dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFixedWidthMajor=0x01010424; + /** A fixed width for the window along the minor axis of the screen, + that is, when in portrait. Can be either an absolute dimension + or a fraction of the screen size in that dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFixedWidthMinor=0x01010426; + /** Drawable to use as a frame around the window. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowFrame=0x01010055; + /** Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowFullscreen=0x0101020d; + /** The animation used when a window is going from VISIBLE to INVISIBLE. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowHideAnimation=0x010100b7; + /** Flag indicating whether this is a floating window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowIsFloating=0x01010057; + /** Flag indicating whether this is a translucent window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowIsTranslucent=0x01010058; + /** The minimum width the window is allowed to be, along the major + axis of the screen. That is, when in landscape. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowMinWidthMajor=0x01010356; + /** The minimum width the window is allowed to be, along the minor + axis of the screen. That is, when in portrait. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowMinWidthMinor=0x01010357; + /** Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowNoDisplay=0x0101021e; + /** Flag indicating whether there should be no title on this window. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowNoTitle=0x01010056; + /** Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowOverscan=0x010103cf; + /** The animation used when a window is going from INVISIBLE to VISIBLE. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowShowAnimation=0x010100b6; + /** Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowShowWallpaper=0x01010292; + /** Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+ */ + public static final int windowSoftInputMode=0x0101022b; + /** The style resource to use for a window's title area. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowTitleBackgroundStyle=0x0101005c; + /** The style resource to use for a window's title bar height. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTitleSize=0x0101005a; + /** The style resource to use for a window's title text. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int windowTitleStyle=0x0101005b; + /** Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTranslucentNavigation=0x010103f0; + /** Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int windowTranslucentStatus=0x010103ef; + /** A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int writePermission=0x01010008; + /** A coordinate in the X dimension. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int x=0x010100ac; + /** Indicates whether the application supports extra large screen form-factors. +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int xlargeScreens=0x010102bf; + /** A coordinate in the Y dimension. +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + */ + public static final int y=0x010100ad; + /** Default style for YesNoPreference. +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int yesNoPreferenceStyle=0x01010090; + /** Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation. The default value is normal. +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 The content being animated be kept in its current Z order.
top1 The content being animated is forced on top of all other + content for the duration of the animation.
bottom-1 The content being animated is forced under all other + content for the duration of the animation.
+ */ + public static final int zAdjustment=0x010101c1; + } + public static final class bool { + public static final int action_bar_embed_tabs=0x01110004; + public static final int action_bar_embed_tabs_pre_jb=0x01110005; + public static final int action_bar_expanded_action_views_exclusive=0x01110009; + /** Whether action menu items should obey the "withText" showAsAction + flag. This may be set to false for situations where space is + extremely limited. + */ + public static final int config_allowActionMenuItemTextWithIcon=0x01110046; + /** If true, the screen can be rotated via the accelerometer in all 4 + rotations as the default behavior. + If true, the screen can be rotated via the accelerometer in all 4 + rotations as the default behavior. + */ + public static final int config_allowAllRotations=0x0111001e; + /** Set to true if the RSSI should always display CDMA signal strength even on EVDO + */ + public static final int config_alwaysUseCdmaRssi=0x01110042; + /** If this is true, the screen will fade off. + */ + public static final int config_animateScreenLights=0x0111001c; + /** Don't name config resources like this. It should look like config_annoyDianne + */ + public static final int config_annoy_dianne=0x0111001a; + /** Flag indicating whether the we should enable the automatic brightness in Settings. + Software implementation will be used if config_hardware_auto_brightness_available is not set + */ + public static final int config_automatic_brightness_available=0x01110019; + /** Device configuration indicating whether we should avoid using accelerated graphics + in certain places to reduce RAM footprint. This is ignored if ro.config.low_ram + is true (in that case this is assumed true as well). It can allow you to tune down + your device's memory use without going to the point of causing applications to turn + off features. + */ + public static final int config_avoidGfxAccel=0x01110015; + /** Boolean indicating if current platform need do one-time bluetooth address + re-validation + */ + public static final int config_bluetooth_address_validation=0x01110036; + /** Enable/disable default bluetooth profiles: + HSP_AG, ObexObjectPush, Audio, NAP + */ + public static final int config_bluetooth_default_profiles=0x0111003a; + /** Boolean indicating if current platform supports BLE peripheral mode + */ + public static final int config_bluetooth_le_peripheral_mode_supported=0x01110037; + /** Boolean indicating if current platform supports bluetooth SCO for off call + use cases + */ + public static final int config_bluetooth_sco_off_call=0x01110034; + /** Enables built-in SIP phone capability + */ + public static final int config_built_in_sip_phone=0x0111003c; + /** Whether camera shutter sound is forced or not (country specific). + Whether camera shutter sound is forced or not (country specific). + Whether camera shutter sound is forced or not (country specific). + */ + public static final int config_camera_sound_forced=0x01110052; + /** Control whether being in the car dock should enable accelerometer based + screen orientation. This defaults to true because putting a device in + a car dock make the accelerometer more a physical input (like a lid). + */ + public static final int config_carDockEnablesAccelerometer=0x01110021; + /** Set to true to add links to Cell Broadcast app from Settings and MMS app. + */ + public static final int config_cellBroadcastAppLinks=0x0111004c; + /** Control whether being in the desk dock should enable accelerometer + based screen orientation. This defaults to true because it is + common for desk docks to be sold in a variety of form factors + with different orientations. Since we cannot always tell these docks + apart and the docks cannot report their true orientation on their own, + we rely on gravity to determine the effective orientation. + */ + public static final int config_deskDockEnablesAccelerometer=0x01110020; + /** Allow the menu hard key to be disabled in LockScreen on some devices + */ + public static final int config_disableMenuKeyInLockScreen=0x01110027; + /** Set to true if we need to not prefer an APN. + This is being added to enable a simple scenario of pre-paid + provisioning on some carriers, working around a bug (7305641) + where if the preferred is used we don't try the others. + */ + public static final int config_dontPreferApn=0x01110053; + /** If supported and enabled, are dreams activated when docked? (by default) + */ + public static final int config_dreamsActivatedOnDockByDefault=0x0111004a; + /** If supported and enabled, are dreams activated when asleep and charging? (by default) + */ + public static final int config_dreamsActivatedOnSleepByDefault=0x0111004b; + /** If supported, are dreams enabled? (by default) + */ + public static final int config_dreamsEnabledByDefault=0x01110049; + /** Is the dreams feature supported? + */ + public static final int config_dreamsSupported=0x01110048; + /** If this value is true, duplicate Source/Destination port fields + in WDP header of some carriers OMADM wap push are supported. + ex: MSGTYPE-TotalSegments-CurrentSegment + -SourcePortDestPort-SourcePortDestPort-OMADM PDU + If false, not supported. + */ + public static final int config_duplicate_port_omadm_wappush=0x01110043; + /** Whether to enable fused location provider overlay which allows fused + location provider to be replaced by an app at run-time. When disabled, + only the config_fusedLocationProviderPackageName package will be + searched for fused location provider, otherwise packages whose + signature matches the signatures of config_locationProviderPackageNames + will be searched, and the service with the highest version number will + be picked. Anyone who wants to disable the overlay mechanism can set it + to false. + + */ + public static final int config_enableFusedLocationOverlay=0x01110031; + /** Whether to enable geocoder overlay which allows geocoder to be replaced + by an app at run-time. When disabled, only the + config_geocoderProviderPackageName package will be searched for + geocoder, otherwise packages whose signature matches the signatures of + config_locationProviderPackageNames will be searched, and the service + with the highest version number will be picked. Anyone who wants to + disable the overlay mechanism can set it to false. + + */ + public static final int config_enableGeocoderOverlay=0x01110032; + /** Whether to enable geofence overlay which allows geofence to be replaced + by an app at run-time. When disabled, only the + config_geofenceProviderPackageName package will be searched for + geofence implementation, otherwise packages whose signature matches the + signatures of config_locationProviderPackageNames will be searched, and + the service with the highest version number will be picked. Anyone who + wants to disable the overlay mechanism can set it to false. + + */ + public static final int config_enableGeofenceOverlay=0x01110033; + /** Don't show lock screen before unlock screen (PIN/pattern/password) + */ + public static final int config_enableLockBeforeUnlockScreen=0x01110028; + /** Disable lockscreen rotation by default + Enable lockscreen rotation + */ + public static final int config_enableLockScreenRotation=0x01110029; + /** Enable lockscreen translucent decor by default + */ + public static final int config_enableLockScreenTranslucentDecor=0x0111002a; + /** Whether to enable network location overlay which allows network + location provider to be replaced by an app at run-time. When disabled, + only the config_networkLocationProviderPackageName package will be + searched for network location provider, otherwise packages whose + signature matches the signatures of config_locationProviderPackageNames + will be searched, and the service with the highest version number will + be picked. Anyone who wants to disable the overlay mechanism can set it + to false. + + */ + public static final int config_enableNetworkLocationOverlay=0x01110030; + /** If this is true, key chords can be used to take a screenshot on the device. + */ + public static final int config_enableScreenshotChord=0x0111001d; + /** Enable translucent decor by default + */ + public static final int config_enableTranslucentDecor=0x0111002b; + /** True if WallpaperService is enabled + */ + public static final int config_enableWallpaperService=0x0111002f; + /** Whether WiFi display is supported by this device. + There are many prerequisites for this feature to work correctly. + Here are a few of them: + * The WiFi radio must support WiFi P2P. + * The WiFi radio must support concurrent connections to the WiFi display and + to an access point. + * The Audio Flinger audio_policy.conf file must specify a rule for the "r_submix" + remote submix module. This module is used to record and stream system + audio output to the WiFi display encoder in the media server. + * The remote submix module "audio.r_submix.default" must be installed on the device. + * The device must be provisioned with HDCP keys (for protected content). + + */ + public static final int config_enableWifiDisplay=0x0111004e; + /** Enable emergency call when sim is locked or puk locked. Some countries/carriers do not + allow emergency calls to be placed without the IMSI, which is locked in the SIM. + If so, this should be set to 'false' in an overlay. + */ + public static final int config_enable_emergency_call_while_sim_locked=0x0111002d; + /** Enable puk unlockscreen by default. + If unlock screen is disabled, the puk should be unlocked through Emergency Dialer + */ + public static final int config_enable_puk_unlock_screen=0x0111002c; + /** Flag indicating that this device does not rotate and will always remain in its default + orientation. Activities that desire to run in a non-compatible orientation will be run + from an emulated display within the physical display. + */ + public static final int config_forceDefaultOrientation=0x01110057; + /** Is the notification LED intrusive? Used to decide if there should be a disable option + */ + public static final int config_intrusiveNotificationLed=0x01110026; + /** Indicate whether closing the lid causes the device to go to sleep and opening + it causes the device to wake up. + The default is false. + */ + public static final int config_lidControlsSleep=0x01110022; + /** If this value is true, The mms content-disposition field is supported correctly. + If false, Content-disposition fragments are ignored + */ + public static final int config_mms_content_disposition_support=0x01110041; + /** Set to true if after a provisioning apn the radio should be restarted + */ + public static final int config_restartRadioAfterProvisioning=0x01110054; + /** If true, the direction rotation is applied to get to an application's requested + orientation is reversed. Normally, the model is that landscape is + clockwise from portrait; thus on a portrait device an app requesting + landscape will cause a clockwise rotation, and on a landscape device an + app requesting portrait will cause a counter-clockwise rotation. Setting + true here reverses that logic. + */ + public static final int config_reverseDefaultRotation=0x0111001f; + /** Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + Whether safe headphone volume is enabled or not (country specific). + */ + public static final int config_safe_media_volume_enabled=0x01110050; + /** Flag indicating whether the AUDIO_BECOMING_NOISY notification should + be sent during a change to the audio output device. + */ + public static final int config_sendAudioBecomingNoisy=0x01110012; + /** Flag indicating whether the surface flinger has limited + alpha compositing functionality in hardware. If set, the window + manager will disable alpha trasformation in animations where not + strictly needed. + */ + public static final int config_sf_limitedAlpha=0x0111000d; + /** Flag indicating whether the surface flinger is inefficient + at performing a blur. Used by parts of the UI to turn off + the blur effect where it isn't worth the performance hit. + As of Honeycomb, blurring is not supported anymore. + */ + public static final int config_sf_slowBlur=0x0111000f; + /** Sets whether menu shortcuts should be displayed on panel menus when + a keyboard is present. + */ + public static final int config_showMenuShortcutsWhenKeyboardPresent=0x0111003e; + /** Whether a software navigation bar should be shown. NOTE: in the future this may be + autodetected from the Configuration. + */ + public static final int config_showNavigationBar=0x01110044; + /** Enables SIP on WIFI only + */ + public static final int config_sip_wifi_only=0x0111003b; + /** Flag indicating whether the current device allows sms service. + If true, this means that the device supports both sending and + receiving sms via the telephony network. + This can be overridden to false for "data only" devices + which can't send and receive sms message. + + Note: Disable SMS also disable voicemail waiting sms, + cell broadcasting sms, and MMS. + */ + public static final int config_sms_capable=0x01110039; + /** If this value is true, Sms encoded as octet is decoded by utf8 decoder. + If false, decoded by Latin decoder. + */ + public static final int config_sms_utf8_support=0x01110040; + /** Flag indicating if the speed up audio on mt call code should be executed + */ + public static final int config_speed_up_audio_on_mt_calls=0x01110055; + /** set to false if we need to show user confirmation + when alpha identifier is not provided by the UICC + */ + public static final int config_stkNoAlphaUsrCnf=0x01110058; + /** Indicate whether to allow the device to suspend when the screen is off + due to the proximity sensor. This resource should only be set to true + if the sensor HAL correctly handles the proximity sensor as a wake-up source. + Otherwise, the device may fail to wake out of suspend reliably. + The default is false. + */ + public static final int config_suspendWhenScreenOffDueToProximity=0x01110023; + /** Enables swipe versus poly-finger touch disambiguation in the KeyboardView + */ + public static final int config_swipeDisambiguation=0x0111002e; + /** The default value if the SyncStorageEngine should sync automatically or not + */ + public static final int config_syncstorageengine_masterSyncAutomatically=0x0111004d; + /** The VoiceMail default value is displayed to my own number if it is true + */ + public static final int config_telephony_use_own_number_for_voicemail=0x0111003f; + /** Enables or disables fading edges when marquee is enabled in TextView. + */ + public static final int config_ui_enableFadingMarquee=0x01110013; + /** XXXXXX END OF RESOURCES USING WRONG NAMING CONVENTION + If this is true, the screen will come on when you unplug usb/power/whatever. + */ + public static final int config_unplugTurnsOnScreen=0x0111001b; + /** When true use the linux /dev/input/event subsystem to detect the switch changes + on the headphone/microphone jack. When false use the older uevent framework. + */ + public static final int config_useDevInputEventForAudioJack=0x0111004f; + /** Flag indicating that the media framework should not allow changes or mute on any + stream or master volumes. + */ + public static final int config_useFixedVolume=0x01110056; + /** Flag indicating that the media framework should allow changing + master volume stream and nothing else . + */ + public static final int config_useMasterVolume=0x01110010; + /** Flag indicating that the media framework should support playing of sounds on volume + key usage. This adds noticeable additional overhead to volume key processing, so + is disableable for products for which it is irrelevant. + */ + public static final int config_useVolumeKeySounds=0x01110011; + public static final int config_use_strict_phone_number_comparation=0x01110025; + /** Flag indicating whether the current device is "voice capable". + If true, this means that the device supports circuit-switched + (i.e. voice) phone calls over the telephony network, and is + allowed to display the in-call UI while a cellular voice call is + active. This can be overridden to false for "data only" devices + which can't make voice calls and don't support any in-call UI. + + Note: this flag is subtly different from the + PackageManager.FEATURE_TELEPHONY system feature, which is + available on *any* device with a telephony radio, even if the + device is data-only. + */ + public static final int config_voice_capable=0x01110038; + /** Set to true if the wifi display supports compositing content stored + in gralloc protected buffers. For this to be true, there must exist + a protected hardware path for surface flinger to composite and send + protected buffers to the wifi display video encoder. + + If this flag is false, we advise applications not to use protected + buffers (if possible) when presenting content to a wifi display because + the content may be blanked. + + This flag controls whether the {@link Display#FLAG_SUPPORTS_PROTECTED_BUFFERS} + flag is set for wifi displays. + + */ + public static final int config_wifiDisplaySupportsProtectedBuffers=0x01110051; + /** Boolean indicating whether the wifi chipset supports background scanning mechanism. + This mechanism allows the host to remain in suspend state and the dongle to actively + scan and wake the host when a configured SSID is detected by the dongle. This chipset + capability can provide power savings when wifi needs to be always kept on. + */ + public static final int config_wifi_background_scan_support=0x01110017; + /** Wifi driver supports batched scan + */ + public static final int config_wifi_batched_scan_supported=0x01110018; + /** Boolean indicating whether the wifi chipset has dual frequency band support + */ + public static final int config_wifi_dual_band_support=0x01110016; + /** Set and Unsets WiMAX + */ + public static final int config_wimaxEnabled=0x01110047; + public static final int preferences_prefer_dual_pane=0x01110007; + public static final int show_ongoing_ime_switcher=0x01110008; + /** Boolean indicating if restoring network selection should be skipped + The restoring is handled by modem if it is true + */ + public static final int skip_restoring_network_selection=0x0111003d; + public static final int split_action_bar_is_narrow=0x01110006; + public static final int target_honeycomb_needs_options_menu=0x0111000a; + } + public static final class color { + public static final int background_dark=0x0106000e; + public static final int background_light=0x0106000f; + public static final int black=0x0106000c; + /** Default color for notification LED. + */ + public static final int config_defaultNotificationColor=0x0106006f; + public static final int darker_gray=0x01060000; + /** A really bright Holo shade of blue + */ + public static final int holo_blue_bright=0x0106001b; + /** A dark Holo shade of blue + */ + public static final int holo_blue_dark=0x01060013; + /** A light Holo shade of blue + */ + public static final int holo_blue_light=0x01060012; + /** A dark Holo shade of green + */ + public static final int holo_green_dark=0x01060015; + /** A light Holo shade of green + */ + public static final int holo_green_light=0x01060014; + /** A dark Holo shade of orange + */ + public static final int holo_orange_dark=0x01060019; + /** A light Holo shade of orange + */ + public static final int holo_orange_light=0x01060018; + /** A Holo shade of purple + */ + public static final int holo_purple=0x0106001a; + /** A dark Holo shade of red + */ + public static final int holo_red_dark=0x01060017; + /** A light Holo shade of red + */ + public static final int holo_red_light=0x01060016; + public static final int input_method_navigation_guard=0x01060032; + public static final int primary_text_dark=0x01060001; + public static final int primary_text_dark_nodisable=0x01060002; + public static final int primary_text_light=0x01060003; + public static final int primary_text_light_nodisable=0x01060004; + public static final int secondary_text_dark=0x01060005; + public static final int secondary_text_dark_nodisable=0x01060006; + public static final int secondary_text_light=0x01060007; + public static final int secondary_text_light_nodisable=0x01060008; + public static final int tab_indicator_text=0x01060009; + public static final int tab_indicator_text_v4=0x01060085; + public static final int tertiary_text_dark=0x01060010; + public static final int tertiary_text_light=0x01060011; + public static final int transparent=0x0106000d; + public static final int webviewchromium_autofill_dark_divider_color=0x01060073; + public static final int webviewchromium_autofill_divider_color=0x01060072; + public static final int webviewchromium_color_picker_background_color=0x01060071; + public static final int webviewchromium_color_picker_border_color=0x01060070; + public static final int white=0x0106000b; + public static final int widget_edittext_dark=0x0106000a; + } + public static final class dimen { + /** Touch slop for the global toggle accessibility gesture + */ + public static final int accessibility_touch_slop=0x0105006d; + /** Maximum height for a stacked tab bar as part of an action bar + */ + public static final int action_bar_stacked_max_height=0x01050055; + /** Maximum width for a stacked action bar tab. This prevents + action bar tabs from becoming too wide on a wide screen when only + a few are present. + */ + public static final int action_bar_stacked_tab_max_width=0x01050056; + /** The standard size (both width and height) of an application icon that + will be displayed in the app launcher and elsewhere. + */ + public static final int app_icon_size=0x01050000; + /** Minimum span needed to begin a touch scaling gesture. + If the span is equal to or greater than this size, a scaling gesture + will begin, where supported. (See android.view.ScaleGestureDetector) + + This also takes into account the size of any active touch points. + Devices with screens that deviate too far from their assigned density + bucket should consider tuning this value in a device-specific overlay. + For best results, care should be taken such that this value remains + larger than the minimum reported touchMajor/touchMinor values + reported by the hardware. + Use a larger scaling span for larger screen devices. + */ + public static final int config_minScalingSpan=0x01050009; + /** Minimum accepted value for touchMajor while scaling. This may be tuned + per-device in overlays. + */ + public static final int config_minScalingTouchMajor=0x0105000a; + /** The maximum width we would prefer dialogs to be. 0 if there is no + maximum (let them grow as large as the screen). Actual values are + specified for -large and -xlarge configurations. + see comment in values/config.xml + see comment in values/config.xml + */ + public static final int config_prefDialogWidth=0x01050007; + /** Base "touch slop" value used by ViewConfiguration as a + movement threshold where scrolling should begin. + */ + public static final int config_viewConfigurationTouchSlop=0x01050008; + public static final int default_app_widget_padding_bottom=0x01050053; + /** Default padding to apply to AppWidgetHostViews containing widgets targeting API level 14 and up. + insideOverlay + Default padding to apply to AppWidgetHostViews containing widgets targeting API level 14 and up. + */ + public static final int default_app_widget_padding_left=0x01050050; + public static final int default_app_widget_padding_right=0x01050052; + public static final int default_app_widget_padding_top=0x01050051; + /** The default gap between components in a layout. + */ + public static final int default_gap=0x0105004a; + /** The platform's desired minimum size for a dialog's width when it + is along the major axis (that is the screen is landscape). This may + be either a fraction or a dimension. + */ + public static final int dialog_min_width_major=0x01050003; + /** The platform's desired minimum size for a dialog's width when it + is along the minor axis (that is the screen is portrait). This may + be either a fraction or a dimension. + */ + public static final int dialog_min_width_minor=0x01050004; + /** Width of the icon in a dropdown list + */ + public static final int dropdownitem_icon_width=0x0105004d; + /** Text padding for dropdown items + */ + public static final int dropdownitem_text_padding_left=0x0105004b; + /** Padding of the fastscroll overlay + */ + public static final int fastscroll_overlay_padding=0x01050017; + /** Minimum size of the fastscroll overlay + */ + public static final int fastscroll_overlay_size=0x01050015; + /** Text size of the fastscroll overlay + */ + public static final int fastscroll_overlay_text_size=0x01050016; + /** Height of the fastscroll thumb + */ + public static final int fastscroll_thumb_height=0x01050019; + /** Width of the fastscroll thumb + */ + public static final int fastscroll_thumb_width=0x01050018; + /** width of ImmersiveModeConfirmation (-1 for match_parent) + width of ImmersiveModeConfirmation (-1 for match_parent) + width of ImmersiveModeConfirmation (-1 for match_parent) + */ + public static final int immersive_mode_cling_width=0x0105007d; + /** Height of the bottom navigation / system bar. + */ + public static final int navigation_bar_height=0x0105000d; + /** Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height + */ + public static final int navigation_bar_height_landscape=0x0105000e; + /** Width of the navigation bar when it is placed vertically on the screen + */ + public static final int navigation_bar_width=0x0105000f; + /** The width of the big icons in notifications. + */ + public static final int notification_large_icon_height=0x01050006; + /** The width of the big icons in notifications. + */ + public static final int notification_large_icon_width=0x01050005; + /** Size of smaller notification text (see TextAppearance.StatusBar.EventContent.Line2, Info, Time) + */ + public static final int notification_subtext_size=0x01050059; + /** Size of notification text (see TextAppearance.StatusBar.EventContent) + */ + public static final int notification_text_size=0x01050057; + /** Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) + */ + public static final int notification_title_text_size=0x01050058; + /** Default correction for the space key in the password keyboard (used by keyguard) + Default correction for the space key in the password keyboard + */ + public static final int password_keyboard_spacebar_vertical_correction=0x0105001d; + /** Preference fragment padding, bottom + Preference fragment padding, bottom + Preference fragment padding, bottom + */ + public static final int preference_fragment_padding_bottom=0x0105002a; + /** Preference fragment padding, sides + Preference fragment padding, sides + Preference fragment padding, sides + Preference fragment padding, sides + Preference fragment padding, sides + */ + public static final int preference_fragment_padding_side=0x0105002b; + /** Preferred width of the search view. + */ + public static final int search_view_preferred_width=0x01050039; + /** Height of the status bar + */ + public static final int status_bar_height=0x0105000c; + /** Height of notification icons in the status bar + */ + public static final int status_bar_icon_size=0x01050010; + /** Rounded corner radius for video subtitles. + */ + public static final int subtitle_corner_radius=0x01050079; + /** Outline width for video subtitles. + */ + public static final int subtitle_outline_width=0x0105007c; + /** Shadow offset for video subtitles. + */ + public static final int subtitle_shadow_offset=0x0105007b; + /** Shadow radius for video subtitles. + */ + public static final int subtitle_shadow_radius=0x0105007a; + /** Height of notification icons in the system bar + */ + public static final int system_bar_icon_size=0x01050013; + /** Default width for a textview error popup + */ + public static final int textview_error_popup_default_width=0x0105004e; + /** The height that is used when creating thumbnails of applications. + The height that is used when creating thumbnails of applications. + The height that is used when creating thumbnails of applications. + */ + public static final int thumbnail_height=0x01050001; + /** The width that is used when creating thumbnails of applications. + The width that is used when creating thumbnails of applications. + The width that is used when creating thumbnails of applications. + */ + public static final int thumbnail_width=0x01050002; + public static final int toast_y_offset=0x0105000b; + /** Volume panel y offset + */ + public static final int volume_panel_top=0x0105004f; + public static final int webviewchromium_autofill_text_divider_height=0x01050087; + public static final int webviewchromium_autofill_text_height=0x01050086; + /** + 14.5 = Seekbar thumb width - border width, but it depends on the width + of the seek bar icon. + + */ + public static final int webviewchromium_color_button_height=0x01050084; + public static final int webviewchromium_color_picker_gradient_margin=0x01050085; + /** Link Preview dimensions + */ + public static final int webviewchromium_link_preview_overlay_radius=0x01050083; + } + public static final class drawable { + public static final int alert_dark_frame=0x01080000; + public static final int alert_light_frame=0x01080001; + public static final int arrow_down_float=0x01080002; + public static final int arrow_up_float=0x01080003; + public static final int bottom_bar=0x0108009a; + public static final int btn_check_off=0x010800de; + public static final int btn_code_lock_default_holo=0x01080112; + public static final int btn_code_lock_touched_holo=0x01080114; + public static final int btn_default=0x01080004; + public static final int btn_default_small=0x01080005; + public static final int btn_dialog=0x01080017; + public static final int btn_dropdown=0x01080006; + public static final int btn_minus=0x01080007; + public static final int btn_plus=0x01080008; + public static final int btn_radio=0x01080009; + public static final int btn_star=0x0108000a; + public static final int btn_star_big_off=0x0108000b; + public static final int btn_star_big_on=0x0108000c; + public static final int button_onoff_indicator_off=0x0108000e; + public static final int button_onoff_indicator_on=0x0108000d; + public static final int call_contact=0x0108020c; + public static final int checkbox_off_background=0x0108000f; + public static final int checkbox_on_background=0x01080010; + public static final int cling_arrow_up=0x0108020d; + public static final int cling_bg=0x0108020e; + public static final int cling_button=0x0108020f; + public static final int clock_dial=0x01080212; + public static final int clock_hand_hour=0x01080213; + public static final int clock_hand_minute=0x01080214; + public static final int compass_arrow=0x0108021a; + public static final int compass_base=0x0108021b; + public static final int create_contact=0x0108021d; + /** Drawable to use as a background for separators on a list with a dark background + */ + public static final int dark_header=0x010800a5; + public static final int default_wallpaper=0x01080220; + public static final int dialog_frame=0x01080011; + public static final int dialog_holo_dark_frame=0x010800b2; + public static final int dialog_holo_light_frame=0x010800b3; + public static final int divider_horizontal_bright=0x01080012; + public static final int divider_horizontal_dark=0x01080014; + public static final int divider_horizontal_dim_dark=0x01080015; + public static final int divider_horizontal_textfield=0x01080013; + public static final int edit_text=0x01080016; + public static final int editbox_background=0x01080018; + public static final int editbox_background_normal=0x01080019; + public static final int editbox_dropdown_dark_frame=0x0108001a; + public static final int editbox_dropdown_light_frame=0x0108001b; + public static final int emo_im_angel=0x0108025c; + public static final int emo_im_cool=0x0108025d; + public static final int emo_im_crying=0x0108025e; + public static final int emo_im_embarrassed=0x0108025f; + public static final int emo_im_foot_in_mouth=0x01080260; + public static final int emo_im_happy=0x01080261; + public static final int emo_im_kissing=0x01080262; + public static final int emo_im_laughing=0x01080263; + public static final int emo_im_lips_are_sealed=0x01080264; + public static final int emo_im_money_mouth=0x01080265; + public static final int emo_im_sad=0x01080266; + public static final int emo_im_surprised=0x01080267; + public static final int emo_im_tongue_sticking_out=0x01080268; + public static final int emo_im_undecided=0x01080269; + public static final int emo_im_winking=0x0108026a; + public static final int emo_im_wtf=0x0108026b; + public static final int emo_im_yelling=0x0108026c; + public static final int expander_close_holo_dark=0x0108026d; + public static final int expander_ic_maximized=0x01080272; + public static final int expander_ic_minimized=0x01080273; + public static final int expander_open_holo_dark=0x01080274; + public static final int gallery_thumb=0x0108001c; + public static final int ic_action_assist_generic=0x01080298; + public static final int ic_audio_alarm=0x0108029c; + public static final int ic_audio_alarm_mute=0x0108029d; + public static final int ic_audio_bt=0x0108029e; + public static final int ic_audio_bt_mute=0x0108029f; + public static final int ic_audio_notification=0x010802a0; + public static final int ic_audio_notification_mute=0x010802a2; + public static final int ic_audio_phone=0x010802a4; + public static final int ic_audio_ring_notif=0x010802a6; + public static final int ic_audio_ring_notif_mute=0x010802a8; + public static final int ic_audio_ring_notif_vibrate=0x010802aa; + public static final int ic_audio_vol=0x010802ac; + public static final int ic_audio_vol_mute=0x010802ae; + public static final int ic_btn_speak_now=0x010800a4; + public static final int ic_bullet_key_permission=0x010802ba; + public static final int ic_contact_picture=0x010802ca; + public static final int ic_delete=0x0108001d; + public static final int ic_dialog_alert=0x01080027; + public static final int ic_dialog_dialer=0x01080028; + public static final int ic_dialog_email=0x01080029; + public static final int ic_dialog_info=0x0108009b; + public static final int ic_dialog_map=0x0108002a; + public static final int ic_dialog_usb=0x010802d7; + public static final int ic_emergency=0x010802d8; + public static final int ic_grayedout_printer=0x010802df; + public static final int ic_input_add=0x0108002b; + public static final int ic_input_delete=0x0108002c; + public static final int ic_input_get=0x0108002d; + public static final int ic_jog_dial_sound_off=0x010802e4; + public static final int ic_jog_dial_sound_on=0x010802e5; + public static final int ic_jog_dial_unlock=0x010802e6; + public static final int ic_jog_dial_vibrate_on=0x010802e7; + public static final int ic_lock_airplane_mode=0x010802e9; + public static final int ic_lock_airplane_mode_off=0x010802ea; + public static final int ic_lock_idle_alarm=0x0108002e; + public static final int ic_lock_idle_charging=0x0108001e; + public static final int ic_lock_idle_lock=0x0108001f; + public static final int ic_lock_idle_low_battery=0x01080020; + public static final int ic_lock_lock=0x0108002f; + public static final int ic_lock_power_off=0x01080030; + public static final int ic_lock_silent_mode=0x01080031; + public static final int ic_lock_silent_mode_off=0x01080032; + public static final int ic_maps_indicator_current_position_anim=0x01080318; + public static final int ic_media_ff=0x01080021; + public static final int ic_media_next=0x01080022; + public static final int ic_media_pause=0x01080023; + public static final int ic_media_play=0x01080024; + public static final int ic_media_previous=0x01080025; + public static final int ic_media_rew=0x01080026; + public static final int ic_media_route_connecting_holo_dark=0x0108031e; + public static final int ic_media_route_disabled_holo_dark=0x01080320; + public static final int ic_media_route_off_holo_dark=0x01080324; + public static final int ic_media_route_on_holo_dark=0x0108032c; + public static final int ic_media_stop=0x0108032e; + public static final int ic_media_video_poster=0x0108032f; + public static final int ic_menu_add=0x01080033; + public static final int ic_menu_agenda=0x01080034; + public static final int ic_menu_always_landscape_portrait=0x01080035; + public static final int ic_menu_archive=0x01080332; + public static final int ic_menu_call=0x01080036; + public static final int ic_menu_camera=0x01080037; + public static final int ic_menu_cc=0x01080338; + public static final int ic_menu_close_clear_cancel=0x01080038; + public static final int ic_menu_compass=0x01080039; + public static final int ic_menu_crop=0x0108003a; + public static final int ic_menu_day=0x0108003b; + public static final int ic_menu_delete=0x0108003c; + public static final int ic_menu_directions=0x0108003d; + public static final int ic_menu_edit=0x0108003e; + public static final int ic_menu_gallery=0x0108003f; + public static final int ic_menu_goto=0x0108034a; + public static final int ic_menu_help=0x01080040; + public static final int ic_menu_info_details=0x01080041; + public static final int ic_menu_manage=0x01080042; + public static final int ic_menu_mapmode=0x01080043; + public static final int ic_menu_month=0x01080044; + public static final int ic_menu_more=0x01080045; + public static final int ic_menu_moreoverflow_normal_holo_dark=0x01080355; + public static final int ic_menu_my_calendar=0x01080046; + public static final int ic_menu_mylocation=0x01080047; + public static final int ic_menu_myplaces=0x01080048; + public static final int ic_menu_play_clip=0x0108035b; + public static final int ic_menu_preferences=0x01080049; + public static final int ic_menu_recent_history=0x0108004a; + public static final int ic_menu_refresh=0x0108035c; + public static final int ic_menu_report_image=0x0108004b; + public static final int ic_menu_revert=0x0108004c; + public static final int ic_menu_rotate=0x0108004d; + public static final int ic_menu_save=0x0108004e; + public static final int ic_menu_search=0x0108004f; + public static final int ic_menu_send=0x01080050; + public static final int ic_menu_set_as=0x01080051; + public static final int ic_menu_share=0x01080052; + public static final int ic_menu_slideshow=0x01080053; + public static final int ic_menu_sort_alphabetically=0x0108009c; + public static final int ic_menu_sort_by_size=0x0108009d; + public static final int ic_menu_today=0x01080054; + public static final int ic_menu_upload=0x01080055; + public static final int ic_menu_upload_you_tube=0x01080056; + public static final int ic_menu_view=0x01080057; + public static final int ic_menu_week=0x01080058; + public static final int ic_menu_zoom=0x01080059; + public static final int ic_notification_cast_connecting=0x0108036a; + public static final int ic_notification_cast_on=0x0108036b; + public static final int ic_notification_clear_all=0x0108005a; + public static final int ic_notification_ime_default=0x0108036c; + public static final int ic_notification_overlay=0x0108005b; + public static final int ic_partial_secure=0x0108005c; + public static final int ic_popup_disk_full=0x0108005d; + public static final int ic_popup_reminder=0x0108005e; + public static final int ic_popup_sync=0x0108005f; + public static final int ic_print=0x01080390; + public static final int ic_print_error=0x01080391; + public static final int ic_search_category_default=0x01080060; + public static final int ic_secure=0x01080061; + public static final int ic_settings_language=0x01080394; + public static final int ic_text_dot=0x01080398; + public static final int ic_volume=0x0108039d; + public static final int indicator_code_lock_drag_direction_green_up=0x010803a8; + public static final int indicator_code_lock_drag_direction_red_up=0x010803a9; + public static final int indicator_code_lock_point_area_default_holo=0x010803ab; + public static final int indicator_code_lock_point_area_green_holo=0x010803ad; + public static final int indicator_code_lock_point_area_red_holo=0x010803af; + public static final int indicator_input_error=0x010803b0; + public static final int jog_dial_arrow_long_left_green=0x010803b5; + public static final int jog_dial_arrow_long_right_red=0x010803b8; + public static final int jog_dial_arrow_short_left_and_right=0x010803bb; + public static final int jog_dial_bg=0x010803bd; + public static final int jog_dial_dimple=0x010803be; + public static final int jog_dial_dimple_dim=0x010803bf; + public static final int jog_tab_bar_left_generic=0x010803c7; + public static final int jog_tab_bar_left_unlock=0x010803c8; + public static final int jog_tab_bar_right_generic=0x010803d0; + public static final int jog_tab_bar_right_sound_off=0x010803d1; + public static final int jog_tab_bar_right_sound_on=0x010803d2; + public static final int jog_tab_left_generic=0x010803d8; + public static final int jog_tab_left_unlock=0x010803db; + public static final int jog_tab_right_generic=0x010803e1; + public static final int jog_tab_right_sound_off=0x010803e4; + public static final int jog_tab_right_sound_on=0x010803e5; + public static final int jog_tab_target_gray=0x010803e6; + public static final int jog_tab_target_green=0x010803e7; + public static final int jog_tab_target_yellow=0x010803e9; + public static final int list_selector_background=0x01080062; + public static final int list_selector_pressed_holo_dark=0x01080425; + public static final int loading_tile_android=0x01080429; + public static final int magnified_region_frame=0x0108042b; + public static final int maps_google_logo=0x0108042c; + public static final int menu_background=0x0108042e; + public static final int menu_frame=0x01080063; + public static final int menu_full_frame=0x01080064; + public static final int menuitem_background=0x01080065; + public static final int no_tile_256=0x01080449; + public static final int notification_bg=0x0108044a; + public static final int notification_bg_low=0x0108044b; + public static final int notification_template_icon_bg=0x0108068c; + public static final int notification_template_icon_low_bg=0x0108068d; + public static final int overscroll_edge=0x0108047c; + public static final int overscroll_glow=0x0108047d; + public static final int picture_emergency=0x010804a4; + public static final int picture_frame=0x01080066; + public static final int platlogo=0x010804a5; + public static final int popup_bottom_bright=0x010804ae; + public static final int popup_bottom_dark=0x010804af; + public static final int popup_bottom_medium=0x010804b0; + public static final int popup_center_bright=0x010804b1; + public static final int popup_center_dark=0x010804b2; + public static final int popup_full_bright=0x010804b4; + public static final int popup_full_dark=0x010804b5; + public static final int popup_top_bright=0x010804c2; + public static final int popup_top_dark=0x010804c3; + public static final int presence_audio_away=0x010800af; + public static final int presence_audio_busy=0x010800b0; + public static final int presence_audio_online=0x010800b1; + public static final int presence_away=0x01080067; + public static final int presence_busy=0x01080068; + public static final int presence_invisible=0x01080069; + public static final int presence_offline=0x0108006a; + public static final int presence_online=0x0108006b; + /** presence drawables for videochat or audiochat capable contacts + */ + public static final int presence_video_away=0x010800ac; + public static final int presence_video_busy=0x010800ad; + public static final int presence_video_online=0x010800ae; + public static final int progress_horizontal=0x0108006c; + public static final int progress_indeterminate_horizontal=0x0108006d; + public static final int quickcontact_badge_overlay_dark=0x010804eb; + public static final int radiobutton_off_background=0x0108006e; + public static final int radiobutton_on_background=0x0108006f; + public static final int reticle=0x01080524; + public static final int screen_background_dark=0x01080098; + /** Semi-transparent background that can be used when placing a dark + themed UI on top of some arbitrary background (such as the + wallpaper). This darkens the background sufficiently that the UI + can be seen. + Background drawable that can be used for a transparent activity to + be able to display a dark UI: this darkens its background to make + a dark (default theme) UI more visible. + */ + public static final int screen_background_dark_transparent=0x010800a9; + public static final int screen_background_light=0x01080099; + /** Background drawable that can be used for a transparent activity to + be able to display a light UI: this lightens its background to make + a light UI more visible. + */ + public static final int screen_background_light_transparent=0x010800aa; + public static final int scrubber_control_disabled_holo=0x0108052c; + public static final int scrubber_control_selector_holo=0x01080530; + public static final int scrubber_progress_horizontal_holo_dark=0x01080532; + public static final int search_spinner=0x0108053c; + public static final int spinner_background=0x01080070; + public static final int spinner_dropdown_background=0x01080071; + public static final int star_big_off=0x01080073; + public static final int star_big_on=0x01080072; + public static final int star_off=0x01080075; + public static final int star_on=0x01080074; + public static final int stat_notify_call_mute=0x01080076; + public static final int stat_notify_car_mode=0x01080583; + public static final int stat_notify_chat=0x01080077; + public static final int stat_notify_disabled=0x01080584; + public static final int stat_notify_disk_full=0x01080585; + public static final int stat_notify_error=0x01080078; + public static final int stat_notify_missed_call=0x0108007f; + public static final int stat_notify_more=0x01080079; + public static final int stat_notify_rssi_in_range=0x01080588; + public static final int stat_notify_sdcard=0x0108007a; + public static final int stat_notify_sdcard_prepare=0x010800ab; + public static final int stat_notify_sdcard_usb=0x0108007b; + public static final int stat_notify_sim_toolkit=0x01080589; + public static final int stat_notify_sync=0x0108007c; + public static final int stat_notify_sync_error=0x0108058b; + public static final int stat_notify_sync_noanim=0x0108007d; + public static final int stat_notify_voicemail=0x0108007e; + public static final int stat_notify_wifi_in_range=0x0108058c; + public static final int stat_sys_adb=0x0108058d; + public static final int stat_sys_battery=0x0108058f; + public static final int stat_sys_battery_charge=0x0108059d; + public static final int stat_sys_battery_unknown=0x010805ab; + public static final int stat_sys_certificate_info=0x010805ac; + public static final int stat_sys_data_bluetooth=0x01080080; + public static final int stat_sys_data_usb=0x010805ad; + public static final int stat_sys_download=0x01080081; + public static final int stat_sys_download_done=0x01080082; + public static final int stat_sys_gps_on=0x010805b7; + public static final int stat_sys_headset=0x01080083; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call=0x01080084; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call_forward=0x01080085; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_phone_call_on_hold=0x01080086; + public static final int stat_sys_speakerphone=0x01080087; + public static final int stat_sys_tether_bluetooth=0x010805cc; + public static final int stat_sys_tether_general=0x010805cd; + public static final int stat_sys_tether_usb=0x010805ce; + public static final int stat_sys_tether_wifi=0x010805cf; + public static final int stat_sys_throttled=0x010805d0; + public static final int stat_sys_upload=0x01080088; + public static final int stat_sys_upload_done=0x01080089; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_vp_phone_call=0x010800a7; + /** @deprecated Replaced by a private asset in the phone app. + */ + @Deprecated + public static final int stat_sys_vp_phone_call_on_hold=0x010800a8; + public static final int stat_sys_warning=0x0108008a; + public static final int status_bar_background=0x010805d7; + public static final int status_bar_item_app_background=0x0108008b; + public static final int status_bar_item_background=0x0108008c; + public static final int sym_action_call=0x0108008d; + public static final int sym_action_chat=0x0108008e; + public static final int sym_action_email=0x0108008f; + public static final int sym_app_on_sd_unavailable_icon=0x010805f4; + public static final int sym_call_incoming=0x01080090; + public static final int sym_call_missed=0x01080091; + public static final int sym_call_outgoing=0x01080092; + public static final int sym_contact_card=0x01080094; + public static final int sym_def_app_icon=0x01080093; + public static final int sym_keyboard_return_holo=0x0108060c; + public static final int sym_keyboard_shift=0x0108060d; + public static final int sym_keyboard_shift_locked=0x0108060e; + public static final int tab_bottom_left=0x01080611; + public static final int tab_bottom_left_v4=0x01080612; + public static final int tab_bottom_right=0x01080613; + public static final int tab_bottom_right_v4=0x01080614; + public static final int tab_indicator_v4=0x0108061b; + public static final int text_edit_paste_window=0x01080630; + public static final int text_edit_side_paste_window=0x01080631; + public static final int text_select_handle_left=0x01080633; + public static final int text_select_handle_middle=0x01080634; + public static final int text_select_handle_right=0x01080635; + public static final int title_bar=0x01080095; + public static final int title_bar_medium=0x01080669; + /** Drawable to use as a background for a taller version of the titlebar + */ + public static final int title_bar_tall=0x010800a6; + public static final int toast_frame=0x01080096; + public static final int unknown_image=0x0108066d; + public static final int unlock_default=0x0108066e; + public static final int unlock_halo=0x0108066f; + public static final int unlock_ring=0x01080670; + public static final int unlock_wave=0x01080671; + public static final int usb_android=0x01080672; + public static final int usb_android_connected=0x01080673; + public static final int vpn_connected=0x01080675; + public static final int vpn_disconnected=0x01080676; + public static final int webviewchromium_bubble=0x0108067a; + public static final int webviewchromium_bubble_arrow_up=0x0108067b; + public static final int webviewchromium_color_button_background=0x0108067c; + public static final int webviewchromium_color_picker_advanced_select_handle=0x0108067d; + public static final int webviewchromium_color_picker_border=0x0108067e; + public static final int webviewchromium_ondemand_overlay=0x0108067f; + public static final int webviewchromium_pageinfo_warning_major=0x01080680; + public static final int zoom_plate=0x01080097; + } + public static final class fraction { + /** Duration for the dim animation behind a dialog. This may be either + a percentage, which is relative to the duration of the enter/open + animation of the window being shown that is dimming behind, or it may + be an integer for a constant duration. + */ + public static final int config_dimBehindFadeDuration=0x01120000; + } + public static final class id { + public static final int account_name=0x010202a2; + public static final int account_row_icon=0x0102028f; + public static final int account_row_text=0x01020290; + public static final int account_type=0x010202a1; + public static final int action0=0x010202d2; + public static final int action1=0x010202d4; + public static final int action2=0x010202d5; + public static final int action_bar=0x01020315; + public static final int action_bar_container=0x01020314; + public static final int action_bar_overlay_layout=0x01020313; + public static final int action_bar_spinner=0x01020261; + public static final int action_bar_subtitle=0x01020266; + public static final int action_bar_title=0x01020265; + public static final int action_context_bar=0x01020316; + public static final int action_divider=0x010202dc; + public static final int action_menu_presenter=0x0102025e; + public static final int action_mode_bar_stub=0x0102030e; + public static final int action_mode_close_button=0x01020267; + public static final int actions=0x010202d3; + public static final int activity_chooser_view_content=0x01020268; + /** Menu ID to perform a "add to dictionary" operation. + */ + public static final int addToDictionary=0x0102002a; + public static final int alertTitle=0x01020270; + public static final int allow_button=0x010202a7; + public static final int alwaysUse=0x0102027b; + public static final int amPm=0x0102034c; + public static final int ask_checkbox=0x0102027e; + public static final int authtoken_type=0x010202a3; + public static final int back_button=0x010202f7; + public static final int background=0x01020000; + public static final int banner=0x0102035a; + public static final int big_picture=0x010202dd; + public static final int big_text=0x010202db; + public static final int body=0x010202fc; + public static final int breadcrumb_section=0x0102028a; + public static final int button0=0x010202fe; + public static final int button1=0x01020019; + public static final int button2=0x0102001a; + public static final int button3=0x0102001b; + public static final int button4=0x010202ff; + public static final int button5=0x01020300; + public static final int button6=0x01020301; + public static final int button7=0x01020302; + public static final int buttonPanel=0x01020272; + public static final int button_always=0x01020305; + public static final int button_bar=0x01020281; + public static final int button_once=0x01020306; + public static final int by_common=0x0102033a; + public static final int by_org=0x0102033c; + public static final int by_org_unit=0x0102033e; + public static final int calendar_view=0x01020295; + public static final int cancel=0x0102028e; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for displaying candidates for what the user has entered. + */ + public static final int candidatesArea=0x0102001d; + public static final int characterPicker=0x0102028d; + public static final int checkbox=0x01020001; + public static final int chronometer=0x010202d8; + public static final int clearDefaultHint=0x0102027c; + /** View ID of a {@link android.view.View} to close a popup keyboard + */ + public static final int closeButton=0x01020027; + public static final int compat_checkbox=0x0102027d; + public static final int content=0x01020002; + public static final int contentPanel=0x01020275; + /** Context menu ID for the "Copy" menu item to copy the currently + selected (or all) text in a text view to the clipboard. + */ + public static final int copy=0x01020021; + /** Context menu ID for the "Copy URL" menu item to copy the currently + selected URL from the text view to the clipboard. + */ + public static final int copyUrl=0x01020023; + public static final int current_scene=0x01020262; + public static final int custom=0x0102002b; + public static final int customPanel=0x01020277; + /** Context menu ID for the "Cut" menu item to copy and delete the currently + selected (or all) text in a text view to the clipboard. + */ + public static final int cut=0x01020020; + public static final int date=0x01020063; + public static final int datePicker=0x01020296; + public static final int day=0x01020293; + public static final int day_names=0x0102028c; + public static final int decrement=0x010202ea; + public static final int default_activity_button=0x0102026b; + public static final int deny_button=0x010202a6; + public static final int description=0x01020280; + public static final int divider=0x0102034e; + public static final int edit=0x01020003; + public static final int edit_query=0x0102031b; + public static final int edittext_container=0x010202f2; + public static final int eight=0x01020356; + public static final int empty=0x01020004; + public static final int enter_pin_section=0x01020388; + public static final int expand_activities_button=0x01020269; + public static final int expand_button=0x01020360; + public static final int expand_button_divider=0x0102035f; + public static final int expires_on=0x01020343; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for interacting with the user in extraction mode. + */ + public static final int extractArea=0x0102001c; + public static final int ffwd=0x010202c6; + public static final int fillInIntent=0x01020258; + public static final int find=0x01020395; + public static final int find_next=0x01020398; + public static final int find_prev=0x01020397; + public static final int five=0x01020353; + public static final int four=0x01020352; + public static final int fullscreenArea=0x010202b2; + public static final int hard_keyboard_section=0x010202b6; + public static final int hard_keyboard_switch=0x010202b7; + public static final int headers=0x010202f3; + public static final int hint=0x01020005; + public static final int home=0x0102002c; + public static final int hour=0x0102034a; + public static final int icon=0x01020006; + public static final int icon1=0x01020007; + public static final int icon2=0x01020008; + public static final int icon_menu_presenter=0x0102025c; + public static final int image=0x0102026a; + public static final int inbox_end_pad=0x010202e7; + public static final int inbox_more=0x010202e6; + public static final int inbox_text0=0x010202df; + public static final int inbox_text1=0x010202e0; + public static final int inbox_text2=0x010202e1; + public static final int inbox_text3=0x010202e2; + public static final int inbox_text4=0x010202e3; + public static final int inbox_text5=0x010202e4; + public static final int inbox_text6=0x010202e5; + public static final int increment=0x010202e8; + public static final int info=0x010202da; + public static final int input=0x01020009; + /** The part of the UI shown by an + {@link android.inputmethodservice.InputMethodService} that contains the + views for entering text using the screen. + */ + public static final int inputArea=0x0102001e; + public static final int inputExtractAccessories=0x010202b3; + public static final int inputExtractAction=0x010202b4; + public static final int inputExtractEditButton=0x010202b5; + /** View ID of the text editor inside of an extracted text layout. + */ + public static final int inputExtractEditText=0x01020025; + public static final int internalEmpty=0x010202c0; + public static final int issued_on=0x01020341; + public static final int keyboard=0x01020232; + /** View ID of the {@link android.inputmethodservice.KeyboardView} within + an input method's input area. + */ + public static final int keyboardView=0x01020026; + public static final int leftSpacer=0x01020273; + public static final int left_icon=0x01020251; + public static final int line1=0x010202d7; + public static final int line3=0x010202d9; + public static final int list=0x0102000a; + public static final int listContainer=0x010202bf; + public static final int list_footer=0x010202f4; + public static final int list_item=0x0102026c; + public static final int list_menu_presenter=0x0102025d; + public static final int locale=0x0102017a; + public static final int lock_screen=0x01020255; + public static final int matches=0x01020364; + public static final int media_route_control_frame=0x010202ce; + public static final int media_route_disconnect_button=0x010202cf; + public static final int media_route_extended_settings_button=0x010202cb; + public static final int media_route_list=0x010202ca; + public static final int media_route_volume_layout=0x010202cc; + public static final int media_route_volume_slider=0x010202cd; + public static final int mediacontroller_progress=0x010202c9; + public static final int message=0x0102000b; + public static final int minute=0x0102034b; + public static final int mode_normal=0x01020391; + public static final int month=0x01020292; + public static final int month_name=0x0102028b; + public static final int mount_button=0x0102035b; + public static final int name=0x0102038a; + public static final int new_app_action=0x010202ae; + public static final int new_app_description=0x010202af; + public static final int new_app_icon=0x010202ad; + public static final int next=0x010202c7; + public static final int next_button=0x010202f9; + public static final int nine=0x01020357; + public static final int no_applications_message=0x010202fd; + public static final int no_permissions=0x01020288; + public static final int numberpicker_input=0x010202e9; + public static final int ok=0x010202b1; + public static final int old_app_action=0x010202aa; + public static final int old_app_description=0x010202ab; + public static final int old_app_icon=0x010202a9; + public static final int one=0x0102034f; + public static final int option1=0x0102029b; + public static final int option2=0x0102029c; + public static final int option3=0x0102029d; + public static final int original_app_icon=0x010202bc; + public static final int original_message=0x010202bd; + public static final int overflow_divider=0x010202de; + public static final int overlay_display_window_texture=0x010202eb; + public static final int overlay_display_window_title=0x010202ec; + public static final int package_label=0x010202ee; + public static final int packages_list=0x0102029f; + /** Context menu ID for the "Paste" menu item to copy the current contents + of the clipboard into the text view. + */ + public static final int paste=0x01020022; + public static final int pause=0x010202c5; + public static final int perm_icon=0x01020282; + public static final int perm_name=0x01020283; + public static final int permission_group=0x01020286; + public static final int permission_list=0x01020287; + public static final int perms_list=0x01020289; + public static final int pickers=0x01020291; + public static final int pin_cancel_button=0x01020309; + public static final int pin_confirm_text=0x0102030d; + public static final int pin_error_message=0x01020308; + public static final int pin_new_text=0x0102030c; + public static final int pin_ok_button=0x0102030a; + public static final int pin_text=0x01020307; + public static final int placeholder=0x0102032e; + public static final int prefs=0x010202f6; + public static final int prefs_frame=0x010202f5; + public static final int prev=0x010202c3; + public static final int primary=0x0102000c; + public static final int progress=0x0102000d; + public static final int progressContainer=0x010202be; + public static final int progress_circular=0x01020311; + public static final int progress_horizontal=0x01020312; + public static final int progress_number=0x0102027a; + public static final int progress_percent=0x01020279; + public static final int radio=0x010202c2; + public static final int reask_hint=0x0102027f; + public static final int replace_app_icon=0x010202ba; + public static final int replace_message=0x010202bb; + public static final int resolver_list=0x01020304; + public static final int rew=0x010202c4; + public static final int rightSpacer=0x01020274; + public static final int right_icon=0x01020253; + public static final int rowTypeId=0x01020259; + public static final int scene_layoutid_cache=0x01020263; + public static final int scrollView=0x01020276; + public static final int search_app_icon=0x01020319; + public static final int search_badge=0x0102031c; + public static final int search_bar=0x01020318; + public static final int search_button=0x0102031d; + public static final int search_close_btn=0x01020322; + public static final int search_edit_frame=0x0102031e; + public static final int search_go_btn=0x01020324; + public static final int search_mag_icon=0x0102031f; + public static final int search_plate=0x01020320; + public static final int search_src_text=0x01020321; + public static final int search_view=0x0102031a; + public static final int search_voice_btn=0x01020325; + public static final int secondaryProgress=0x0102000f; + public static final int seekbar=0x010202fa; + /** Context menu ID for the "Select All" menu item to select all text + in a text view. + */ + public static final int selectAll=0x0102001f; + /** Context menu ID for the "Select text..." menu item to switch to text + selection context mode in text views. + */ + public static final int selectTextMode=0x0102002d; + public static final int select_all=0x01020393; + public static final int selectedIcon=0x0102000e; + public static final int serial_number=0x01020338; + public static final int seven=0x01020355; + public static final int sha1_fingerprint=0x01020348; + public static final int sha256_fingerprint=0x01020346; + public static final int share=0x01020394; + public static final int shortcut=0x010202c1; + public static final int six=0x01020354; + public static final int skip_button=0x010202f8; + public static final int slider_group=0x0102035e; + public static final int sms_short_code_confirm_message=0x01020327; + public static final int sms_short_code_detail_layout=0x01020328; + public static final int sms_short_code_detail_message=0x0102032a; + public static final int sms_short_code_remember_choice_checkbox=0x0102032b; + public static final int sms_short_code_remember_undo_instruction=0x0102032d; + public static final int split_action_bar=0x01020317; + /** Menu ID to perform a "start selecting text" operation. + */ + public static final int startSelectingText=0x01020028; + public static final int status=0x0102029a; + public static final int status_bar_latest_event_content=0x010202d6; + /** Menu ID to perform a "stop selecting text" operation. + */ + public static final int stopSelectingText=0x01020029; + public static final int stream_icon=0x01020361; + public static final int submit_area=0x01020323; + public static final int summary=0x01020010; + /** Context menu ID for the "Input Method" menu item to being up the + input method picker dialog, allowing the user to switch to another + input method. + */ + public static final int switchInputMethod=0x01020024; + public static final int switchWidget=0x010202fb; + public static final int switch_new=0x010202ac; + public static final int switch_old=0x010202a8; + public static final int tabcontent=0x01020011; + public static final int tabhost=0x01020012; + public static final int tabs=0x01020013; + public static final int text=0x01020046; + public static final int text1=0x01020014; + public static final int text2=0x01020015; + public static final int three=0x01020351; + public static final int time=0x01020064; + public static final int timePicker=0x0102034d; + public static final int timePickerLayout=0x01020349; + public static final int time_current=0x010202c8; + public static final int title=0x01020016; + public static final int titleDivider=0x01020271; + public static final int titleDividerTop=0x01020278; + public static final int title_container=0x01020254; + public static final int title_template=0x0102026f; + public static final int to_common=0x01020332; + public static final int to_org=0x01020334; + public static final int to_org_unit=0x01020336; + public static final int toggle=0x01020017; + public static final int topPanel=0x0102026e; + public static final int two=0x01020350; + public static final int unmount_button=0x0102035c; + public static final int up=0x0102025a; + public static final int value=0x010202b8; + public static final int visible_panel=0x0102035d; + public static final int websearch=0x01020396; + public static final int webviewchromium_ampm=0x0102037e; + public static final int webviewchromium_autofill_label=0x01020366; + public static final int webviewchromium_autofill_popup_window=0x01020264; + public static final int webviewchromium_autofill_sublabel=0x01020367; + public static final int webviewchromium_color_button_swatch=0x01020392; + public static final int webviewchromium_color_picker_advanced=0x0102036c; + public static final int webviewchromium_color_picker_gradient=0x0102036a; + public static final int webviewchromium_color_picker_more_colors_button=0x0102036f; + public static final int webviewchromium_color_picker_more_colors_button_border=0x0102036e; + public static final int webviewchromium_color_picker_seek_bar=0x0102036b; + public static final int webviewchromium_color_picker_selected_color_view=0x01020372; + public static final int webviewchromium_color_picker_simple=0x0102036d; + public static final int webviewchromium_color_picker_text=0x01020368; + public static final int webviewchromium_color_picker_title=0x01020370; + public static final int webviewchromium_date_picker=0x01020373; + public static final int webviewchromium_date_time_suggestion_label=0x01020377; + public static final int webviewchromium_date_time_suggestion_value=0x01020376; + public static final int webviewchromium_hour=0x01020378; + public static final int webviewchromium_milli=0x0102037d; + public static final int webviewchromium_minute=0x01020379; + public static final int webviewchromium_pickers=0x0102037f; + public static final int webviewchromium_position_in_year=0x01020380; + public static final int webviewchromium_second=0x0102037b; + public static final int webviewchromium_second_colon=0x0102037a; + public static final int webviewchromium_second_dot=0x0102037c; + public static final int webviewchromium_select_action_menu_copy=0x0102039b; + public static final int webviewchromium_select_action_menu_cut=0x0102039a; + public static final int webviewchromium_select_action_menu_paste=0x0102039c; + public static final int webviewchromium_select_action_menu_select_all=0x01020399; + public static final int webviewchromium_select_action_menu_share=0x0102039d; + public static final int webviewchromium_select_action_menu_web_search=0x0102039e; + public static final int webviewchromium_time_picker=0x01020374; + public static final int webviewchromium_validation_bubble_arrow_image=0x01020385; + public static final int webviewchromium_validation_bubble_main_text=0x01020386; + public static final int webviewchromium_validation_bubble_sub_text=0x01020387; + public static final int webviewchromium_year=0x01020381; + public static final int widget_frame=0x01020018; + public static final int wifi_p2p_wps_pin=0x01020389; + public static final int year=0x01020294; + public static final int zero=0x01020358; + public static final int zoomControls=0x0102038d; + public static final int zoomIn=0x0102038f; + public static final int zoomMagnify=0x01020390; + public static final int zoomOut=0x0102038e; + } + public static final class integer { + /** Max number of downloads allowed to proceed concurrently + */ + public static final int config_MaxConcurrentDownloadsAllowed=0x010e0039; + /** Control whether being in the car dock (and powered) always + keeps the screen on. By default it stays on when plugged in to + AC. 0 will not keep it on; or together 1 to stay on when plugged + in to AC and 2 to stay on when plugged in to USB. (So 3 for both.) + */ + public static final int config_carDockKeepsScreenOn=0x010e0019; + /** The number of degrees to rotate the display when the device is in a car dock. + A value of -1 means no change in orientation by default. + */ + public static final int config_carDockRotation=0x010e0015; + /** Display low battery warning when battery level dips to this value. + Also, the battery stats are flushed to disk when we hit this level. + */ + public static final int config_criticalBatteryWarningLevel=0x010e001d; + /** When a database query is executed, the results retuned are paginated + in pages of size (in KB) indicated by this value + */ + public static final int config_cursorWindowSize=0x010e003b; + /** The default reduced-datarate notification mask + 2 means give warning + */ + public static final int config_datause_notification_type=0x010e0033; + /** The default data-use polling period. + */ + public static final int config_datause_polling_period_sec=0x010e0030; + /** The default data-use threshold in bytes. 0 disables + */ + public static final int config_datause_threshold_bytes=0x010e0031; + /** The default reduced-datarate value in kilobits per sec + */ + public static final int config_datause_throttle_kbitsps=0x010e0032; + /** Default LED off time for notification LED in milliseconds. + */ + public static final int config_defaultNotificationLedOff=0x010e0022; + /** Default LED on time for notification LED in milliseconds. + */ + public static final int config_defaultNotificationLedOn=0x010e0021; + /** Control the default UI mode type to use when there is no other type override + happening. One of the following values (See Configuration.java): + 1 UI_MODE_TYPE_NORMAL + 4 UI_MODE_TYPE_TELEVISION + 5 UI_MODE_TYPE_APPLIANCE + Any other values will have surprising consequences. + */ + public static final int config_defaultUiModeType=0x010e0017; + /** Control whether being in the desk dock (and powered) always + keeps the screen on. By default it stays on when plugged in to + AC. 0 will not keep it on; or together 1 to stay on when plugged + in to AC and 2 to stay on when plugged in to USB. (So 3 for both.) + */ + public static final int config_deskDockKeepsScreenOn=0x010e0018; + /** The number of degrees to rotate the display when the device is in a desk dock. + A value of -1 means no change in orientation by default. + */ + public static final int config_deskDockRotation=0x010e0014; + /** Control the behavior when the user double-taps the home button. + 0 - Nothing + 1 - Recent apps view in SystemUI + This needs to match the constants in + policy/src/com/android/internal/policy/impl/PhoneWindowManager.java + + */ + public static final int config_doubleTapOnHomeBehavior=0x010e0029; + /** When the free space available in DownloadManager's data dir falls + below the percentage value specified by this param, DownloadManager + starts removing files to try to make percentage of available + free space above this threshold value. + */ + public static final int config_downloadDataDirLowSpaceThreshold=0x010e003a; + /** Max space (in MB) allocated to DownloadManager to store the downloaded + files if they are to be stored in DownloadManager's data dir, + which typically is /data/data/com.android.providers.downloads/files + */ + public static final int config_downloadDataDirSize=0x010e0038; + /** Device configuration setting the /proc/sys/vm/extra_free_kbytes tunable in the kernel + (if it exists). A high value will increase the amount of memory that the kernel + tries to keep free, reducing allocation time and causing the lowmemorykiller to kill + earlier. A low value allows more memory to be used by processes but may cause more + allocations to block waiting on disk I/O or lowmemorykiller. Overrides the default + value chosen by ActivityManager based on screen size. 0 prevents keeping any extra + memory over what the kernel keeps by default. -1 keeps the default. + */ + public static final int config_extraFreeKbytesAbsolute=0x010e000a; + /** Device configuration adjusting the /proc/sys/vm/extra_free_kbytes tunable in the kernel + (if it exists). 0 uses the default value chosen by ActivityManager. A positive value + will increase the amount of memory that the kernel tries to keep free, reducing + allocation time and causing the lowmemorykiller to kill earlier. A negative value + allows more memory to be used by processes but may cause more allocations to block + waiting on disk I/O or lowmemorykiller. Directly added to the default value chosen by + ActivityManager based on screen size. + */ + public static final int config_extraFreeKbytesAdjust=0x010e000b; + /** Threshold (in ms) under which a screen off / screen on will be considered a reset of the + immersive mode confirmation prompt. + */ + public static final int config_immersive_mode_confirmation_panic=0x010e0047; + /** Indicate whether the lid state impacts the accessibility of + the physical keyboard. 0 means it doesn't, 1 means it is accessible + when the lid is open, 2 means it is accessible when the lid is + closed. The default is 0. + */ + public static final int config_lidKeyboardAccessibility=0x010e001a; + /** Indicate whether the lid state impacts the accessibility of + the navigation buttons. 0 means it doesn't, 1 means it is accessible + when the lid is open, 2 means it is accessible when the lid is + closed. The default is 0. + */ + public static final int config_lidNavigationAccessibility=0x010e001b; + /** The number of degrees to rotate the display when the keyboard is open. + A value of -1 means no change in orientation by default. + */ + public static final int config_lidOpenRotation=0x010e0013; + /** Amount of time it takes for the light sensor to warm up in milliseconds. + For this time after the screen turns on, the Power Manager + will not debounce light sensor readings + */ + public static final int config_lightSensorWarmupTime=0x010e002e; + /** The attenuation in dB applied to the lock/unlock sounds. + */ + public static final int config_lockSoundVolumeDb=0x010e0005; + /** The duration (in milliseconds) of a long animation. + */ + public static final int config_longAnimTime=0x010e0002; + /** Control the behavior when the user long presses the home button. + 0 - Nothing + 1 - Recent apps view in SystemUI + 2 - Launch assist intent + This needs to match the constants in + policy/src/com/android/internal/policy/impl/PhoneWindowManager.java + + see comment in values/config.xml + see comment in values/config.xml + */ + public static final int config_longPressOnHomeBehavior=0x010e0028; + /** Control the behavior when the user long presses the power button. + 0 - Nothing + 1 - Global actions menu + 2 - Power off (with confirmation) + + */ + public static final int config_longPressOnPowerBehavior=0x010e001c; + /** Close low battery warning when battery level reaches this value + */ + public static final int config_lowBatteryCloseWarningLevel=0x010e0020; + /** Display low battery warning when battery level dips to this value + */ + public static final int config_lowBatteryWarningLevel=0x010e001f; + /** Device configuration setting the minfree tunable in the lowmemorykiller in the kernel. + A high value will cause the lowmemorykiller to fire earlier, keeping more memory + in the file cache and preventing I/O thrashing, but allowing fewer processes to + stay in memory. A low value will keep more processes in memory but may cause + thrashing if set too low. Overrides the default value chosen by ActivityManager + based on screen size and total memory for the largest lowmemorykiller bucket, and + scaled proportionally to the smaller buckets. -1 keeps the default. + */ + public static final int config_lowMemoryKillerMinFreeKbytesAbsolute=0x010e0008; + /** Device configuration adjusting the minfree tunable in the lowmemorykiller in the + kernel. A high value will cause the lowmemorykiller to fire earlier, keeping more + memory in the file cache and preventing I/O thrashing, but allowing fewer processes + to stay in memory. A low value will keep more processes in memory but may cause + thrashing if set too low. Directly added to the default value chosen by + ActivityManager based on screen size and total memory for the largest lowmemorykiller + bucket, and scaled proportionally to the smaller buckets. 0 keeps the default. + */ + public static final int config_lowMemoryKillerMinFreeKbytesAdjust=0x010e0009; + /** Maximum number of grid columns permitted in the ResolverActivity + used for picking activities to handle an intent. + Maximum number of grid columns permitted in the ResolverActivity + used for picking activities to handle an intent. + Maximum number of grid columns permitted in the ResolverActivity + used for picking activities to handle an intent. + */ + public static final int config_maxResolverActivityColumns=0x010e0042; + /** Max number of Bluetooth tethering connections allowed. If this is + updated config_tether_dhcp_range has to be updated appropriately. + */ + public static final int config_max_pan_devices=0x010e000e; + /** The duration (in milliseconds) of a medium-length animation. + */ + public static final int config_mediumAnimTime=0x010e0001; + /** Configure mobile network MTU. The standard default is set here but each carrier + may have a specific value set in an overlay config.xml file. + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + Configure mobile network MTU. Carrier specific value is set here. + + */ + public static final int config_mobile_mtu=0x010e0045; + /** Maximum number of supported users + */ + public static final int config_multiuserMaximumUsers=0x010e0043; + /** Default network policy warning threshold, in megabytes. + */ + public static final int config_networkPolicyDefaultWarning=0x010e0041; + /** The maximum duration (in milliseconds) we expect a network transition to take + */ + public static final int config_networkTransitionTimeout=0x010e000d; + /** Default value for led color when battery is fully charged + */ + public static final int config_notificationsBatteryFullARGB=0x010e0025; + /** Default value for LED off time when the battery is low on charge in miliseconds + */ + public static final int config_notificationsBatteryLedOff=0x010e0027; + /** Default value for LED on time when the battery is low on charge in miliseconds + */ + public static final int config_notificationsBatteryLedOn=0x010e0026; + /** Default value for led color when battery is low on charge + */ + public static final int config_notificationsBatteryLowARGB=0x010e0023; + /** Default value for led color when battery is medium charged + */ + public static final int config_notificationsBatteryMediumARGB=0x010e0024; + /** Normal polling frequency in milliseconds + */ + public static final int config_ntpPollingInterval=0x010e003c; + /** Try-again polling interval in milliseconds, in case the network request failed + */ + public static final int config_ntpPollingIntervalShorter=0x010e003d; + /** Number of times to try again with the shorter interval, before backing + off until the normal polling interval. A value < 0 indicates infinite. + */ + public static final int config_ntpRetry=0x010e003e; + /** If the time difference is greater than this threshold in milliseconds, + then update the time. + */ + public static final int config_ntpThreshold=0x010e003f; + /** Timeout to wait for NTP server response. + */ + public static final int config_ntpTimeout=0x010e0040; + /** Override the default detection behavior for the framework method + android.view.ViewConfiguration#hasPermanentMenuKey(). + Valid settings are: + 0 - No change. Use the default autodetection behavior. + 1 - The device DOES have a permanent menu key; ignore autodetection. + 2 - The device DOES NOT have a permanent menu key; ignore autodetection. + */ + public static final int config_overrideHasPermanentMenuKey=0x010e0049; + /** The duration (in milliseconds) that the radio will scan for a signal + when there's no network connection. If the scan doesn't timeout, use zero + */ + public static final int config_radioScanningTimeout=0x010e000c; + /** Safe headphone volume index. When music stream volume is below this index + the SPL on headphone output is compliant to EN 60950 requirements for portable music + players. + */ + public static final int config_safe_media_volume_index=0x010e0044; + /** Screen brightness used to dim the screen when the user activity + timeout expires. May be less than the minimum allowed brightness setting + that can be set by the user. + */ + public static final int config_screenBrightnessDim=0x010e002d; + /** Default screen brightness setting. + Must be in the range specified by minimum and maximum. + */ + public static final int config_screenBrightnessSettingDefault=0x010e002c; + /** Maximum screen brightness allowed by the power manager. + The user is forbidden from setting the brightness above this level. + */ + public static final int config_screenBrightnessSettingMaximum=0x010e002b; + /** Minimum screen brightness setting allowed by the power manager. + The user is forbidden from setting the brightness below this level. + */ + public static final int config_screenBrightnessSettingMinimum=0x010e002a; + /** The duration (in milliseconds) of a short animation. + */ + public static final int config_shortAnimTime=0x010e0000; + /** Shutdown if the battery temperature exceeds (this value * 0.1) Celsius. + */ + public static final int config_shutdownBatteryTemperature=0x010e001e; + /** The attenuation in dB applied to the sound effects played + through AudioManager.playSoundEffect() when no volume is specified. + */ + public static final int config_soundEffectVolumeDb=0x010e0004; + /** Default Gravity setting for the system Toast view. Equivalent to: Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM + */ + public static final int config_toastDefaultGravity=0x010e0046; + /** The number of degrees to rotate the display when the device has HDMI connected + but is not in a dock. A value of -1 means no change in orientation by default. + Use -1 except on older devices whose Hardware Composer HAL does not + provide full support for multiple displays. + */ + public static final int config_undockedHdmiRotation=0x010e0016; + /** For some operators, PDU has garbages. To fix it, need to use valid index + */ + public static final int config_valid_wappush_index=0x010e0048; + /** Specifies the amount of time to disable virtual keys after the screen is touched + in order to filter out accidental virtual key presses due to swiping gestures + or taps near the edge of the display. May be 0 to disable the feature. + It is recommended that this value be no more than 250 ms. + This feature should be disabled for most devices. + */ + public static final int config_virtualKeyQuietTimeMillis=0x010e002f; + /** If Voice Radio Technology is RIL_RADIO_TECHNOLOGY_LTE:14 this is the value + that should be used instead. A value of RIL_RADIO_TECHNOLOGY_UNKNOWN:0 means + there is no replacement value and VoLTE is assumed to be supported + */ + public static final int config_volte_replacement_rat=0x010e0034; + /** Wifi driver stop delay, in milliseconds. + Default value is 2 minutes. + */ + public static final int config_wifi_driver_stop_delay=0x010e0012; + /** Integer indicating the framework scan interval in milliseconds. This is used in the scenario + where the chipset does not support background scanning (config_wifi_background_scan_suport + is false) to set up a periodic wake up scan so that the device can connect to a new access + point on the move. A value of 0 means no periodic scans will be used in the framework. + */ + public static final int config_wifi_framework_scan_interval=0x010e0011; + /** Integer indicating wpa_supplicant scan interval when p2p is connected in milliseconds + */ + public static final int config_wifi_scan_interval_p2p_connected=0x010e0010; + /** Integer indicating wpa_supplicant scan interval in milliseconds + */ + public static final int config_wifi_supplicant_scan_interval=0x010e000f; + /** Maximum number of database connections opened and managed by framework layer + to handle queries on each database when using Write-Ahead Logging. + */ + public static final int db_connection_pool_size=0x010e0035; + /** Maximum size of the persistent journal file in bytes. + If the journal file grows to be larger than this amount then SQLite will + truncate it after committing the transaction. + */ + public static final int db_journal_size_limit=0x010e0036; + /** The Write-Ahead Log auto-checkpoint interval in database pages (typically 1 to 4KB). + The log is checkpointed automatically whenever it exceeds this many pages. + When a database is reopened, its journal mode is set back to the default + journal mode, which may cause a checkpoint operation to occur. Checkpoints + can also happen at other times when transactions are committed. + The bigger the WAL file, the longer a checkpoint operation takes, so we try + to keep the WAL file relatively small to avoid long delays. + The size of the WAL file is also constrained by 'db_journal_size_limit'. + */ + public static final int db_wal_autocheckpoint=0x010e0037; + /** The maximum number of action buttons that should be permitted within + an action bar/action mode. This will be used to determine how many + showAsAction="ifRoom" items can fit. "always" items can override this. + The maximum number of action buttons that should be permitted within + an action bar/action mode. This will be used to determine how many + showAsAction="ifRoom" items can fit. "always" items can override this. + The maximum number of action buttons that should be permitted within + an action bar/action mode. This will be used to determine how many + showAsAction="ifRoom" items can fit. "always" items can override this. + The maximum number of action buttons that should be permitted within + an action bar/action mode. This will be used to determine how many + showAsAction="ifRoom" items can fit. "always" items can override this. + The maximum number of action buttons that should be permitted within + an action bar/action mode. This will be used to determine how many + showAsAction="ifRoom" items can fit. "always" items can override this. + */ + public static final int max_action_buttons=0x010e004a; + /** Maximum numerical value that will be shown in a status bar + notification icon or in the notification itself. Will be replaced + with @string/status_bar_notification_info_overflow when shown in the + UI. + */ + public static final int status_bar_notification_info_maxnum=0x010e0003; + } + public static final class interpolator { + /** Acceleration curve matching a cubic ease out function. + */ + public static final int accelerate_cubic=0x010c0002; + /** Acceleration curve matching an ease in + ease out function + */ + public static final int accelerate_decelerate=0x010c0006; + /** Acceleration curve matching a quadtratic ease out function. + */ + public static final int accelerate_quad=0x010c0000; + /** Acceleration curve matching a quint ease out function. + */ + public static final int accelerate_quint=0x010c0004; + /** An interpolator where the change starts backward then flings forward. + */ + public static final int anticipate=0x010c0007; + /** An interpolator where the change starts backward then flings forward and + overshoots the target value and finally goes back to the final value. + */ + public static final int anticipate_overshoot=0x010c0009; + /** An interpolator where the change bounces at the end. + */ + public static final int bounce=0x010c000a; + /** Repeats the animation for one cycle. The rate of change follows a + sinusoidal pattern. + */ + public static final int cycle=0x010c000c; + /** Acceleration curve matching a cubic ease in function. + */ + public static final int decelerate_cubic=0x010c0003; + /** Acceleration curve matching a quadtratic ease in function. + */ + public static final int decelerate_quad=0x010c0001; + /** Acceleration curve matching a quint ease in function. + */ + public static final int decelerate_quint=0x010c0005; + /** An interpolator where the rate of change is constant. + */ + public static final int linear=0x010c000b; + /** An interpolator where the change flings forward and overshoots the last + value then comes back. + */ + public static final int overshoot=0x010c0008; + } + public static final class layout { + public static final int action_bar_home=0x01090018; + public static final int action_bar_title_item=0x01090019; + public static final int action_bar_up_container=0x0109001a; + public static final int action_menu_item_layout=0x0109001b; + public static final int action_menu_layout=0x0109001c; + public static final int action_mode_close_item=0x0109001e; + public static final int activity_chooser_view=0x0109001f; + public static final int activity_chooser_view_list_item=0x01090020; + public static final int activity_list=0x01090021; + public static final int activity_list_item=0x01090000; + public static final int activity_list_item_2=0x01090022; + public static final int alert_dialog=0x01090024; + public static final int alert_dialog_progress=0x01090026; + public static final int always_use_checkbox=0x01090028; + public static final int am_compat_mode_dialog=0x01090029; + public static final int app_not_authorized=0x0109002a; + public static final int app_permission_item=0x0109002b; + public static final int app_permission_item_money=0x0109002c; + public static final int app_permission_item_old=0x0109002d; + public static final int app_perms_summary=0x0109002e; + public static final int auto_complete_list=0x0109002f; + public static final int browser_link_context_header=0x0109000e; + public static final int calendar_view=0x01090031; + public static final int character_picker=0x01090032; + public static final int character_picker_button=0x01090033; + public static final int choose_account=0x01090034; + public static final int choose_account_row=0x01090035; + public static final int choose_account_type=0x01090036; + public static final int choose_type_and_account=0x01090037; + public static final int date_picker=0x01090038; + public static final int date_picker_dialog=0x01090039; + public static final int expandable_list_content=0x01090001; + public static final int expanded_menu_layout=0x01090042; + public static final int fragment_bread_crumb_item=0x01090043; + public static final int fragment_bread_crumbs=0x01090044; + public static final int global_actions_item=0x01090045; + public static final int global_actions_silent_mode=0x01090046; + public static final int grant_credentials_permission=0x01090047; + public static final int heavy_weight_switcher=0x01090048; + public static final int icon_menu_item_layout=0x01090049; + public static final int icon_menu_layout=0x0109004a; + public static final int immersive_mode_cling=0x0109004b; + public static final int input_method=0x0109004c; + public static final int input_method_extract_view=0x0109004d; + public static final int input_method_switch_dialog_title=0x0109004e; + public static final int js_prompt=0x0109004f; + public static final int launch_warning=0x01090053; + /** Standard content view for a {@link android.app.ListFragment}. + If you are implementing a subclass of ListFragment with your + own customized content, you can include this layout in that + content to still retain all of the standard functionality of + the base class. + */ + public static final int list_content=0x01090014; + public static final int list_content_simple=0x01090054; + public static final int list_menu_item_checkbox=0x01090056; + public static final int list_menu_item_icon=0x01090057; + public static final int list_menu_item_layout=0x01090058; + public static final int list_menu_item_radio=0x01090059; + public static final int locale_picker_item=0x0109005a; + public static final int media_controller=0x0109005b; + public static final int media_route_chooser_dialog=0x0109005c; + public static final int media_route_controller_dialog=0x0109005d; + public static final int media_route_list_item=0x0109005e; + public static final int notification_action=0x01090060; + public static final int notification_action_tombstone=0x01090062; + public static final int notification_intruder_content=0x01090063; + public static final int notification_template_base=0x01090064; + public static final int notification_template_big_base=0x01090065; + public static final int notification_template_big_picture=0x01090066; + public static final int notification_template_big_text=0x01090067; + public static final int notification_template_inbox=0x01090068; + public static final int notification_template_part_chronometer=0x01090069; + public static final int notification_template_part_time=0x0109006a; + public static final int number_picker=0x0109006b; + public static final int overlay_display_window=0x0109006d; + public static final int permissions_package_list_item=0x0109006f; + public static final int popup_menu_item_layout=0x01090070; + public static final int preference=0x01090072; + public static final int preference_category=0x01090002; + public static final int preference_header_item=0x01090077; + public static final int preference_list_content=0x0109007b; + public static final int preference_list_content_single=0x0109007c; + public static final int preference_list_fragment=0x0109007d; + public static final int preference_widget_seekbar=0x0109007f; + public static final int progress_dialog=0x01090082; + public static final int recent_apps_dialog=0x01090084; + public static final int remote_views_adapter_default_loading_view=0x01090086; + public static final int resolve_list_item=0x01090087; + public static final int resolver_list=0x01090088; + public static final int restrictions_pin_challenge=0x01090089; + public static final int restrictions_pin_setup=0x0109008a; + public static final int safe_mode=0x0109008b; + public static final int screen_action_bar=0x0109008d; + public static final int screen_custom_title=0x0109008e; + public static final int screen_progress=0x0109008f; + public static final int screen_simple=0x01090090; + public static final int screen_simple_overlay_action_mode=0x01090091; + public static final int screen_title=0x01090092; + public static final int screen_title_icons=0x01090093; + public static final int search_bar=0x01090094; + public static final int search_dropdown_item_icons_2line=0x01090096; + public static final int search_view=0x01090097; + public static final int seekbar_dialog=0x01090098; + public static final int select_dialog=0x01090099; + public static final int select_dialog_item=0x01090011; + public static final int select_dialog_multichoice=0x01090013; + public static final int select_dialog_singlechoice=0x01090012; + public static final int select_dialog_singlechoice_holo=0x0109009d; + public static final int simple_dropdown_hint=0x0109009e; + public static final int simple_dropdown_item_1line=0x0109000a; + public static final int simple_expandable_list_item_1=0x01090006; + public static final int simple_expandable_list_item_2=0x01090007; + public static final int simple_gallery_item=0x0109000b; + public static final int simple_list_item_1=0x01090003; + public static final int simple_list_item_2=0x01090004; + public static final int simple_list_item_2_single_choice=0x010900a0; + /** A version of {@link #simple_list_item_1} that is able to change its + background state to indicate when it is activated (that is checked by + a ListView). + */ + public static final int simple_list_item_activated_1=0x01090016; + /** A version of {@link #simple_list_item_2} that is able to change its + background state to indicate when it is activated (that is checked by + a ListView). + */ + public static final int simple_list_item_activated_2=0x01090017; + public static final int simple_list_item_checked=0x01090005; + public static final int simple_list_item_multiple_choice=0x01090010; + public static final int simple_list_item_single_choice=0x0109000f; + /** A simple ListView item layout which can contain text and support (single or multiple) item selection. + */ + public static final int simple_selectable_list_item=0x01090015; + public static final int simple_spinner_dropdown_item=0x01090009; + public static final int simple_spinner_item=0x01090008; + public static final int sms_short_code_confirmation_dialog=0x010900a1; + public static final int ssl_certificate=0x010900a2; + public static final int status_bar_latest_event_content=0x010900a3; + public static final int status_bar_latest_event_ticker=0x010900a4; + public static final int status_bar_latest_event_ticker_large_icon=0x010900a5; + public static final int tab_content=0x010900a6; + public static final int tab_indicator_holo=0x010900a8; + public static final int test_list_item=0x0109000c; + public static final int text_drag_thumbnail=0x010900a9; + public static final int text_edit_action_popup_text=0x010900aa; + public static final int textview_hint=0x010900b1; + public static final int time_picker=0x010900b2; + public static final int time_picker_dialog=0x010900b3; + public static final int transient_notification=0x010900b5; + public static final int two_line_list_item=0x0109000d; + public static final int typing_filter=0x010900b7; + public static final int usb_storage_activity=0x010900b8; + public static final int volume_adjust=0x010900b9; + public static final int volume_adjust_item=0x010900ba; + public static final int web_text_view_dropdown=0x010900bc; + public static final int webview_find=0x010900bd; + public static final int webview_select_singlechoice=0x010900be; + public static final int webviewchromium_autofill_text=0x010900bf; + public static final int webviewchromium_color_picker_advanced_component=0x010900c0; + public static final int webviewchromium_color_picker_dialog_content=0x010900c1; + public static final int webviewchromium_color_picker_dialog_title=0x010900c2; + public static final int webviewchromium_date_time_picker_dialog=0x010900c3; + public static final int webviewchromium_date_time_suggestion=0x010900c4; + public static final int webviewchromium_multi_field_time_picker_dialog=0x010900c5; + public static final int webviewchromium_two_field_date_picker=0x010900c6; + public static final int webviewchromium_validation_message_bubble=0x010900c7; + public static final int wifi_p2p_dialog=0x010900c8; + public static final int wifi_p2p_dialog_row=0x010900c9; + public static final int zoom_container=0x010900cb; + public static final int zoom_controls=0x010900cc; + public static final int zoom_magnify=0x010900cd; + } + public static final class menu { + public static final int webview_copy=0x01140000; + public static final int webview_find=0x01140001; + public static final int webviewchromium_select_action_menu=0x01140002; + } + public static final class mipmap { + /** Default icon for applications that don't specify an icon. + */ + public static final int sym_def_app_icon=0x010d0000; + } + public static final class plurals { + /** This is used to express that something will occur some number of abbreviated days in the future (e.g., in 5 days). + */ + public static final int abbrev_in_num_days=0x01130011; + /** This is used to express that something will occur some number of abbreviated hours in the future (e.g., in 5 hrs). + */ + public static final int abbrev_in_num_hours=0x01130010; + /** This is used to express that something will occur some number of abbreviated minutes in the future (e.g., in 5 mins). + */ + public static final int abbrev_in_num_minutes=0x0113000f; + /** This is used to express that something will occur some number of abbreviated seconds in the future (e.g., in 5 secs). + */ + public static final int abbrev_in_num_seconds=0x0113000e; + /** This is used to express that something occurred some number of abbreviated days in the past (e.g., 5 days ago). + */ + public static final int abbrev_num_days_ago=0x0113000d; + /** This is used to express that something occurred some number of abbreviated hours in the past (e.g., 5 hrs ago). + */ + public static final int abbrev_num_hours_ago=0x0113000c; + /** This is used to express that something occurred some number of abbreviated minutes in the past (e.g., 5 mins ago). + */ + public static final int abbrev_num_minutes_ago=0x0113000b; + /** This is used to express that something occurred some number of abbreviated seconds in the past (e.g., 5 secs ago). + */ + public static final int abbrev_num_seconds_ago=0x0113000a; + /** Phrase describing a time duration using hours [CHAR LIMIT=16] + */ + public static final int duration_hours=0x01130014; + /** Phrase describing a time duration using minutes [CHAR LIMIT=16] + */ + public static final int duration_minutes=0x01130013; + /** Phrase describing a time duration using seconds [CHAR LIMIT=16] + */ + public static final int duration_seconds=0x01130012; + /** This is used to express that something will occur some number of days in the future (e.g., in 5 days). + */ + public static final int in_num_days=0x01130009; + /** This is used to express that something will occur some number of hours in the future (e.g., in 5 hours). + */ + public static final int in_num_hours=0x01130008; + /** This is used to express that something will occur some number of minutes in the future (e.g., in 5 minutes). + */ + public static final int in_num_minutes=0x01130007; + /** This is used to express that something will occur some number of seconds in the future (e.g., in 5 seconds). + */ + public static final int in_num_seconds=0x01130006; + /** This is used to express that something occurred within the last X days (e.g., Last 7 days). + */ + public static final int last_num_days=0x01130004; + /** Displayed on the Find dialog to display the index of the highlighted + match and total number of matches found in the current page. [CHAR LIMIT=NONE] + */ + public static final int matches_found=0x01130017; + /** This is used to express that something occurred some number of days in the past (e.g., 5 days ago). + */ + public static final int num_days_ago=0x01130005; + /** This is used to express that something occurred some number of hours in the past (e.g., 5 hours ago). + */ + public static final int num_hours_ago=0x01130003; + /** This is used to express that something occurred some number of minutes in the past (e.g., 5 minutes ago). + */ + public static final int num_minutes_ago=0x01130002; + /** This is used to express that something occurred some number of seconds in the past (e.g., 5 seconds ago). + */ + public static final int num_seconds_ago=0x01130001; + /** Displayed when a SIM PIN/PUK is entered incorrectly. + */ + public static final int pinpuk_attempts=0x01130000; + /** PIN entry dialog countdown message for next chance to enter the PIN [CHAR LIMIT=none] + Phrase describing a time duration using seconds [CHAR LIMIT=none] + */ + public static final int restr_pin_countdown=0x01130018; + /** A notification is shown when there are open wireless networks nearby. This is the notification's title. + */ + public static final int wifi_available=0x01130015; + /** A notification is shown when there are open wireless networks nearby. This is the notification's message. + */ + public static final int wifi_available_detailed=0x01130016; + } + public static final class raw { + public static final int accessibility_gestures=0x01100000; + public static final int fallbackring=0x01100001; + public static final int incognito_mode_start_page=0x01100002; + public static final int loaderror=0x01100003; + public static final int nodomain=0x01100004; + } + public static final class string { + /** Displayed as the title for a success/failure report enabling/disabling call barring. + */ + public static final int BaMmi=0x01040068; + /** Displayed to confirm to the user that caller ID will not be restricted on the next call or in general. + */ + public static final int CLIRDefaultOffNextCallOff=0x01040074; + /** Displayed to confirm to the user that caller ID will not be restricted on the next call but usually is. + */ + public static final int CLIRDefaultOffNextCallOn=0x01040073; + /** Displayed to confirm to the user that caller ID will be not restricted on the next call even though it usually is. + */ + public static final int CLIRDefaultOnNextCallOff=0x01040072; + /** Displayed to confirm to the user that caller ID will be restricted on the next call as usual. + */ + public static final int CLIRDefaultOnNextCallOn=0x01040071; + /** Displayed to tell the user that they cannot change the caller ID setting. + */ + public static final int CLIRPermanent=0x01040076; + /** Displayed as the title for a success/failure report enabling/disabling call forwarding. + */ + public static final int CfMmi=0x01040066; + /** Displayed as the title for a success/failure report enabling/disabling caller ID. + */ + public static final int ClipMmi=0x01040064; + /** Displayed as the title for a success/failure report enabling/disabling caller ID. + */ + public static final int ClirMmi=0x01040065; + /** Displayed as the title for a success/failure report enabling/disabling call waiting. + */ + public static final int CwMmi=0x01040067; + /** Quoted name for 12am, uppercase first letter + */ + public static final int Midnight=0x010403e5; + /** Quoted name for 12pm, uppercase first letter + */ + public static final int Noon=0x010403e3; + /** Displayed as the title for a success/failure report changing the SIM PIN. + */ + public static final int PinMmi=0x0104006a; + /** Displayed as the title for a success/failure report changing the SIM password. + */ + public static final int PwdMmi=0x01040069; + /** Notification title to tell the user that restricted state is changed by access control. + */ + public static final int RestrictedChangedTitle=0x01040077; + /** Displayed to tell the user that all emergency and normal voice services are blocked by access control. + */ + public static final int RestrictedOnAllVoice=0x0104007b; + /** Displayed to tell the user that data service is blocked by access control. + */ + public static final int RestrictedOnData=0x01040078; + /** Displayed to tell the user that emergency service is blocked by access control. + */ + public static final int RestrictedOnEmergency=0x01040079; + /** Displayed to tell the user that normal service is blocked by access control. + */ + public static final int RestrictedOnNormal=0x0104007a; + /** STK setup Call + */ + public static final int SetupCallDefault=0x0104053d; + /** Button to close error alert when a video cannot be played + */ + public static final int VideoView_error_button=0x01040010; + /** Text for error alert when a video container is not valid for progressive download/playback. + */ + public static final int VideoView_error_text_invalid_progressive_playback=0x01040015; + /** Text for error alert when a video cannot be played. it can be used by any app. + */ + public static final int VideoView_error_text_unknown=0x01040011; + /** Title for error alert when a video cannot be played. it can be used by any app. + */ + public static final int VideoView_error_title=0x01040012; + public static final int accept=0x0104043c; + /** Label to show for a service that is running because it is an accessibility module. + */ + public static final int accessibility_binding_label=0x010404b1; + /** Text spoken when the user enabled accessibility. [CHAR LIMIT=none] + */ + public static final int accessibility_enabled=0x01040581; + /** Content description for the action bar "home" affordance. [CHAR LIMIT=NONE] + */ + public static final int action_bar_home_description=0x01040512; + /** Formatting string for describing the action bar's title/home/up affordance. + This is a single tappable "button" that includes the app icon, the Up indicator + (usually a "<" chevron) and the window title text. + %1$s is the title. %2$s is the description of what tapping/clicking the whole + thing is going to do. + */ + public static final int action_bar_home_description_format=0x01040515; + /** Just like action_bar_home_description_format, but this one will be used + if the window is also providing subtitle text. + %1$s is the title. %2$s is the subtitle. %3$s is the description of what + tapping/clicking the whole thing is going to do. + */ + public static final int action_bar_home_subtitle_description_format=0x01040516; + /** Content description for the action bar "up" affordance. [CHAR LIMIT=NONE] + */ + public static final int action_bar_up_description=0x01040513; + /** Title for a button to expand the list of activities in ActivityChooserView [CHAR LIMIT=25] + */ + public static final int activity_chooser_view_see_all=0x01040537; + /** ActivityChooserView - accessibility support + Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] + */ + public static final int activitychooserview_choose_application=0x01040501; + /** Error message if the share target app cannto be launched. [CHAR LIMIT=NONE] + */ + public static final int activitychooserview_choose_application_error=0x01040502; + /** Message of notification shown when ADB is actively connected to the phone. + */ + public static final int adb_active_notification_message=0x0104047b; + /** Title of notification shown when ADB is actively connected to the phone. + */ + public static final int adb_active_notification_title=0x0104047a; + /** Option to add the current misspelled word to the user dictionary. [CHAR LIMIT=25] + */ + public static final int addToDictionary=0x010403eb; + /** List item to add an account [CHAR LIMIT=20] + */ + public static final int add_account_button_label=0x010404e9; + /** Text of the alert that is displayed when an application has crashed. + */ + public static final int aerr_application=0x010403fe; + /** Text of the alert that is displayed when an application has crashed. + */ + public static final int aerr_process=0x010403ff; + /** Title of the alert when an application has crashed. + */ + public static final int aerr_title=0x010403fd; + /** Do Not Translate: Alternate eri.xml + */ + public static final int alternate_eri_file=0x010404b5; + /** Option to always use the selected application resolution in the future. See the "Complete action using" dialog title + */ + public static final int alwaysUse=0x010403f8; + /** [CHAR LIMIT=NONE] Message shown in upgrading dialog for each .apk that is optimized. + */ + public static final int android_upgrading_apk=0x01040412; + /** [CHAR LIMIT=NONE] Message to show in upgrading dialog when the bulk of the upgrade work is done. + */ + public static final int android_upgrading_complete=0x01040414; + /** [CHAR LIMIT=NONE] Message to show in upgrading dialog when reached the point of starting apps. + */ + public static final int android_upgrading_starting_apps=0x01040413; + /** [CHAR LIMIT=40] Title of dialog that is shown when performing a system upgrade. + */ + public static final int android_upgrading_title=0x01040411; + /** Text of the alert that is displayed when an application is not responding. + */ + public static final int anr_activity_application=0x01040401; + /** Text of the alert that is displayed when an application is not responding. + */ + public static final int anr_activity_process=0x01040402; + /** Text of the alert that is displayed when an application is not responding. + */ + public static final int anr_application_process=0x01040403; + /** Text of the alert that is displayed when an application is not responding. + */ + public static final int anr_process=0x01040404; + /** Title of the alert when an application is not responding. + */ + public static final int anr_title=0x01040400; + /** [CHAR LIMIT=NONE] Stub notification text for an app running a service that has provided + a bad bad notification for itself. + */ + public static final int app_running_notification_text=0x010403f2; + /** [CHAR LIMIT=NONE] Stub notification title for an app running a service that has provided + a bad bad notification for itself. + */ + public static final int app_running_notification_title=0x010403f1; + /** Do not translate. Regex used by AutoFill. + fr-FR + it-IT + ja-JP + zh-CN + */ + public static final int autofill_address_line_1_label_re=0x01040377; + /** Do not translate. Regex used by AutoFill. + de-DE + en-GB + es + fr-FR + it-IT + ja-JP + pt-BR, pt-PT + ru + zh-CN + */ + public static final int autofill_address_line_1_re=0x01040376; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + */ + public static final int autofill_address_line_2_re=0x01040378; + /** Do not translate. Regex used by AutoFill. + es + fr-FR + it-IT + */ + public static final int autofill_address_line_3_re=0x01040379; + /** String used to separate FirstName and LastName when writing out a local name + e.g. JohnSmith [CHAR-LIMIT=NONE] + */ + public static final int autofill_address_name_separator=0x0104036f; + /** Format string for displaying a name and address summary. $1 is the Full Name, $2 is autofill_address_summary_separator, $3 is the Address + e.g. (John Smith)(, )(123 Main Street) + */ + public static final int autofill_address_summary_format=0x01040372; + /** Format string for displaying a name. $1 is First Name, $2 is autofill_address_name_separator, $3 is Last Name. + e.g. (John)( )(Smith) + */ + public static final int autofill_address_summary_name_format=0x01040370; + /** String used to separate Name and Address Line 1 + e.g. John Smith123 Main Street [CHAR-LIMIT=NONE] + */ + public static final int autofill_address_summary_separator=0x01040371; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_address_type_same_as_re=0x0104037f; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_address_type_use_my_re=0x01040380; + /** Label in a web form for "Area" [CHAR-LIMIT=NONE] + */ + public static final int autofill_area=0x010403a6; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_area_code_notext_re=0x01040399; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_area_code_re=0x0104038c; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_attention_ignored_re=0x01040373; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_billing_designator_re=0x01040381; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_card_cvc_re=0x01040392; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_card_ignored_re=0x01040396; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + ja-JP + ru + zh-CN + zh-TW + */ + public static final int autofill_card_number_re=0x01040393; + /** Do not translate. Regex used by AutoFill. + de-DE + en-AU + es + fr-FR + it-IT + ja-JP + pt-BR, pt-PT + ru + zh-CN + zh-TW + */ + public static final int autofill_city_re=0x0104037d; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + ru + zh-CN + */ + public static final int autofill_company_re=0x01040375; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_country_code_re=0x01040398; + /** Do not translate. Regex used by AutoFill. + ja-JP + zh-CN + */ + public static final int autofill_country_re=0x0104037a; + /** Label in a web form for "County" [CHAR-LIMIT=NONE] + */ + public static final int autofill_county=0x010403a0; + /** Label in a web form for "Department" [CHAR-LIMIT=NONE] + */ + public static final int autofill_department=0x010403a3; + /** Label in a web form for "District" [CHAR-LIMIT=NONE] + */ + public static final int autofill_district=0x010403a2; + /** Do not translate. Regex used by AutoFill. + ja-JP + ru + zh-CN + zh-TW + */ + public static final int autofill_email_re=0x01040383; + /** Label in a web form for "Emirate" [CHAR-LIMIT=NONE] + */ + public static final int autofill_emirate=0x010403a7; + /** Do not translate. Regex used by AutoFill. + de-DE + es + it-IT + ja-JP + pt-BR, pt-PT + ru + zh-CN + */ + public static final int autofill_expiration_date_re=0x01040395; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + pt-BR, pt-PT + ru + zh-CN + */ + public static final int autofill_expiration_month_re=0x01040394; + /** Do not translate. Regex used by AutoFill. + fr-FR + ja-JP + ru + zh-CN + zh-TW + */ + public static final int autofill_fax_re=0x01040397; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + ja-JP + pt-BR, pt-PT + ru + */ + public static final int autofill_first_name_re=0x01040387; + /** Label in a web form for "Island" [CHAR-LIMIT=NONE] + */ + public static final int autofill_island=0x010403a1; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + pt-BR, pt-PT + ru + */ + public static final int autofill_last_name_re=0x0104038a; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_middle_initial_re=0x01040388; + /** Do not translate. Regex used by AutoFill. + es + */ + public static final int autofill_middle_name_re=0x01040389; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_name_on_card_contextual_re=0x01040391; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + ru + zh-CN + zh-TW + */ + public static final int autofill_name_on_card_re=0x01040390; + /** Do not translate. Regex used by AutoFill. + es + fr-FR + ja-JP + pt-BR, pt-PT + zh-CN + */ + public static final int autofill_name_re=0x01040385; + /** Do not translate. Regex used by AutoFill. + fr-FR + pt-BR, pt-PT + */ + public static final int autofill_name_specific_re=0x01040386; + /** Label in a web form for "Parish" [CHAR-LIMIT=NONE] + */ + public static final int autofill_parish=0x010403a5; + /** Do not translate. Regex used by AutoFill. + pt-BR, pt-PT + */ + public static final int autofill_phone_extension_re=0x0104038f; + /** Do not translate. Regex used by AutoFill. + fr-FR + pt-BR, pt-PT + */ + public static final int autofill_phone_prefix_re=0x0104038d; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_phone_prefix_separator_re=0x0104039a; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + ja-JP + pt-BR, pt-PT + ru + zh-CN + */ + public static final int autofill_phone_re=0x0104038b; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_phone_suffix_re=0x0104038e; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_phone_suffix_separator_re=0x0104039b; + /** Label in a web form for "Postal code" [CHAR-LIMIT=NONE] + */ + public static final int autofill_postal_code=0x0104039d; + /** Label in a web form for "Prefecture" [CHAR-LIMIT=NONE] + */ + public static final int autofill_prefecture=0x010403a4; + /** Label in a web form for "Province" [CHAR-LIMIT=NONE] + */ + public static final int autofill_province=0x0104039c; + /** Do not translate. Regex used by AutoFill. + es + pt-BR, pt-PT + */ + public static final int autofill_region_ignored_re=0x01040374; + /** Do not translate. Regex used by AutoFill. + */ + public static final int autofill_shipping_designator_re=0x01040382; + /** Label in a web form for "State" [CHAR-LIMIT=NONE] + */ + public static final int autofill_state=0x0104039e; + /** Do not translate. Regex used by AutoFill. + de-DE + en-UK + ja-JP + pt-BR, pt-PT + ru + zh-CN + zh-TW + */ + public static final int autofill_state_re=0x0104037e; + /** Text to show in the auto complete drop down list on a text view when the WebView can auto fill the entire form, and the user has configured an AutoFill profile [CHAR-LIMIT=8] + */ + public static final int autofill_this_form=0x0104036d; + /** Do not translate. Regex used by AutoFill. + de-DE + zh-CN + */ + public static final int autofill_username_re=0x01040384; + /** Do not translate. Regex used by AutoFill. + pt-BR, pt-PT + */ + public static final int autofill_zip_4_re=0x0104037c; + /** Label in a web form for "ZIP code" [CHAR-LIMIT=NONE] + */ + public static final int autofill_zip_code=0x0104039f; + /** Do not translate. Regex used by AutoFill. + de-DE + es + fr-FR + it-IT + ja-JP + pt-BR, pt-PT + ru +zh-CN + zh-TW + */ + public static final int autofill_zip_code_re=0x0104037b; + /** Displayed when a SIM PIN password is entered incorrectly. + */ + public static final int badPin=0x0104005a; + /** Displayed when a SIM PUK password is entered incorrectly. + */ + public static final int badPuk=0x0104005b; + /** Description of the bluetooth a2dp audio route. [CHAR LIMIT=50] + */ + public static final int bluetooth_a2dp_audio_route_name=0x01040545; + /** Message in bugreport dialog describing what it does [CHAR LIMIT=NONE] + */ + public static final int bugreport_message=0x010400c9; + /** Take bug report menu title [CHAR LIMIT=NONE] + */ + public static final int bugreport_title=0x010400c8; + /** Suffix added to a number to signify size in bytes. + */ + public static final int byteShort=0x01040048; + /** Preference framework strings. + */ + public static final int cancel=0x01040000; + /** Description for the capability of an accessibility service to request enhanced web accessibility. + */ + public static final int capability_desc_canRequestEnhancedWebAccessibility=0x01040115; + /** Description for the capability of an accessibility service to request to filter key events. + */ + public static final int capability_desc_canRequestFilterKeyEvents=0x01040117; + /** Description for the capability of an accessibility service to request touch exploration. + */ + public static final int capability_desc_canRequestTouchExploration=0x01040113; + /** Description for the capability of an accessibility service to retrieve window content. + */ + public static final int capability_desc_canRetrieveWindowContent=0x01040111; + /** Title for the capability of an accessibility service to request enhanced web accessibility. + */ + public static final int capability_title_canRequestEnhancedWebAccessibility=0x01040114; + /** Title for the capability of an accessibility service to request to filter key events. + */ + public static final int capability_title_canRequestFilterKeyEvents=0x01040116; + /** Title for the capability of an accessibility service to request touch exploration. + */ + public static final int capability_title_canRequestTouchExploration=0x01040112; + /** Title for the capability of an accessibility service to retrieve window content. + */ + public static final int capability_title_canRetrieveWindowContent=0x01040110; + public static final int car_mode_disable_notification_message=0x010404c3; + /** Strings for car mode notification + Shown when car mode is enabled + */ + public static final int car_mode_disable_notification_title=0x010404c2; + /** Displayed when the call forwarding query was forwarded. + */ + public static final int cfTemplateForwarded=0x01040097; + /** Displayed when the call forwarding query will be forwarded after some time. + */ + public static final int cfTemplateForwardedTime=0x01040098; + /** Displayed when the call forwarding query was not able to be forwarded. + */ + public static final int cfTemplateNotForwarded=0x01040096; + /** Displayed when the call forwarding query was set but forwarding is not enabled. + */ + public static final int cfTemplateRegistered=0x01040099; + /** Displayed when the call forwarding query was set but forwarding is not enabled. + */ + public static final int cfTemplateRegisteredTime=0x0104009a; + /** Default title for the activity chooser, when one is not given. Android allows multiple activities to perform an action. for example, there may be many ringtone pickers installed. A dialog is shown to the user allowing him to pick which activity should be used. This is the title. + */ + public static final int chooseActivity=0x010403fa; + /** title for the USB activity chooser. + */ + public static final int chooseUsbActivity=0x010403fb; + /** Dialog title for user to select a different wallpaper from service list + */ + public static final int chooser_wallpaper=0x010404b3; + public static final int common_last_name_prefixes=0x01040042; + public static final int common_name_conjunctions=0x01040043; + public static final int common_name_prefixes=0x01040040; + public static final int common_name_suffixes=0x01040041; + /** Apps that are authorized to access shared accounts, overridden by product overlays + */ + public static final int config_appsAuthorizedForSharedAccounts=0x0104003a; + /** Class name of the framework account picker activity. + Can be customized for other product types + */ + public static final int config_chooseAccountActivity=0x01040037; + /** Class name of the account type and account picker activity. + Can be customized for other product types + */ + public static final int config_chooseTypeAndAccountActivity=0x01040038; + /** Component name of a custom ResolverActivity (Intent resolver) to be used instead of + the default framework version. If left empty, then the framework version will be used. + Example: com.google.android.myapp/.resolver.MyResolverActivity + */ + public static final int config_customResolverActivity=0x01040039; + /** The default iface on which to monitor data use + */ + public static final int config_datause_iface=0x01040022; + /** IP address of the dns server to use if nobody else suggests one + */ + public static final int config_default_dns_server=0x01040024; + /** ComponentName of the default dream (Settings.Secure.SCREENSAVER_COMPONENT) + */ + public static final int config_dreamsDefaultComponent=0x01040036; + /** Regex of wired ethernet ifaces + */ + public static final int config_ethernet_iface_regex=0x01040018; + /** Package name providing fused location support. Used only when + config_enableFusedLocationOverlay is false. + */ + public static final int config_fusedLocationProviderPackageName=0x0104001f; + /** Package name providing geocoder API support. Used only when + config_enableGeocoderOverlay is false. + */ + public static final int config_geocoderProviderPackageName=0x01040020; + /** Package name providing geofence API support. Used only when + config_enableGeofenceOverlay is false. + */ + public static final int config_geofenceProviderPackageName=0x01040021; + /** MMS user agent string + */ + public static final int config_mms_user_agent=0x0104002d; + /** MMS user agent prolfile url + */ + public static final int config_mms_user_agent_profile_url=0x0104002e; + /** Package name providing network location support. Used only when + config_enableNetworkLocationOverlay is false. + */ + public static final int config_networkLocationProviderPackageName=0x0104001e; + /** Remote server that can provide NTP responses. + */ + public static final int config_ntpServer=0x01040030; + /** String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,270,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + String containing the apn value for tethering. May be overriden by secure settings + TETHER_DUN_APN. Value is a comma separated series of strings: + "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" + note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" + */ + public static final int config_tether_apndata=0x01040019; + /** The URL that should be sent in an x-wap-profile header with an HTTP request, + as defined in the Open Mobile Alliance User Agent Profile specification + OMA-TS-UAProf-V2_0-20060206-A Section 8.1.1.1. If the URL contains a '%s' + format string then that substring will be replaced with the value of + Build.MODEL. The format string shall not be escaped. + */ + public static final int config_useragentprofile_url=0x0104002c; + /** Device type information conforming to Annex B format in WiFi Direct specification. + The default represents a dual-mode smartphone + */ + public static final int config_wifi_p2p_device_type=0x0104001a; + /** Name of the wimax manager class + */ + public static final int config_wimaxManagerClassname=0x01040033; + /** Location of the wimax native library locaiton + */ + public static final int config_wimaxNativeLibLocation=0x01040032; + /** Name of the wimax service class + */ + public static final int config_wimaxServiceClassname=0x01040034; + /** Location of the wimax framwork jar location + */ + public static final int config_wimaxServiceJarLocation=0x01040031; + /** Name of the wimax state tracker clas + */ + public static final int config_wimaxStateTrackerClassname=0x01040035; + /** Title of a button to open the settings for input methods [CHAR LIMIT=30] + */ + public static final int configure_input_methods=0x0104047e; + /** A notification is shown when there is a sync error. This is the text that will scroll through the notification bar (will be seen by the user as he uses another application). + */ + public static final int contentServiceSync=0x010400ac; + /** A notification is shown when there is a sync error. This is the title of the notification. It will be seen in the pull-down notification tray. + */ + public static final int contentServiceSyncNotificationTitle=0x010400ad; + /** A notification is shown when there is a sync error. This is the message of the notification. It describes the error, in this case is there were too many deletes. The argument is the type of content, for example Gmail or Calendar. It will be seen in the pull-down notification tray. + */ + public static final int contentServiceTooManyDeletesNotificationDesc=0x010400ae; + /** Text spoken when the user is performing a gesture that will enable accessibility. [CHAR LIMIT=none] + */ + public static final int continue_to_enable_accessibility=0x01040580; + /** Item on EditText context menu. This action is used to cut selected the text into the clipboard. + */ + public static final int copy=0x01040001; + /** Item on EditText context menu. This action is used to copy a URL from the edit field into the clipboard. + */ + public static final int copyUrl=0x01040002; + /** This string appears (on two lines) when you type a number into contacts search, to let you create a contact whose phone number is the number you typed. The first line will be in bigger type than the second. + */ + public static final int create_contact_using=0x010404a7; + /** Item on EditText context menu. This action is used to cut selected the text into the clipboard. + */ + public static final int cut=0x01040003; + /** Notification title when 2G-3G data usage has exceeded limit threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_3g_limit_snoozed_title=0x01040522; + /** Notification title when 2G-3G data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] + */ + public static final int data_usage_3g_limit_title=0x0104051d; + /** Notification title when 4G data usage has exceeded limit threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_4g_limit_snoozed_title=0x01040523; + /** Notification title when 4G data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] + */ + public static final int data_usage_4g_limit_title=0x0104051e; + /** Notification body when data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] + */ + public static final int data_usage_limit_body=0x01040521; + /** Notification body when data usage has exceeded limit threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_limit_snoozed_body=0x01040526; + /** Notification title when mobile data usage has exceeded limit threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_mobile_limit_snoozed_title=0x01040524; + /** Notification title when mobile data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] + */ + public static final int data_usage_mobile_limit_title=0x0104051f; + /** Notification body when background data usage is limited. [CHAR LIMIT=32] + */ + public static final int data_usage_restricted_body=0x01040528; + /** Notification title when background data usage is limited. [CHAR LIMIT=32] + */ + public static final int data_usage_restricted_title=0x01040527; + /** Notification body when data usage has exceeded warning threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_warning_body=0x0104051c; + /** Notification title when data usage has exceeded warning threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_warning_title=0x0104051b; + /** Notification title when Wi-Fi data usage has exceeded limit threshold. [CHAR LIMIT=32] + */ + public static final int data_usage_wifi_limit_snoozed_title=0x01040525; + /** Notification title when Wi-Fi data usage has exceeded limit threshold, and has been disabled. [CHAR LIMIT=32] + */ + public static final int data_usage_wifi_limit_title=0x01040520; + public static final int date_and_time=0x0104003e; + /** Description of the button to decrease the DatePicker's day value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_decrement_day_button=0x010404f7; + /** Description of the button to decrease the DatePicker's month value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_decrement_month_button=0x010404f5; + /** Description of the button to decrease the DatePicker's year value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_decrement_year_button=0x010404f9; + /** The title of the date picker dialog. [CHAR LIMIT=NONE] + */ + public static final int date_picker_dialog_title=0x0104045a; + /** Description of the button to increase the DatePicker's day value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_increment_day_button=0x010404f6; + /** DatePicker - accessibility support + Description of the button to increase the DatePicker's month value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_increment_month_button=0x010404f4; + /** Description of the button to increase the DatePicker's year value. [CHAR LIMIT=NONE] + */ + public static final int date_picker_increment_year_button=0x010404f8; + public static final int date_time=0x0104003f; + /** Name of the button in the date/time picker to accept the date/time change + */ + public static final int date_time_done=0x0104045c; + /** Name of the button in the date/time picker to accept the date/time change + */ + public static final int date_time_set=0x0104045b; + /** The default journal mode to use use when Write-Ahead Logging is not active. + Choices are: OFF, DELETE, TRUNCATE, PERSIST and MEMORY. + PERSIST may improve performance by reducing how often journal blocks are + reallocated (compared to truncation) resulting in better data block locality + and less churn of the storage media. + */ + public static final int db_default_journal_mode=0x01040029; + /** The database synchronization mode when using the default journal mode. + FULL is safest and preserves durability at the cost of extra fsyncs. + NORMAL also preserves durability in non-WAL modes and uses checksums to ensure + integrity although there is a small chance that an error might go unnoticed. + Choices are: FULL, NORMAL, OFF. + */ + public static final int db_default_sync_mode=0x0104002a; + /** The database synchronization mode when using Write-Ahead Logging. + FULL is safest and preserves durability at the cost of extra fsyncs. + NORMAL sacrifices durability in WAL mode because syncs are only performed before + and after checkpoint operations. If checkpoints are infrequent and power loss + occurs, then committed transactions could be lost and applications might break. + Choices are: FULL, NORMAL, OFF. + */ + public static final int db_wal_sync_mode=0x0104002b; + public static final int decline=0x0104043d; + /** What the UI should display for "Msisdn" unless overridden by the SIM + */ + public static final int defaultMsisdnAlphaTag=0x01040005; + /** What the UI should display for "voice mail" unless overridden by the SIM + */ + public static final int defaultVoiceMailAlphaTag=0x01040004; + /** Name of the default audio route category. [CHAR LIMIT=50] + */ + public static final int default_audio_route_category_name=0x01040544; + /** Name of the default audio route when nothing is connected to + a headphone or other wired audio output jack. [CHAR LIMIT=50] + */ + public static final int default_audio_route_name=0x01040540; + /** Name of the default audio route when an audio dock is connected. [CHAR LIMIT=50] + */ + public static final int default_audio_route_name_dock_speakers=0x01040542; + /** Name of the default audio route when wired headphones are + connected. [CHAR LIMIT=50] + */ + public static final int default_audio_route_name_headphones=0x01040541; + /** Name of the default media route when HDMI is connected. [CHAR LIMIT=50] + */ + public static final int default_media_route_name_hdmi=0x01040543; + /** Default SMS Application. This will be the default SMS application when + the phone first boots. The user can then change the default app to oe + of their choosing. + This can be overridden for devices where a different default SMS + application is desired. + */ + public static final int default_sms_application=0x01040023; + /** Default text encoding for WebSettings. + Default text encoding for WebSettings. + */ + public static final int default_text_encoding=0x01040044; + /** Component name of the default wallpaper. This will be ImageWallpaper if not + specified + */ + public static final int default_wallpaper_component=0x0104001d; + /** Item on EditText pop-up window. This action is used to delete the text that the user recently added. [CHAR LIMIT=15] + */ + public static final int delete=0x010403e9; + /** Option to delete the highlighted part of the text from the suggestion popup. [CHAR LIMIT=25] + */ + public static final int deleteText=0x010403ec; + /** Description of the unlock handle in the Slide unlock screen for tablets. [CHAR LIMIT=NONE] + */ + public static final int description_target_unlock_tablet=0x0104050f; + /** This string appears (on two lines) when you type a number into contacts search, to let you dial the phone number you typed. The first line will be in bigger type than the second. + */ + public static final int dial_number_using=0x010404a6; + /** This is the generic "attention" string to be used in attention dialogs. Typically + combined with setIconAttribute(android.R.attr.alertDialogIcon) + (or setIcon(android.R.drawable.ic_dialog_alert) on legacy versions of the platform) + */ + public static final int dialog_alert_title=0x01040014; + /** Display manager service + Name of the built-in display. [CHAR LIMIT=50] + */ + public static final int display_manager_built_in_display_name=0x01040552; + /** Name of the HDMI display. [CHAR LIMIT=50] + */ + public static final int display_manager_hdmi_display_name=0x01040553; + /** Name of the N'th overlay display for testing. [CHAR LIMIT=50] + */ + public static final int display_manager_overlay_display_name=0x01040554; + /** Title text to append when the display is secure. [CHAR LIMIT=30] + */ + public static final int display_manager_overlay_display_secure_suffix=0x01040556; + /** Title text to show within the overlay. [CHAR LIMIT=50] + */ + public static final int display_manager_overlay_display_title=0x01040555; + /** USB_STORAGE_KILL_STORAGE_USERS dialog message text + */ + public static final int dlg_confirm_kill_storage_users_text=0x0104046f; + /** USB_STORAGE_KILL_STORAGE_USERS dialog + */ + public static final int dlg_confirm_kill_storage_users_title=0x0104046e; + /** USB_STORAGE_ERROR dialog dialog + */ + public static final int dlg_error_title=0x01040470; + /** USB_STORAGE_ERROR dialog ok button + */ + public static final int dlg_ok=0x01040471; + /** Toast for double-tap + */ + public static final int double_tap_toast=0x0104036c; + /** Format string for times like "1:43:33" (1 hour, 43 minutes, 33 seconds) + no translation found for elapsed_time_short_format_h_mm_ss (2997059666628785039) + no translation found for elapsed_time_short_format_h_mm_ss (2997059666628785039) + */ + public static final int elapsed_time_short_format_h_mm_ss=0x010403e7; + /** Format string for durations like "01:23" (1 minute, 23 seconds) + no translation found for elapsed_time_short_format_mm_ss (1294409362352514646) + no translation found for elapsed_time_short_format_mm_ss (1294409362352514646) + */ + public static final int elapsed_time_short_format_mm_ss=0x010403e6; + /** Used to replace a range of characters in text that is too wide + for the space allocated to it (three dots). + */ + public static final int ellipsis=0x0104004f; + /** Used to replace a range of characters in text that is too wide + for the space allocated to it (two dots). + */ + public static final int ellipsis_two_dots=0x01040050; + /** Custom email type + */ + public static final int emailTypeCustom=0x010402d1; + /** Home email type + */ + public static final int emailTypeHome=0x010402d2; + /** Mobile email type + */ + public static final int emailTypeMobile=0x010402d5; + /** Other email type + */ + public static final int emailTypeOther=0x010402d4; + /** Work email type + */ + public static final int emailTypeWork=0x010402d3; + /** This can be used in any application wanting to disable the text "Emergency number" + */ + public static final int emergency_call_dialog_number_for_display=0x01040308; + /** Shown in the lock screen when there is emergency calls only mode. + */ + public static final int emergency_calls_only=0x01040323; + /** How to display the lack of a phone number + */ + public static final int emptyPhoneNumber=0x01040006; + /** Displayed when user attempts to change SIM PIN1 without enabling PIN1. + */ + public static final int enablePin=0x01040061; + /** Text spoken when the user stops preforming a gesture that would enable accessibility. [CHAR LIMIT=none] + */ + public static final int enable_accessibility_canceled=0x01040582; + /** Summary for a warning message about the interaction model changes after allowing an accessibility + service to put the device into explore by touch mode, displayed as a dialog message when + the user selects to enables the service. (default). [CHAR LIMIT=NONE] + */ + public static final int enable_explore_by_touch_warning_message=0x010403cd; + /** Title for a warning message about the interaction model changes after allowing an accessibility + service to put the device into explore by touch mode, displayed as a dialog message when + the user selects to enables the service. (default). [CHAR LIMIT=45] + */ + public static final int enable_explore_by_touch_warning_title=0x010403cc; + /** Error message title [CHAR LIMIT=35] + */ + public static final int error_message_title=0x01040585; + /** Label for an anniversary event [CHAR LIMIT=20] + */ + public static final int eventTypeAnniversary=0x010402cf; + /** Label for a birthday event [CHAR LIMIT=20] + */ + public static final int eventTypeBirthday=0x010402ce; + /** Label for custom events [CHAR LIMIT=20] + */ + public static final int eventTypeCustom=0x010402cd; + /** Label for other events [CHAR LIMIT=20] + */ + public static final int eventTypeOther=0x010402d0; + public static final int ext_media_badremoval_notification_message=0x0104048d; + /** Shown when external media is unsafely removed + */ + public static final int ext_media_badremoval_notification_title=0x0104048c; + public static final int ext_media_checking_notification_message=0x01040487; + /** Shown when external media is being checked + */ + public static final int ext_media_checking_notification_title=0x01040486; + public static final int ext_media_nofs_notification_message=0x01040489; + /** Shown when external media is blank (or unsupported filesystem) + */ + public static final int ext_media_nofs_notification_title=0x01040488; + public static final int ext_media_nomedia_notification_message=0x01040491; + /** Shown when external media is missing + */ + public static final int ext_media_nomedia_notification_title=0x01040490; + public static final int ext_media_safe_unmount_notification_message=0x0104048f; + /** Shown when external media has been safely removed + */ + public static final int ext_media_safe_unmount_notification_title=0x0104048e; + public static final int ext_media_unmountable_notification_message=0x0104048b; + /** Shown when external media is unmountable (corrupt)) + */ + public static final int ext_media_unmountable_notification_title=0x0104048a; + /** See EXTMEDIA_FORMAT. This is the button text to format the sd card. + */ + public static final int extmedia_format_button_format=0x01040479; + /** See EXTMEDIA_FORMAT. This is the message. + */ + public static final int extmedia_format_message=0x01040478; + /** See EXTMEDIA_FORMAT. EXTMEDIA_FORMAT_DIALOG: After the user selects the notification, a dialog is shown asking if he wants to format the SD card. This is the title. + */ + public static final int extmedia_format_title=0x01040477; + /** Shown when face unlock failed multiple times so we're just using the backup + */ + public static final int faceunlock_multiple_failures=0x01040313; + /** Title of the alert when something went wrong in the factory test. + */ + public static final int factorytest_failed=0x0104035f; + /** Error message displayed when the factory test could not be started. + */ + public static final int factorytest_no_action=0x01040361; + /** Error message displayed when a non-system application tries to start a factory test. + */ + public static final int factorytest_not_system=0x01040360; + /** Button to restart the device after the factory test. + */ + public static final int factorytest_reboot=0x01040362; + public static final int fast_scroll_alphabet=0x01040483; + /** Format string used to add a suffix like "KB" or "MB" to a number + to display a size in kilobytes, megabytes, or other size units. + Some languages (like French) will want to add a space between + the placeholders. + */ + public static final int fileSizeSuffix=0x0104004e; + /** Button allowing the user to close an application that is not responding. This will kill the application. + */ + public static final int force_close=0x01040405; + /** Text for message to user that an error happened when formatting SD card [CHAR LIMIT=NONE] + */ + public static final int format_error=0x010404d2; + /** Shown in gadget hosts (e.g. the home screen) when there was an error inflating + the gadget. + */ + public static final int gadget_host_error_inflating=0x0104049e; + /** Suffix added to a number to signify size in gigabytes. + */ + public static final int gigabyteShort=0x0104004b; + /** label for item that generates a bug report in the phone options dialog + */ + public static final int global_action_bug_report=0x010400c7; + /** label for item that turns off power in phone options dialog + */ + public static final int global_action_power_off=0x010400c6; + /** status message in phone options dialog for when silent mode is disabled + */ + public static final int global_action_silent_mode_off_status=0x010400cc; + /** status message in phone options dialog for when silent mode is enabled + */ + public static final int global_action_silent_mode_on_status=0x010400cb; + /** label for item that enables silent mode in phone options dialog + */ + public static final int global_action_toggle_silent_mode=0x010400ca; + /** status message in phone options dialog for when airplane mode is off + */ + public static final int global_actions_airplane_mode_off_status=0x010400cf; + /** status message in phone options dialog for when airplane mode is on + */ + public static final int global_actions_airplane_mode_on_status=0x010400ce; + /** label for item that toggles airplane mode + */ + public static final int global_actions_toggle_airplane_mode=0x010400cd; + /** Network positioning notification message. The name of the user (e.g. John Doe) and + service (SUPL-service) who sent the request is shown as dynamic strings. + Translation should not be longer than master text. + */ + public static final int gpsNotifMessage=0x010404df; + /** Network positioning notification ticker. The name of the user (e.g. John Doe) who sent + the request is shown as a dynamic string. + */ + public static final int gpsNotifTicker=0x010404dd; + /** Network positioning notification and verification title to inform the user about + an incoming location request. + */ + public static final int gpsNotifTitle=0x010404de; + /** Network positioning verification No. Button to push to deny sharing of location + information. + */ + public static final int gpsVerifNo=0x010404e1; + /** Network positioning verification Yes. Button to push to share location information. + */ + public static final int gpsVerifYes=0x010404e0; + public static final int grant_permissions_header_text=0x010404aa; + /** Label for granularity to traverse the content on an AccessibilityNodeInfo by character. Only spoken to the user. [CHAR LIMIT=NONE] + */ + public static final int granularity_label_character=0x01040359; + /** Label for granularity to traverse the content on an AccessibilityNodeInfo by line. Only spoken to the user. [CHAR LIMIT=NONE] + */ + public static final int granularity_label_line=0x0104035c; + /** Label for granularity to traverse the content on an AccessibilityNodeInfo by link. Only spoken to the user. [CHAR LIMIT=NONE] + */ + public static final int granularity_label_link=0x0104035b; + /** Label for granularity to traverse the content on an AccessibilityNodeInfo by word. Only spoken to the user. [CHAR LIMIT=NONE] + */ + public static final int granularity_label_word=0x0104035a; + /** The default character set for GsmAlphabet + Empty string means MBCS is not considered + */ + public static final int gsm_alphabet_default_charset=0x01040028; + /** Title of the physical keyboard category in the input method selector [CHAR LIMIT=10] + */ + public static final int hardware=0x01040480; + /** Notification text to tell the user that a heavy-weight application is running. + */ + public static final int heavy_weight_notification=0x01040415; + /** Notification details to tell the user that a heavy-weight application is running. + */ + public static final int heavy_weight_notification_detail=0x01040416; + /** A format string for 12-hour time of day, just the hour, not the minute, with lower-case "am" or "pm" (example: "3pm"). + */ + public static final int hour_ampm=0x0104035d; + /** A format string for 12-hour time of day, just the hour, not the minute, with capital "AM" or "PM" (example: "3PM"). + */ + public static final int hour_cap_ampm=0x0104035e; + /** Displayed when a web request failed with a generic network error. + */ + public static final int httpError=0x0104009e; + /** Displayed when a web request failed because the authentication failed. + */ + public static final int httpErrorAuth=0x010400a1; + /** Displayed when a web request failed because the URL isn't in a valid form. + */ + public static final int httpErrorBadUrl=0x01040007; + /** Displayed when a web request failed because there was a connection error. + */ + public static final int httpErrorConnect=0x010400a3; + /** Displayed when a web request failed because the a secure connection couldn't be made to the server. + */ + public static final int httpErrorFailedSslHandshake=0x010400a7; + /** Displayed when a request failed because we failed to open the file. + */ + public static final int httpErrorFile=0x010400a8; + /** Displayed when a request failed because the file wasn't found. + */ + public static final int httpErrorFileNotFound=0x010400a9; + /** Displayed when a web request failed because there was an input or output error. + */ + public static final int httpErrorIO=0x010400a4; + /** Displayed when a web request failed because the URL could not be found. + */ + public static final int httpErrorLookup=0x0104009f; + /** Displayed when a web request was successful. + */ + public static final int httpErrorOk=0x0104009d; + /** Displayed when a web request failed because the authentication with the proxy failed. + */ + public static final int httpErrorProxyAuth=0x010400a2; + /** Displayed when a web request failed because the site tried to redirect us one too many times + */ + public static final int httpErrorRedirectLoop=0x010400a6; + /** Displayed when a web request failed because the request timed out + */ + public static final int httpErrorTimeout=0x010400a5; + /** Displayed when a request failed because there are too many requests right now. + */ + public static final int httpErrorTooManyRequests=0x010400aa; + /** Displayed when a web request failed because the site's authentication scheme is not supported by us. + */ + public static final int httpErrorUnsupportedAuthScheme=0x010400a0; + /** Displayed when a web request failed because the protocol of the server is not supported. + */ + public static final int httpErrorUnsupportedScheme=0x01040008; + /** AIM IM protocol type + */ + public static final int imProtocolAim=0x010402df; + /** Custom IM protocol type + */ + public static final int imProtocolCustom=0x010402de; + /** Google Talk IM protocol type + */ + public static final int imProtocolGoogleTalk=0x010402e4; + /** ICQ IM protocol type + */ + public static final int imProtocolIcq=0x010402e5; + /** Jabber IM protocol type + */ + public static final int imProtocolJabber=0x010402e6; + /** MSN IM protocol type + */ + public static final int imProtocolMsn=0x010402e0; + /** NetMeeting IM protocol type + */ + public static final int imProtocolNetMeeting=0x010402e7; + /** QQ IM protocol type + */ + public static final int imProtocolQq=0x010402e3; + /** Skype IM protocol type + */ + public static final int imProtocolSkype=0x010402e2; + /** Yahoo IM protocol type + */ + public static final int imProtocolYahoo=0x010402e1; + /** Custom IM address type + */ + public static final int imTypeCustom=0x010402da; + /** Home IM address type + */ + public static final int imTypeHome=0x010402db; + /** Other IM address type + */ + public static final int imTypeOther=0x010402dd; + /** Work IM address type + */ + public static final int imTypeWork=0x010402dc; + /** Long label for a button on a full-screen input method for an unknown action. + */ + public static final int ime_action_default=0x010404a5; + /** Long label for a button on a full-screen input method for the "Done" action. + */ + public static final int ime_action_done=0x010404a3; + /** Long label for a button on a full-screen input method for the "Go" action. + */ + public static final int ime_action_go=0x0104049f; + /** Long label for a button on a full-screen input method for the "Next" action. + */ + public static final int ime_action_next=0x010404a2; + /** [CHAR LIMIT=6] Long label for a button on a full-screen input method for the "Previous" action. + */ + public static final int ime_action_previous=0x010404a4; + /** Long label for a button on a full-screen input method for the "Search" action. + */ + public static final int ime_action_search=0x010404a0; + /** Long label for a button on a full-screen input method for the "Send" action. + */ + public static final int ime_action_send=0x010404a1; + /** Title for the dialog used to display the user's IMEI number [CHAR LIMIT=10] + no translation found for pinpuk_attempts:one (6596245285809790142) + no translation found for pinpuk_attempts:other (7530597808358774740) + */ + public static final int imei=0x01040062; + /** EditText context menu + */ + public static final int inputMethod=0x010403ed; + /** Label to show for a service that is running because it is an input method. + */ + public static final int input_method_binding_label=0x010404af; + /** Displayed when a SIM PIN password is too long or too short. + */ + public static final int invalidPin=0x0104005d; + /** Displayed when a SIM PUK password is too short. + */ + public static final int invalidPuk=0x0104005e; + /** Message in a javascript dialog asking if the user wishes to leave the current page + */ + public static final int js_dialog_before_unload=0x0104036a; + /** Text for the negative button on the unload javascript dialog + */ + public static final int js_dialog_before_unload_negative_button=0x01040369; + /** Text for the positive button on the unload javascript dialog + */ + public static final int js_dialog_before_unload_positive_button=0x01040368; + /** Title for the unload javascript dialog + */ + public static final int js_dialog_before_unload_title=0x01040367; + /** Title for a JavaScript dialog. "The page at says:" + */ + public static final int js_dialog_title=0x01040365; + /** Default title for a javascript dialog + */ + public static final int js_dialog_title_default=0x01040366; + /** Announce that a headset is required to hear keyboard keys while typing a password. [CHAR LIMIT=NONE] + */ + public static final int keyboard_headset_required_to_hear_password=0x01040510; + /** The value of a keyboard key announced when accessibility is enabled and no headsed is used. [CHAR LIMIT=NONE] + */ + public static final int keyboard_password_character_no_headset=0x01040511; + /** KeyboardView - accessibility support + Description of the Alt button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_alt=0x010404fa; + /** Description of the Cancel button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_cancel=0x010404fb; + /** Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_delete=0x010404fc; + /** Description of the Done button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_done=0x010404fd; + /** Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_enter=0x01040500; + /** Description of the Mode change button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_mode_change=0x010404fe; + /** Description of the Shift button in a KeyboardView. [CHAR LIMIT=NONE] + */ + public static final int keyboardview_keycode_shift=0x010404ff; + /** Suffix added to a number to signify size in kilobytes. + */ + public static final int kilobyteShort=0x01040049; + /** This is used to express that something has occurred within the last month + */ + public static final int last_month=0x010403d0; + /** STK launch Browser + */ + public static final int launchBrowserDefault=0x0104053c; + /** [CHAR LIMIT=50] Title of the alert when application launches on top of another. + */ + public static final int launch_warning_original=0x0104040b; + /** [CHAR LIMIT=50] Title of the alert when application launches on top of another. + */ + public static final int launch_warning_replace=0x0104040a; + /** [CHAR LIMIT=25] Title of the alert when application launches on top of another. + */ + public static final int launch_warning_title=0x01040409; + /** Delimeter used between each item in a textual list; for example "Alpha, Beta". [CHAR LIMIT=3] + */ + public static final int list_delimeter=0x0104053a; + /** Accessibility description sent when user adds a cell to the pattern. [CHAR LIMIT=NONE] + */ + public static final int lockscreen_access_pattern_cell_added=0x0104033f; + /** Accessibility description sent when the pattern times out and is cleared. [CHAR LIMIT=NONE] + */ + public static final int lockscreen_access_pattern_cleared=0x0104033e; + /** Accessibility description sent when user completes drawing a pattern. [CHAR LIMIT=NONE] + */ + public static final int lockscreen_access_pattern_detected=0x01040340; + /** Accessibility description sent when user starts drawing a lock pattern. [CHAR LIMIT=NONE] + */ + public static final int lockscreen_access_pattern_start=0x0104033d; + /** On the keyguard screen, it shows the carrier the phone is connected to. This is displayed if the phone is not connected to a carrier. + */ + public static final int lockscreen_carrier_default=0x01040309; + /** Button at the bottom of the unlock screen to make an emergency call. + */ + public static final int lockscreen_emergency_call=0x0104030e; + /** Button at the bottom of the unlock screen that lets the user return to a call + */ + public static final int lockscreen_return_to_call=0x0104030f; + /** If the device is getting low on internal storage, a notification is shown to the user. This is the message of that notification. + */ + public static final int low_internal_storage_view_text=0x010403f0; + /** If the device is getting low on internal storage, a notification is shown to the user. This is the title of that notification. + */ + public static final int low_internal_storage_view_title=0x010403ef; + /** If MMS discovers there isn't much space left on the device, it will show a toast with this message. + */ + public static final int low_memory=0x010400af; + /** Text for message to user that SD card has been removed while in use [CHAR LIMIT=NONE] + */ + public static final int media_bad_removal=0x010404d3; + /** Text for message to user SD card is currently being checked [CHAR LIMIT=NONE] + */ + public static final int media_checking=0x010404d4; + /** Text for message to user SD card has been removed [CHAR LIMIT=NONE] + */ + public static final int media_removed=0x010404d5; + /** Title of the media route chooser dialog. [CHAR LIMIT=40] + */ + public static final int media_route_chooser_title=0x01040548; + /** Title of the media route chooser dialog for selecting remote display routes. [CHAR LIMIT=40] + */ + public static final int media_route_chooser_title_for_remote_display=0x01040549; + /** Status message for a remote route that is confirmed to be available for connection + */ + public static final int media_route_status_available=0x0104054f; + /** Status message for a remote route attempting to connect + */ + public static final int media_route_status_connecting=0x0104054e; + /** Status message for a remote route that is in use (and thus unavailabe) right now + */ + public static final int media_route_status_in_use=0x01040551; + /** Status message for remote routes that are not available for connection right now + */ + public static final int media_route_status_not_available=0x01040550; + /** Status message for remote routes attempting to scan/determine availability + */ + public static final int media_route_status_scanning=0x0104054d; + /** Text for message to user SD card is currently mounted on a computer [CHAR LIMIT=NONE] + */ + public static final int media_shared=0x010404d6; + /** Text for message for an unknown external media state [CHAR LIMIT=NONE] + */ + public static final int media_unknown_state=0x010404d7; + /** Chinese Dai Pa Kai media (paper) size: 275mm x 395mm (10.827" x 15.551") + */ + public static final int mediasize_chinese_om_dai_pa_kai=0x010405c4; + /** Chinese Jurro Ku Kai media (paper) size: 275mm x 395mm (10.827" x 15.551") + */ + public static final int mediasize_chinese_om_jurro_ku_kai=0x010405c5; + /** Chinese Pa Kai media (paper) size: 146mm x 215mm (5.749" x 8.465") + */ + public static final int mediasize_chinese_om_pa_kai=0x010405c3; + /** Chinese PRC 1 media (paper) size: 102mm x 165mm (4.015" x 6.496") + */ + public static final int mediasize_chinese_prc_1=0x010405b8; + /** Chinese PRC 10 media (paper) size: 324mm x 458mm (12.756" x 18.032") + */ + public static final int mediasize_chinese_prc_10=0x010405c1; + /** Chinese RPC 16K media (paper) size: 146mm x 215mm (5.749" x 8.465") + */ + public static final int mediasize_chinese_prc_16k=0x010405c2; + /** Chinese PRC 2 media (paper) size: 102mm x 176mm (4.015" x 6.929") + */ + public static final int mediasize_chinese_prc_2=0x010405b9; + /** Chinese PRC 3 media (paper) size: 125mm x 176mm (4.921" x 6.929") + */ + public static final int mediasize_chinese_prc_3=0x010405ba; + /** Chinese PRC 4 media (paper) size: 110mm x 208mm (4.330" x 8.189") + */ + public static final int mediasize_chinese_prc_4=0x010405bb; + /** Chinese PRC 5 media (paper) size: 110mm x 220mm (4.330" x 8.661") + */ + public static final int mediasize_chinese_prc_5=0x010405bc; + /** Chinese PRC 6 media (paper) size: 120mm x 320mm (4.724" x 12.599") + */ + public static final int mediasize_chinese_prc_6=0x010405bd; + /** Chinese PRC 7 media (paper) size: 160mm x 230mm (6.299" x 9.055") + */ + public static final int mediasize_chinese_prc_7=0x010405be; + /** Chinese PRC 8 media (paper) size: 120mm x 309mm (4.724" x 12.165") + */ + public static final int mediasize_chinese_prc_8=0x010405bf; + /** Chinese PRC 9 media (paper) size: 229mm x 324mm (9.016" x 12.756") + */ + public static final int mediasize_chinese_prc_9=0x010405c0; + /** Chinese Roc 16k media (paper) size: 195mm x 270mm (7.677" x 10.629") + */ + public static final int mediasize_chinese_roc_16k=0x010405b7; + /** Chinese Roc 8k media (paper) size: 270mm x 390mm (10.629" x 15.3543") + */ + public static final int mediasize_chinese_roc_8k=0x010405b6; + /** Printing + ISO (European standard) A0 media (paper) size: 33.11" × 46.81" + */ + public static final int mediasize_iso_a0=0x01040589; + /** ISO (European standard) A1 media (paper) size: 23.39" × 33.11" + */ + public static final int mediasize_iso_a1=0x0104058a; + /** ISO (European standard) A10 media (paper) size: 1.02" x 1.46" + */ + public static final int mediasize_iso_a10=0x01040593; + /** ISO (European standard) A2 media (paper) size: 16.54" x 23.39" + */ + public static final int mediasize_iso_a2=0x0104058b; + /** ISO (European standard) A3 media (paper) size: 11.69" x 16.54" + */ + public static final int mediasize_iso_a3=0x0104058c; + /** ISO (European standard) A4 media (paper) size: 8.27" x 11.69" + */ + public static final int mediasize_iso_a4=0x0104058d; + /** ISO (European standard) A5 media (paper) size: 5.83" x 8.27" + */ + public static final int mediasize_iso_a5=0x0104058e; + /** ISO (European standard) A6 media (paper) size: 4.13" x 5.83" + */ + public static final int mediasize_iso_a6=0x0104058f; + /** ISO (European standard) A7 media (paper) size: 2.91" x 4.13" + */ + public static final int mediasize_iso_a7=0x01040590; + /** ISO (European standard) A8 media (paper) size: 2.05" x 2.91" + */ + public static final int mediasize_iso_a8=0x01040591; + /** ISO (European standard) A9 media (paper) size: 1.46" x 2.05" + */ + public static final int mediasize_iso_a9=0x01040592; + /** ISO (European standard) B0 media (paper) size: 39.37" x 55.67" + */ + public static final int mediasize_iso_b0=0x01040594; + /** ISO (European standard) B1 media (paper) size: 27.83" x 39.37" + */ + public static final int mediasize_iso_b1=0x01040595; + /** ISO (European standard) B10 media (paper) size: 1.22" x 1.73" + */ + public static final int mediasize_iso_b10=0x0104059e; + /** ISO (European standard) B2 media (paper) size - 19.69" x 27.83" + */ + public static final int mediasize_iso_b2=0x01040596; + /** ISO (European standard) B3 media (paper) size: 13.90" x 19.69" + */ + public static final int mediasize_iso_b3=0x01040597; + /** ISO (European standard) B4 media (paper) size: 9.84" x 13.90" + */ + public static final int mediasize_iso_b4=0x01040598; + /** ISO (European standard) B5 media (paper) size: 6.93" x 9.84" + */ + public static final int mediasize_iso_b5=0x01040599; + /** ISO (European standard) B6 media (paper) size: 4.92" x 6.93" + */ + public static final int mediasize_iso_b6=0x0104059a; + /** ISO (European standard) B7 media (paper) size: 3.46" x 4.92" + */ + public static final int mediasize_iso_b7=0x0104059b; + /** ISO (European standard) B8 media (paper) size: 2.44" x 3.46" + */ + public static final int mediasize_iso_b8=0x0104059c; + /** ISO (European standard) B9 media (paper) size: 1.73" x 2.44" + */ + public static final int mediasize_iso_b9=0x0104059d; + /** ISO (European standard) C0 media (paper) size: 36.10" x 51.06" + */ + public static final int mediasize_iso_c0=0x0104059f; + /** ISO (European standard) C1 media (paper) size: 25.51" x 36.10" + */ + public static final int mediasize_iso_c1=0x010405a0; + /** ISO (European standard) C10 media (paper) size: 1.10" x 1.57" + */ + public static final int mediasize_iso_c10=0x010405a9; + /** ISO (European standard) C2 media (paper) size: 18.03" x 25.51" + */ + public static final int mediasize_iso_c2=0x010405a1; + /** ISO (European standard) C3 media (paper) size: 12.76" x 18.03" + */ + public static final int mediasize_iso_c3=0x010405a2; + /** ISO (European standard) C4 media (paper) size: 9.02" x 12.76" + */ + public static final int mediasize_iso_c4=0x010405a3; + /** ISO (European standard) C5 media (paper) size: 6.38" x 9.02" + */ + public static final int mediasize_iso_c5=0x010405a4; + /** ISO (European standard) C6 media (paper) size: 4.49" x 6.38" + */ + public static final int mediasize_iso_c6=0x010405a5; + /** ISO (European standard) C7 media (paper) size: 3.19" x 4.49" + */ + public static final int mediasize_iso_c7=0x010405a6; + /** ISO ISO C8 media (paper) size: 2.24" x 3.19" + */ + public static final int mediasize_iso_c8=0x010405a7; + /** ISO ISO C9 media (paper) size: 1.57" x 2.24" + */ + public static final int mediasize_iso_c9=0x010405a8; + /** Japanese Chou2 media (paper) size: 111.1mm x 146mm (4.374" x 5.748") + */ + public static final int mediasize_japanese_chou2=0x010405d4; + /** Japanese Chou3 media (paper) size: 120mm x 235mm (4.724" x 9.252") + */ + public static final int mediasize_japanese_chou3=0x010405d3; + /** Japanese Chou4 media (paper) size: 90mm x 205mm (3.543" x 8.071") + */ + public static final int mediasize_japanese_chou4=0x010405d2; + /** Japanese Hagaki media (paper) size: 100mm x 148mm (3.937" x 5.827") + */ + public static final int mediasize_japanese_hagaki=0x010405d5; + /** Japanese JIS B0 media (paper) size: 1030mm x 1456mm (40.551" x 57.323") + */ + public static final int mediasize_japanese_jis_b0=0x010405d0; + /** Japanese JIS B1 media (paper) size: 728mm x 1030mm (28.661" x 40.551") + */ + public static final int mediasize_japanese_jis_b1=0x010405cf; + /** Japanese JIS B10 media (paper) size: 32mm x 45mm (1.259" x 1.772") + */ + public static final int mediasize_japanese_jis_b10=0x010405c6; + /** Japanese JIS B2 media (paper) size: 515mm x 728mm (20.276" x 28.661") + */ + public static final int mediasize_japanese_jis_b2=0x010405ce; + /** Japanese JIS B3 media (paper) size: 364mm x 515mm (14.331" x 20.276") + */ + public static final int mediasize_japanese_jis_b3=0x010405cd; + /** Japanese JIS B4 media (paper) size: 257mm x 364mm (10.118" x 14.331") + */ + public static final int mediasize_japanese_jis_b4=0x010405cc; + /** Japanese JIS B5 media (paper) size: 182mm x 257mm (7.165" x 10.118") + */ + public static final int mediasize_japanese_jis_b5=0x010405cb; + /** Japanese JIS B6 media (paper) size: 128mm x 182mm (5.049" x 7.165") + */ + public static final int mediasize_japanese_jis_b6=0x010405ca; + /** Japanese JIS B7 media (paper) size: 91mm x 128mm (3.583" x 5.049") + */ + public static final int mediasize_japanese_jis_b7=0x010405c9; + /** Japanese JIS B8 media (paper) size: 64mm x 91mm (2.52" x 3.583") + */ + public static final int mediasize_japanese_jis_b8=0x010405c8; + /** Japanese JIS B9 media (paper) size: 45mm x 64mm (1.772" x 2.52") + */ + public static final int mediasize_japanese_jis_b9=0x010405c7; + /** Japanese JIS Exec media (paper) size: 216mm x 330mm (8.504" x 12.992") + */ + public static final int mediasize_japanese_jis_exec=0x010405d1; + /** Japanese Kahu media (paper) size: 240mm x 322.1mm (9.449" x 12.681") + */ + public static final int mediasize_japanese_kahu=0x010405d7; + /** Japanese Kaku2 media (paper) size: 240mm x 332mm (9.449" x 13.071") + */ + public static final int mediasize_japanese_kaku2=0x010405d8; + /** Japanese Oufuku media (paper) size: 148mm x 200mm (5.827" x 7.874") + */ + public static final int mediasize_japanese_oufuku=0x010405d6; + /** Japanese You4 media (paper) size: 105mm x 235mm (4.134" x 9.252") + */ + public static final int mediasize_japanese_you4=0x010405d9; + /** North America Foolscap media (paper) size: 8" x 13" (203mm x 330mm) + */ + public static final int mediasize_na_foolscap=0x010405b5; + /** North America Government Letter media (paper) size: 8.0" × 10.5" (203mm x 267mm) + */ + public static final int mediasize_na_gvrnmt_letter=0x010405ab; + /** North America Index Card 3x5 media (paper) size: 3" x 5" (76mm x 127mm) + */ + public static final int mediasize_na_index_3x5=0x010405b0; + /** North America Index Card 4x6 media (paper) size: 4" x 6" (102mm x 152mm) + */ + public static final int mediasize_na_index_4x6=0x010405b1; + /** North America Index Card 5x8 media (paper) size: 5" x 8" (127mm x 203mm) + */ + public static final int mediasize_na_index_5x8=0x010405b2; + /** North America Junior Legal media (paper) size: 8.0" × 5.0" (203mm × 127mm) + */ + public static final int mediasize_na_junior_legal=0x010405ad; + /** North America Ledger media (paper) size: 17" × 11" (432mm × 279mm) + */ + public static final int mediasize_na_ledger=0x010405ae; + /** North America Legal media (paper) size: 8.5" × 14" (216mm x 356mm) + */ + public static final int mediasize_na_legal=0x010405ac; + /** North America Letter media (paper) size: 8.5" × 11" (279mm x 216mm) + */ + public static final int mediasize_na_letter=0x010405aa; + /** North America Monarch media (paper) size: 7.25" x 10.5" (184mm x 267mm) + */ + public static final int mediasize_na_monarch=0x010405b3; + /** North America Quarto media (paper) size: 8" x 10" (203mm x 254mm) + */ + public static final int mediasize_na_quarto=0x010405b4; + /** North America Tabloid media (paper) size: 11" × 17" (279mm × 432mm) + */ + public static final int mediasize_na_tabloid=0x010405af; + /** Media (paper) size for specifying any paper size in landscape. + */ + public static final int mediasize_unknown_landscape=0x010405db; + /** Media (paper) size for specifying any paper size in portrait. + */ + public static final int mediasize_unknown_portrait=0x010405da; + /** Suffix added to a number to signify size in megabytes. + */ + public static final int megabyteShort=0x0104004a; + /** Title for the dialog used to display the user's MEID number on CDMA network + [CHAR LIMIT=10] + */ + public static final int meid=0x01040063; + /** Displayed in place of the regular shortcut letter when a menu item has Menu+delete for the shortcut. + */ + public static final int menu_delete_shortcut_label=0x010403c6; + /** Displayed in place of the regular shortcut letter when a menu item has Menu+enter for the shortcut. + */ + public static final int menu_enter_shortcut_label=0x010403c5; + /** Displayed in place of the regular shortcut letter when a menu item has Menu+space for the shortcut. + */ + public static final int menu_space_shortcut_label=0x010403c4; + /** Quoted name for 12am, lowercase + */ + public static final int midnight=0x010403e4; + /** Displayed when SIM PIN passwords are entered inconsistently. + */ + public static final int mismatchPin=0x0104005c; + /** Displayed when a phone feature triggered by an MMI code is complete. + */ + public static final int mmiComplete=0x01040059; + /** Displayed when the user dialed an MMI code whose function + could not be performed. This will be displayed in a toast. + */ + public static final int mmiError=0x01040051; + /** Displayed when the user dialed an MMI code whose function + could not be performed because FDN is enabled. This will be displayed in a toast. + */ + public static final int mmiFdnError=0x01040052; + /** The default mobile provisioning apn. Empty by default, maybe overridden by + an mcc/mnc specific config.xml + */ + public static final int mobile_provisioning_apn=0x01040025; + /** The default mobile provisioning url. Empty by default, maybe overridden by + an mcc/mnc specific config.xml + */ + public static final int mobile_provisioning_url=0x01040026; + /** This url is used as the default url when redirection is detected. Any + should work as all url's get redirected. But maybe overridden by + if needed. + */ + public static final int mobile_redirected_provisioning_url=0x01040027; + public static final int month_day_year=0x0104003c; + /** Menu item displayed at the end of a menu to allow users to see another page worth of menu items. This is shown on any app's menu as long as the app has too many items in the menu. + */ + public static final int more_item_label=0x010403c2; + /** Displayed to prompt the user to type the PUK password to unlock + the SIM card. + */ + public static final int needPuk=0x0104005f; + public static final int needPuk2=0x01040060; + /** A notification is shown when a captive portal network is detected. This is the notification's title. + */ + public static final int network_available_sign_in=0x01040432; + /** A notification is shown when a captive portal network is detected. This is the notification's message. + */ + public static final int network_available_sign_in_detailed=0x01040433; + public static final int new_app_action=0x0104041b; + public static final int new_app_description=0x0104041c; + /** Preference framework strings. + */ + public static final int no=0x01040009; + /** Text to display when there are no activities found to display in the + activity chooser. See the "Select an action" title. + */ + public static final int noApplications=0x010403fc; + /** Label for the file upload control when no file has been chosen yet + */ + public static final int no_file_chosen=0x010404bf; + /** Displayed on the Find dialog when there are no matches [CHAR LIMIT=NONE] + */ + public static final int no_matches=0x010404cd; + /** Quoted name for 12pm, lowercase + */ + public static final int noon=0x010403e2; + /** Label to show for a service that is running because it is observing + the user's notifications. + */ + public static final int notification_listener_binding_label=0x010404b4; + /** A notification is shown when the AccountManager is unable to + supply an auth token without prompting the user to re-enter the + password. This is the text that will scroll through the + notification bar (will be seen by the user as he uses another application). + */ + public static final int notification_title=0x010400ab; + /** Description of the scrolling action in NumberPicker. [CHAR LIMIT=NONE] + */ + public static final int number_picker_increment_scroll_action=0x010404ed; + /** Description of the tap and hold action to get into scroll mode in NumberPicker. [CHAR LIMIT=NONE] + */ + public static final int number_picker_increment_scroll_mode=0x010404ec; + public static final int numeric_date_template=0x0104003b; + /** Preference framework strings. + */ + public static final int ok=0x0104000a; + public static final int old_app_action=0x01040419; + public static final int old_app_description=0x0104041a; + /** This is used to express that something happened longer ago than the previous options + */ + public static final int older=0x010403d1; + /** Displayed to the user when they do not have permission to open a particular web page. + */ + public static final int open_permission_deny=0x010403c0; + /** Custom organization type + */ + public static final int orgTypeCustom=0x010402ea; + /** Other organization type + */ + public static final int orgTypeOther=0x010402e9; + /** Work organization type + */ + public static final int orgTypeWork=0x010402e8; + /** Default name of the owner user [CHAR LIMIT=20] + */ + public static final int owner_name=0x01040584; + /** Displayed when a SIM password was entered incorrectly. + */ + public static final int passwordIncorrect=0x01040058; + /** Item on EditText context menu. This action is used to paste from the clipboard into the eidt field + */ + public static final int paste=0x0104000b; + public static final int permission_request_notification_with_subtitle=0x010404ae; + /** Text that is placed at the front of a permission name that is being added to an app [CHAR LIMIT=NONE] + */ + public static final int perms_description_app=0x0104045e; + /** Security Permissions strings + Text that is placed at the front of a permission name that is being added to an app [CHAR LIMIT=NONE] + */ + public static final int perms_new_perm_prefix=0x0104045d; + /** Suffix added to a number to signify size in petabytes. + */ + public static final int petabyteShort=0x0104004d; + /** Assistant phone number type + */ + public static final int phoneTypeAssistant=0x010402cb; + /** Callback phone number type + */ + public static final int phoneTypeCallback=0x010402c0; + /** Car phone number type + */ + public static final int phoneTypeCar=0x010402c1; + /** Company main phone number type + */ + public static final int phoneTypeCompanyMain=0x010402c2; + /** Custom phone number type + */ + public static final int phoneTypeCustom=0x010402b8; + /** Home fax phone number type + */ + public static final int phoneTypeFaxHome=0x010402bd; + /** Work fax phone number type + */ + public static final int phoneTypeFaxWork=0x010402bc; + /** Home phone number type + */ + public static final int phoneTypeHome=0x010402b9; + /** ISDN phone number type + */ + public static final int phoneTypeIsdn=0x010402c3; + /** Main phone number type + */ + public static final int phoneTypeMain=0x010402c4; + /** MMS phone number type + */ + public static final int phoneTypeMms=0x010402cc; + /** Mobile phone number type + */ + public static final int phoneTypeMobile=0x010402ba; + /** Other phone number type + */ + public static final int phoneTypeOther=0x010402bf; + /** Other fax phone number type + */ + public static final int phoneTypeOtherFax=0x010402c5; + /** Pager phone number type + */ + public static final int phoneTypePager=0x010402be; + /** Radio phone number type + */ + public static final int phoneTypeRadio=0x010402c6; + /** Telex phone number type + */ + public static final int phoneTypeTelex=0x010402c7; + /** TTY TDD phone number type + */ + public static final int phoneTypeTtyTdd=0x010402c8; + /** Work phone number type + */ + public static final int phoneTypeWork=0x010402bb; + /** Work mobile phone number type + */ + public static final int phoneTypeWorkMobile=0x010402c9; + /** Work pager phone number type + */ + public static final int phoneTypeWorkPager=0x010402ca; + /** Description of policy access to disable all device cameras [CHAR LIMIT=110] + */ + public static final int policydesc_disableCamera=0x010402b5; + /** Description of policy access to disable all device cameras [CHAR LIMIT=110] + */ + public static final int policydesc_disableKeyguardFeatures=0x010402b7; + /** Description of policy access to require encrypted storage [CHAR LIMIT=110] + */ + public static final int policydesc_encryptedStorage=0x010402b3; + /** Description of policy access to enforce password expiration [CHAR LIMIT=110] + */ + public static final int policydesc_expirePassword=0x010402b1; + /** Description of policy access to limiting the user's password choices + */ + public static final int policydesc_forceLock=0x010402ab; + /** Description of policy access to limiting the user's password choices + */ + public static final int policydesc_limitPassword=0x010402a5; + /** Description of policy access to reset user's password + */ + public static final int policydesc_resetPassword=0x010402a9; + /** Description of policy access to wipe the user's data + */ + public static final int policydesc_setGlobalProxy=0x010402af; + /** Description of policy access to watch user login attempts + */ + public static final int policydesc_watchLogin=0x010402a7; + /** Description of policy access to wipe the user's data + */ + public static final int policydesc_wipeData=0x010402ad; + /** Title of policy access to disable all device cameras [CHAR LIMIT=30] + */ + public static final int policylab_disableCamera=0x010402b4; + /** Title of policy access to disable all device cameras [CHAR LIMIT=30] + */ + public static final int policylab_disableKeyguardFeatures=0x010402b6; + /** Title of policy access to require encrypted storage [CHAR LIMIT=30] + */ + public static final int policylab_encryptedStorage=0x010402b2; + /** Title of policy access to enforce password expiration [CHAR LIMIT=30] + */ + public static final int policylab_expirePassword=0x010402b0; + /** Title of policy access to force lock the device + */ + public static final int policylab_forceLock=0x010402aa; + /** Policy administration + Title of policy access to limiting the user's password choices + */ + public static final int policylab_limitPassword=0x010402a4; + /** Title of policy access to reset user's password + */ + public static final int policylab_resetPassword=0x010402a8; + public static final int policylab_setGlobalProxy=0x010402ae; + /** Title of policy access to watch user login attempts + */ + public static final int policylab_watchLogin=0x010402a6; + /** Title of policy access to wipe the user's data + */ + public static final int policylab_wipeData=0x010402ac; + /** Custom postal address type + */ + public static final int postalTypeCustom=0x010402d6; + /** Home postal address type + */ + public static final int postalTypeHome=0x010402d7; + /** Other postal address type + */ + public static final int postalTypeOther=0x010402d9; + /** Work postal address type + */ + public static final int postalTypeWork=0x010402d8; + /** Button to turn off the phone, within the Phone Options dialog + */ + public static final int power_off=0x010400b9; + /** Prepended to the shortcut for a menu item to indicate that the user should hold the MENU button together with the shortcut to invoke the item. For example, if the shortcut to open a new tab in browser is MENU and B together, then this would be prepended to the letter "B" + */ + public static final int prepend_shortcut_label=0x010403c3; + /** String used to display the date. Preposition for date display ("on May 29") + */ + public static final int preposition_for_date=0x010403d2; + /** String used to display the date. Preposition for time display ("at 2:33am") + */ + public static final int preposition_for_time=0x010403d3; + /** Message for the notification that a print service was installed. [CHAR LIMIT=50] + */ + public static final int print_service_installed_message=0x010405e1; + /** Title for the notification that a print service was installed. [CHAR LIMIT=50] + */ + public static final int print_service_installed_title=0x010405e0; + /** Text for progress dialog while erasing SD card [CHAR LIMIT=NONE] + */ + public static final int progress_erasing=0x010404d1; + /** Text for progress dialog while unmounting SD card [CHAR LIMIT=NONE] + */ + public static final int progress_unmounting=0x010404d0; + /** Error message that is displayed when the user clicks on a quick contacts badge, but + there is no contacts application installed that can display the quick contact + */ + public static final int quick_contacts_not_available=0x010402fe; + /** Print fail reason: the print service that has to process the print job is not available. [CHAR LIMIT=none] + */ + public static final int reason_service_unavailable=0x010405df; + /** Print fail reason: unknown. [CHAR LIMIT=25] + */ + public static final int reason_unknown=0x010405de; + /** Shutdown Confirmation Dialog. Message in the confirmation dialog + when the user asks to reboot into safe mode. [CHAR LIMIT=NONE] + */ + public static final int reboot_safemode_confirm=0x010400c1; + /** Title of dialog to confirm rebooting into safe mode. [CHAR LIMIT=50] + */ + public static final int reboot_safemode_title=0x010400c0; + /** Assistant relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeAssistant=0x010402ec; + /** Brother relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeBrother=0x010402ed; + /** Child relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeChild=0x010402ee; + /** Domestic Partner relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeDomesticPartner=0x010402ef; + /** Father relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeFather=0x010402f0; + /** Friend relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeFriend=0x010402f1; + /** Manager relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeManager=0x010402f2; + /** Mother relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeMother=0x010402f3; + /** Parent relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeParent=0x010402f4; + /** Partner relationship type [CHAR LIMIT=20] + */ + public static final int relationTypePartner=0x010402f5; + /** Referred by relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeReferredBy=0x010402f6; + /** Relative relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeRelative=0x010402f7; + /** Sister relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeSister=0x010402f8; + /** Spouse relationship type [CHAR LIMIT=20] + */ + public static final int relationTypeSpouse=0x010402f9; + /** Format indicating a relative expression and time. + Example: "4 hours ago, 11:00 am" + */ + public static final int relative_time=0x010403e1; + /** Item on EditText context menu. This action is used to replace the current word by other suggested words, suggested by the IME or the spell checker + */ + public static final int replace=0x010403e8; + /** Button allowing the user to send a bug report for application which has encountered an error. + */ + public static final int report=0x01040406; + /** Label for button in html + */ + public static final int reset=0x010404c0; + /** PIN entry dialog title for entering the administrator PIN [CHAR LIMIT=none] + */ + public static final int restr_pin_enter_admin_pin=0x010405e2; + /** PIN entry dialog label/hint for PIN [CHAR LIMIT=none] + */ + public static final int restr_pin_enter_pin=0x010405e3; + /** PIN entry dialog label/hint for incorrect PIN entry [CHAR LIMIT=none] + */ + public static final int restr_pin_incorrect=0x010405e4; + /** PIN entry dialog tells the user to not enter a PIN for a while. [CHAR LIMIT=none] + */ + public static final int restr_pin_try_later=0x010405eb; + public static final int revoke=0x01040588; + /** Choice in the ringtone picker. If chosen, the default ringtone will be used. + */ + public static final int ringtone_default=0x0104042c; + /** Choice in the ringtone picker. If chosen, the default ringtone will be used. This fills in the actual ringtone's title into the message. + */ + public static final int ringtone_default_with_actual=0x0104042d; + /** The title of the ringtone picker dialog. + */ + public static final int ringtone_picker_title=0x0104042f; + /** Choice in the ringtone picker. If chosen, there will be silence instead of a ringtone played. + */ + public static final int ringtone_silent=0x0104042e; + /** If there is ever a ringtone set for some setting, but that ringtone can no longer be resolved, t his is shown instead. For example, if the ringtone was on a SD card and it had been removed, this woudl be shown for ringtones on that SD card. + */ + public static final int ringtone_unknown=0x01040430; + /** Default roaming indicator text + */ + public static final int roamingText0=0x01040088; + public static final int roamingText1=0x01040089; + public static final int roamingText10=0x01040092; + public static final int roamingText11=0x01040093; + public static final int roamingText12=0x01040094; + public static final int roamingText2=0x0104008a; + public static final int roamingText3=0x0104008b; + public static final int roamingText4=0x0104008c; + public static final int roamingText5=0x0104008d; + public static final int roamingText6=0x0104008e; + public static final int roamingText7=0x0104008f; + public static final int roamingText8=0x01040090; + public static final int roamingText9=0x01040091; + public static final int roamingTextSearching=0x01040095; + /** Message shown in dialog when user is attempting to set the music volume above the + recommended maximum level for headphones + */ + public static final int safe_media_volume_warning=0x0104057f; + /** Title of the WebView save password dialog. If the user enters a password in a form on a website, a dialog will come up asking if they want to save the password. + */ + public static final int save_password_label=0x0104036b; + /** If the user enters a password in a form on a website, a dialog will come up asking if they want to save the password. Text in the save password dialog, asking if the browser should remember a password. + */ + public static final int save_password_message=0x010403bc; + /** Button in the save password dialog, saying never to remember this password. This should be short. Should be "Never for this site". But it is too long, use "Never" instead + */ + public static final int save_password_never=0x010403bf; + /** If the user enters a password in a form on a website, a dialog will come up asking if they want to save the password. Button in the save password dialog, saying not to remember this password. + */ + public static final int save_password_notnow=0x010403bd; + /** If the user enters a password in a form on a website, a dialog will come up asking if they want to save the password. Button in the save password dialog, saying to remember this password. + */ + public static final int save_password_remember=0x010403be; + /** This is the default button label in the system-wide search UI. + It is also used by the home screen's search "widget". It should be short + */ + public static final int search_go=0x0104000c; + /** Item on EditText context menu. This action is used to select all text in the edit field. + */ + public static final int selectAll=0x0104000d; + /** Item on EditText context menu. Added only when the context menu is not empty, it enable selection context mode. [CHAR LIMIT=20] + */ + public static final int selectTextMode=0x01040016; + /** Title of the pop-up dialog in which the user switches input method components. + */ + public static final int select_input_method=0x0104047d; + /** Message of the notification to prompt the user to select a keyboard layout. + */ + public static final int select_keyboard_layout_notification_message=0x01040482; + /** Title of the notification to prompt the user to select a keyboard layout. + */ + public static final int select_keyboard_layout_notification_title=0x01040481; + /** Displayed in the title of the chooser for things to do with text that + is to be sent to another application. For example, I can send + text through SMS or IM. A dialog with those choices would be shown, + and this would be the title. + */ + public static final int sendText=0x0104041d; + /** STK sending DTMF, SMS, USSD, SS + */ + public static final int sending=0x0104053b; + /** Example: Service was enabled for: Voice, Data + */ + public static final int serviceClassData=0x01040081; + /** Meaning: asynchronous data. Example: Service was enabled for: Voice, Async + */ + public static final int serviceClassDataAsync=0x01040084; + /** Meaning: synchronous data. Example: Service was enabled for: Voice, Async + */ + public static final int serviceClassDataSync=0x01040085; + /** Example: Service was enabled for: Voice, FAX + */ + public static final int serviceClassFAX=0x01040082; + /** Meaning: unknown. Example: Service was enabled for: Voice, PAD + */ + public static final int serviceClassPAD=0x01040087; + /** Meaning: packet data. Example: Service was enabled for: Voice, Packet + */ + public static final int serviceClassPacket=0x01040086; + /** Example: Service was enabled for: Voice, SMS + */ + public static final int serviceClassSMS=0x01040083; + /** Example: Service was enabled for: Voice, Data + */ + public static final int serviceClassVoice=0x01040080; + /** Displayed when a phone feature such as call forwarding was deactivated. + */ + public static final int serviceDisabled=0x01040055; + /** Displayed when a phone feature such as call barring was activated. + */ + public static final int serviceEnabled=0x01040053; + /** Displayed in front of the list of a set of service classes + (voice, data, fax, etc.) that were enabled. + */ + public static final int serviceEnabledFor=0x01040054; + /** Displayed when a phone property such as a SIM password was erased. + */ + public static final int serviceErased=0x01040057; + /** Displayed to tell the user that caller ID is not provisioned for their SIM. + */ + public static final int serviceNotProvisioned=0x01040075; + /** Displayed when a phone property such as a SIM password was registered. + */ + public static final int serviceRegistered=0x01040056; + /** Text to show in the auto complete drop down list on a text view when the WebView can auto fill the entire form but the user has not configured an AutoFill profile [CHAR-LIMIT=19] + */ + public static final int setup_autofill=0x0104036e; + /** Text for WebView's text selection Action Mode + ActionBar action to share the current selection [CHAR LIMIT=10] + */ + public static final int share=0x010404d8; + /** ShareActionProvider - accessibility support + Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] + */ + public static final int shareactionprovider_share_with=0x01040503; + /** Description of a share target (both in the list of such or the default share button) in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] + */ + public static final int shareactionprovider_share_with_application=0x01040504; + /** Shutdown Confirmation Dialog. When the user chooses to power off the phone, there will + be a confirmation dialog. This is the message. + */ + public static final int shutdown_confirm=0x010400be; + /** Shutdown Confirmation Dialog. When the user chooses to power off the phone, it asks + the user if they'd like to shut down. This is the message. This is used instead of + shutdown_confirm when the system is configured to use long press to go directly to the + power off dialog instead of the global actions menu. + */ + public static final int shutdown_confirm_question=0x010400bf; + /** Shutdown Progress Dialog. This is shown if the user chooses to power off the phone. + */ + public static final int shutdown_progress=0x010400bd; + /** See SIM_ADDED_DIALOG. This is the message of that dialog. + */ + public static final int sim_added_message=0x01040457; + /** See SIM_ADDED_DIALOG. This is the title of that dialog. + */ + public static final int sim_added_title=0x01040456; + /** See SIM_REMOVED_DIALOG. This is the message of that dialog. + */ + public static final int sim_removed_message=0x01040454; + /** See SIM_REMOVED_DIALOG. This is the title of that dialog. + */ + public static final int sim_removed_title=0x01040453; + /** See SIM_ADDED_DIALOG. This is the button of that dialog. + */ + public static final int sim_restart_button=0x01040458; + /** Custom SIP address type. Same context as Custom phone type. + */ + public static final int sipAddressTypeCustom=0x010402fa; + /** Home SIP address type. Same context as Home phone type. + */ + public static final int sipAddressTypeHome=0x010402fb; + /** Other SIP address type. Same context as Other phone type. + */ + public static final int sipAddressTypeOther=0x010402fd; + /** Work SIP address type. Same context as Work phone type. + */ + public static final int sipAddressTypeWork=0x010402fc; + /** See SMS_DIALOG. This is the message shown in that dialog. [CHAR LIMIT=NONE] + */ + public static final int sms_control_message=0x01040447; + /** See SMS_DIALOG. This is a button choice to disallow sending the SMSes. [CHAR LIMIT=30] + */ + public static final int sms_control_no=0x01040449; + /** SMS_DIALOG: An SMS dialog is shown if an application tries to send too many SMSes. This is the title of that dialog. + */ + public static final int sms_control_title=0x01040446; + /** See SMS_DIALOG. This is a button choice to allow sending the SMSes. [CHAR LIMIT=30] + */ + public static final int sms_control_yes=0x01040448; + /** Message details for the SMS short code confirmation dialog (premium short code). [CHAR LIMIT=NONE] + syntax error in translation for sms_short_code_details (3492025719868078457) org.xmlpull.v1.XmlPullParserException: expected: /string read: font (position:END_TAG @1:83 in "මෙය ""ඔබගේ ජංගම ගිණුමේ"" අය වීම් වලට හේතුවක් වේ." +) + syntax error in translation for sms_short_code_details (3492025719868078457) org.xmlpull.v1.XmlPullParserException: expected: /string read: font (position:END_TAG @1:83 in "මෙය ""ඔබගේ ජංගම ගිණුමේ"" අය වීම් වලට හේතුවක් වේ." +) + */ + public static final int sms_premium_short_code_details=0x0104044c; + /** Text of the approval button for the SMS short code confirmation dialog. [CHAR LIMIT=30] + */ + public static final int sms_short_code_confirm_allow=0x0104044d; + /** Text of the approval button for the SMS short code confirmation dialog when checkbox is checked. [CHAR LIMIT=30] + */ + public static final int sms_short_code_confirm_always_allow=0x01040451; + /** Text of the cancel button for the SMS short code confirmation dialog. [CHAR LIMIT=30] + */ + public static final int sms_short_code_confirm_deny=0x0104044e; + /** The message text for the SMS short code confirmation dialog. [CHAR LIMIT=NONE] + */ + public static final int sms_short_code_confirm_message=0x0104044a; + /** Text of the cancel button for the SMS short code confirmation dialog when checkbox is checked. [CHAR LIMIT=30] + */ + public static final int sms_short_code_confirm_never_allow=0x01040452; + /** Message details for the SMS short code confirmation dialog (possible premium short code). [CHAR LIMIT=NONE] + */ + public static final int sms_short_code_details=0x0104044b; + /** Text shown when remember checkbox is checked to inform the user how they may undo the setting. [CHAR LIMIT=40] + */ + public static final int sms_short_code_remember_undo_instruction=0x01040450; + /** Text of the alert that is displayed when an application has violated StrictMode. + */ + public static final int smv_application=0x0104040f; + /** Text of the alert that is displayed when an application has violated StrictMode. + */ + public static final int smv_process=0x01040410; + /** Content text for a notification. The Title of the notification is "ssl_ca_cert_warning", + i.e. "Network may be monitored". This says that an unknown party is doing the monitoring. + [CHAR LIMIT=100] + */ + public static final int ssl_ca_cert_noti_by_unknown=0x010400b1; + /** Content text for a notification. The Title of the notification is "ssl_ca_cert_warning", + i.e. "Network may be monitored". This indicates who is doing the monitoring. + [CHAR LIMIT=100] + */ + public static final int ssl_ca_cert_noti_managed=0x010400b2; + /** Shows up when there is a user SSL CA Cert installed on the + device. Indicates to the user that SSL traffic can be intercepted. [CHAR LIMIT=NONE] + */ + public static final int ssl_ca_cert_warning=0x010400b0; + /** SSL Certificate dialogs + Title for an SSL Certificate dialog + */ + public static final int ssl_certificate=0x01040529; + /** Message on an SSL Certificate dialog + */ + public static final int ssl_certificate_is_valid=0x0104052a; + /** Text to use when the number in a notification info is too large + (greater than status_bar_notification_info_maxnum, defined in + values/config.xml) and must be truncated. May need to be localized + for most appropriate textual indicator of "more than X". + [CHAR LIMIT=4] + */ + public static final int status_bar_notification_info_overflow=0x01040017; + /** Label for button in html + */ + public static final int submit=0x010404c1; + /** Label to show for a service that is running because it is a sync adapter. + */ + public static final int sync_binding_label=0x010404b0; + /** Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to do nothing for now + */ + public static final int sync_do_nothing=0x010404e6; + /** Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to delete the items + */ + public static final int sync_really_delete=0x010404e4; + /** Dialog message for when there are too many deletes that would take place and we want user confirmation + */ + public static final int sync_too_many_deletes_desc=0x010404e3; + /** Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to undo the deletions + */ + public static final int sync_undo_deletes=0x010404e5; + /** @hide DO NOT TRANSLATE. date formatting pattern for system ui. + */ + public static final int system_ui_date_pattern=0x01040047; + /** Suffix added to a number to signify size in terabytes. + */ + public static final int terabyteShort=0x0104004c; + public static final int tethered_notification_message=0x010404c5; + /** Strings for tethered notification + Shown when the device is tethered + */ + public static final int tethered_notification_title=0x010404c4; + /** Text selection contextual mode title, displayed in the CAB. [CHAR LIMIT=20] + */ + public static final int textSelectionCABTitle=0x010403ea; + /** Displayed to the user to confirm that they have copied text from a web page to the clipboard. + */ + public static final int text_copied=0x010403c1; + public static final int throttle_warning_notification_message=0x010404ca; + /** Strings for throttling notification + Shown when the user is in danger of being throttled + */ + public static final int throttle_warning_notification_title=0x010404c9; + public static final int throttled_notification_message=0x010404cc; + /** Strings for throttling notification + Shown when the users bandwidth is reduced because of excessive data use + */ + public static final int throttled_notification_title=0x010404cb; + public static final int time_of_day=0x0104003d; + /** Description of the button to decrease the TimePicker's hour value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_decrement_hour_button=0x010404f1; + /** Description of the button to decrease the TimePicker's minute value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_decrement_minute_button=0x010404ef; + /** Description of the button to decrease the TimePicker's set AM value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_decrement_set_am_button=0x010404f3; + /** Date/Time picker dialogs strings + The title of the time picker dialog. [CHAR LIMIT=NONE] + */ + public static final int time_picker_dialog_title=0x01040459; + /** Description of the button to increase the TimePicker's hour value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_increment_hour_button=0x010404f0; + /** TimePicker - accessibility support + Description of the button to increase the TimePicker's minute value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_increment_minute_button=0x010404ee; + /** Description of the button to increase the TimePicker's set PM value. [CHAR LIMIT=NONE] + */ + public static final int time_picker_increment_set_pm_button=0x010404f2; + /** How to display the lack of a name + */ + public static final int unknownName=0x0104000e; + /** Used in Contacts for a field that has no label and in Note Pad + for a note with no name. + */ + public static final int untitled=0x0104000f; + /** Localized strings for WebView + Label for button in a WebView that will open a chooser to choose a file to upload + */ + public static final int upload_file=0x010404be; + /** USB_PREFERENCES: Notification for when a USB accessory is attached. This is the title + */ + public static final int usb_accessory_notification_title=0x01040475; + /** USB_PREFERENCES: Notification for when the user connects the phone to a computer via USB in mass storage mode (for installer CD image). This is the title + */ + public static final int usb_cd_installer_notification_title=0x01040474; + /** USB_PREFERENCES: Notification for when the user connects the phone to a computer via USB in MTP mode. This is the title + */ + public static final int usb_mtp_notification_title=0x01040472; + /** See USB_PREFERENCES. This is the message. + */ + public static final int usb_notification_message=0x01040476; + /** USB_PREFERENCES: Notification for when the user connects the phone to a computer via USB in PTP mode. This is the title + */ + public static final int usb_ptp_notification_title=0x01040473; + /** See USB_STORAGE_DIALOG. If there was an error mounting, this is the text. + */ + public static final int usb_storage_error_message=0x01040465; + /** See USB_STORAGE. This is the message. [CHAR LIMIT=NONE] + */ + public static final int usb_storage_message=0x01040463; + /** See USB_STORAGE. This is the message. + */ + public static final int usb_storage_notification_message=0x01040467; + /** USB_STORAGE: When the user connects the phone to a computer via USB, we show a notification asking if he wants to share files across. This is the title + */ + public static final int usb_storage_notification_title=0x01040466; + /** See USB_STORAGE_STOP. This is the message. + */ + public static final int usb_storage_stop_message=0x0104046b; + /** See USB_STORAGE. This is the message. + */ + public static final int usb_storage_stop_notification_message=0x01040469; + /** USB_STORAGE_STOP: While USB storage is enabled, we show a notification dialog asking if he wants to stop. This is the title + */ + public static final int usb_storage_stop_notification_title=0x01040468; + /** USB storage stop dialog strings + This is the label for the activity, and should never be visible to the user. + See USB_STORAGE_STOP. USB_STORAGE_STOP_DIALOG: After the user selects the notification, a dialog is shown asking if he wants to stop usb storage. This is the title. + */ + public static final int usb_storage_stop_title=0x0104046a; + /** See USB_STORAGE. USB_STORAGE_DIALOG: After the user selects the notification, a dialog is shown asking if he wants to mount. This is the title. + */ + public static final int usb_storage_title=0x01040462; + /** Summary text of a toggle switch to enable/disable use of the physical keyboard in the input method selector [CHAR LIMIT=25] + */ + public static final int use_physical_keyboard=0x0104047f; + /** Text spoken when the current user is switched if accessibility is enabled. [CHAR LIMIT=none] + */ + public static final int user_switched=0x01040583; + /** Title of the dialog where the user is adjusting the audio volume for alarms + */ + public static final int volume_alarm=0x01040424; + /** Content description for bluetooth volume icon [CHAR LIMIT=100] + */ + public static final int volume_icon_description_bluetooth=0x01040427; + /** Content description for in-call volume icon [CHAR LIMIT=100] + */ + public static final int volume_icon_description_incall=0x01040429; + /** Content description for media volume icon [CHAR LIMIT=100] + */ + public static final int volume_icon_description_media=0x0104042a; + /** Content description for notification volume icon [CHAR LIMIT=100] + */ + public static final int volume_icon_description_notification=0x0104042b; + /** Content description for ringer volume icon [CHAR LIMIT=100] + */ + public static final int volume_icon_description_ringer=0x01040428; + /** Notification body that indicates user can touch to configure lockdown VPN connection. + */ + public static final int vpn_lockdown_config=0x010404bd; + /** Notification title when connected to lockdown VPN. + */ + public static final int vpn_lockdown_connected=0x010404bb; + /** Notification title when connecting to lockdown VPN. + */ + public static final int vpn_lockdown_connecting=0x010404ba; + /** Notification title when error connecting to lockdown VPN. + */ + public static final int vpn_lockdown_error=0x010404bc; + /** The text of the notification when VPN is active. + */ + public static final int vpn_text=0x010404b8; + /** The text of the notification when VPN is active with a session name. + */ + public static final int vpn_text_long=0x010404b9; + /** The title of the notification when VPN is active. + */ + public static final int vpn_title=0x010404b6; + /** The title of the notification when VPN is active with an application name. + */ + public static final int vpn_title_long=0x010404b7; + /** Button allowing the user to choose to wait for an application that is not responding to become responsive again. + */ + public static final int wait=0x01040407; + /** Label to show for a service that is running because it is a wallpaper. + */ + public static final int wallpaper_binding_label=0x010404b2; + /** Do not translate. WebView User Agent string + */ + public static final int web_user_agent=0x01040363; + /** Do not translate. WebView User Agent targeted content + Do not translate. WebView User Agent targeted content + Do not translate. WebView User Agent targeted content + */ + public static final int web_user_agent_target_content=0x01040364; + /** Text of the alert that is displayed when a web page is not responding. [CHAR-LIMIT=NONE] + */ + public static final int webpage_unresponsive=0x01040408; + /** ActionBar action to use the current selection to perform a web search [CHAR-LIMIT=16] + */ + public static final int websearch=0x010404da; + /** Content description for the content view that holds the web contents [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_content_view=0x01040620; + /** Content description for the date time picker month component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_date_picker_month=0x01040630; + /** Content description for the date time picker week component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_date_picker_week=0x01040631; + /** Content description for the date time picker year component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_date_picker_year=0x01040632; + /** Content description for the date time picker date component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_datetime_picker_date=0x0104062e; + /** Content description for the date time picker time component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_datetime_picker_time=0x0104062f; + /** Content description for the time picker AM/PM component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_time_picker_ampm=0x01040637; + /** Content description for the time picker hour component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_time_picker_hour=0x01040633; + /** Content description for the time picker milli component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_time_picker_milli=0x01040636; + /** Content description for the time picker minute component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_time_picker_minute=0x01040634; + /** Content description for the time picker second component. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_accessibility_time_picker_second=0x01040635; + /** Contextual action bar item for sharing a block of text via email, or + other method. [CHAR-LIMIT=24] + */ + public static final int webviewchromium_actionbar_share=0x0104061e; + /** Contextual action bar item for using the selected text in a internet + search. [CHAR-LIMIT=24] + */ + public static final int webviewchromium_actionbar_web_search=0x0104061f; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_black=0x0104064a; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_blue=0x01040646; + /** Label for button in Color Picker dialog for user to cancel picking a + color. [CHAR-LIMIT=20] + */ + public static final int webviewchromium_color_picker_button_cancel=0x01040642; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_cyan=0x01040645; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_green=0x01040647; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_magenta=0x01040648; + /** Text for Color Picker button to go to advanced view. [CHAR-LIMIT=20] + */ + public static final int webviewchromium_color_picker_button_more=0x0104063d; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_red=0x01040644; + /** Label for button in Color Picker dialog for user to accept the currently + chosen color. [CHAR-LIMIT=20] + */ + public static final int webviewchromium_color_picker_button_set=0x01040641; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_white=0x0104064b; + /** Label for Color Picker color button. + */ + public static final int webviewchromium_color_picker_button_yellow=0x01040649; + /** Title of Color Picker dialog. [CHAR-LIMIT=20] + */ + public static final int webviewchromium_color_picker_dialog_title=0x01040643; + /** Label for hue slider in Color Picker. + */ + public static final int webviewchromium_color_picker_hue=0x0104063e; + /** Label for saturation slider in Color Picker. + */ + public static final int webviewchromium_color_picker_saturation=0x0104063f; + /** Label for value slider in Color Picker. + */ + public static final int webviewchromium_color_picker_value=0x01040640; + /** Notification for when copying to the clipboard fails. [CHAR-LIMIT=64] + */ + public static final int webviewchromium_copy_to_clipboard_failure_message=0x0104064c; + /** Label for 'clear' button in date picker dialog, used to replace the contents of a field with the empty string [CHAR-LIMIT=12] + */ + public static final int webviewchromium_date_picker_dialog_clear=0x01040623; + /** Label for 'other' button in date picker dialog and time picker dialog, used to close the list of suggestions and open the the full date/time picker [CHAR-LIMIT=32] + */ + public static final int webviewchromium_date_picker_dialog_other_button_label=0x01040624; + /** Label for 'set' button in date picker dialog, used to replace the contents of a field with the chosen date [CHAR-LIMIT=12] + */ + public static final int webviewchromium_date_picker_dialog_set=0x01040622; + /** Date/time picker dialog strings + Title for the date picker dialog, which can be used to choose a date. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_date_picker_dialog_title=0x01040621; + /** Title for the date/time picker dialog, which can be used to choose a date and time. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_date_time_picker_dialog_title=0x01040625; + /** Error shown when the browser is restarted due to low memory during a file picker operation. [CHAR-LIMIT=NONE] + */ + public static final int webviewchromium_low_memory_error=0x0104064d; + /** NO DESCRIPTION [CHAR-LIMIT=16] + */ + public static final int webviewchromium_media_player_error_button=0x0104063b; + /** NO DESCRIPTION [CHAR-LIMIT=100] + */ + public static final int webviewchromium_media_player_error_text_invalid_progressive_playback=0x01040639; + /** NO DESCRIPTION [CHAR-LIMIT=100] + */ + public static final int webviewchromium_media_player_error_text_unknown=0x0104063a; + /** Media player + NO DESCRIPTION [CHAR-LIMIT=32] + */ + public static final int webviewchromium_media_player_error_title=0x01040638; + /** NO DESCRIPTION [CHAR-LIMIT=20] + */ + public static final int webviewchromium_media_player_loading_video=0x0104063c; + /** Title for the month picker dialog, which can be used to choose a month. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_month_picker_dialog_title=0x0104062c; + /** Toast when the browser is unable to open a file for upload. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_opening_file_error=0x0104064e; + /** Warning shown when the app tries to create a private browsing WebView, + which is not supported. [CHAR-LIMIT=NONE] + */ + public static final int webviewchromium_private_browsing_warning=0x0104064f; + /** Toast notifying the user that we failed to start the webview performance profiler [CHAR-LIMIT=80] + */ + public static final int webviewchromium_profiler_error_toast=0x01040653; + /** Toast notifying the user that we can't start the webview performance profiler because there's no external storage [CHAR-LIMIT=80] + */ + public static final int webviewchromium_profiler_no_storage_toast=0x01040652; + /** Toast notifying the user that the webview performance profiler started collecting data [CHAR-LIMIT=32] + */ + public static final int webviewchromium_profiler_started_toast=0x01040650; + /** Toast notifying the user that the webview performance profiler results were written to a file [CHAR-LIMIT=80] + */ + public static final int webviewchromium_profiler_stopped_toast=0x01040651; + /** Value for AM in AM/PM in the time picker dialog. AM represents the morning (ante-meridiem). [CHAR-LIMIT=4] + */ + public static final int webviewchromium_time_picker_dialog_am=0x01040627; + /** Separator used between hours and minutes in the time pickerr dialog (hh:mm) [CHAR-LIMIT=1] + */ + public static final int webviewchromium_time_picker_dialog_hour_minute_separator=0x01040629; + /** Separator used between minutes and seconds in the time picker dialog (hh:mm:ss) [CHAR-LIMIT=1] + */ + public static final int webviewchromium_time_picker_dialog_minute_second_separator=0x0104062a; + /** Value for PM in AM/PM in the time picker dialog. PM represents the afternoon (post-meridiem). [CHAR-LIMIT=4] + */ + public static final int webviewchromium_time_picker_dialog_pm=0x01040628; + /** Separator used between seconds and subseconds in the time picker dialog (hh:mm:ss.sss) [CHAR-LIMIT=1] + */ + public static final int webviewchromium_time_picker_dialog_second_subsecond_separator=0x0104062b; + /** Title for the time picker dialog, which can be used to choose a time. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_time_picker_dialog_title=0x01040626; + /** Title for the week picker dialog, which can be used to choose a week. [CHAR-LIMIT=32] + */ + public static final int webviewchromium_week_picker_dialog_title=0x0104062d; + /** Title of intent resolver dialog when selecting an application to run. + */ + public static final int whichApplication=0x010403f6; + /** Title of intent resolver dialog when selecting a HOME application to run. + */ + public static final int whichHomeApplication=0x010403f7; + /** Class name for default keyguard appwidget [DO NOT TRANSLATE] + */ + public static final int widget_default_class_name=0x0104001c; + /** Package name for default keyguard appwidget [DO NOT TRANSLATE] + */ + public static final int widget_default_package_name=0x0104001b; + /** A notification is shown when a wifi captive portal network is detected. This is the notification's title. + */ + public static final int wifi_available_sign_in=0x01040431; + /** Message of the notification to indicate an active wifi display connection. [CHAR LIMIT=80] + */ + public static final int wifi_display_notification_connected_message=0x0104055a; + /** Title of the notification to indicate an active wifi display connection. [CHAR LIMIT=50] + */ + public static final int wifi_display_notification_connected_title=0x01040559; + /** Message of the notification to indicate the process of connecting to a wifi display. [CHAR LIMIT=80] + */ + public static final int wifi_display_notification_connecting_message=0x01040558; + /** Title of the notification to indicate the process of connecting to a wifi display. [CHAR LIMIT=50] + */ + public static final int wifi_display_notification_connecting_title=0x01040557; + /** Label of a button to disconnect an active wifi display connection. [CHAR LIMIT=25] + */ + public static final int wifi_display_notification_disconnect=0x0104055b; + public static final int wifi_p2p_dialog_title=0x01040437; + public static final int wifi_p2p_enabled_notification_message=0x0104043b; + public static final int wifi_p2p_enabled_notification_title=0x0104043a; + public static final int wifi_p2p_failed_message=0x01040439; + public static final int wifi_p2p_frequency_conflict_message=0x01040444; + public static final int wifi_p2p_from_message=0x01040440; + public static final int wifi_p2p_invitation_sent_title=0x0104043e; + public static final int wifi_p2p_invitation_to_connect_title=0x0104043f; + public static final int wifi_p2p_show_pin_message=0x01040443; + public static final int wifi_p2p_to_message=0x01040441; + public static final int wifi_p2p_turnon_message=0x01040438; + /** Do not translate. Default access point SSID used for tethering + */ + public static final int wifi_tether_configure_ssid_default=0x01040436; + /** A notification is shown when a user's selected SSID is later disabled due to connectivity problems. This is the notification's title / ticker. + */ + public static final int wifi_watchdog_network_disabled=0x01040434; + /** A notification is shown when a user's selected SSID is later disabled due to connectivity problems. The complete alert msg is: + this string, i.e. "Linksys has a poor internet connection" + */ + public static final int wifi_watchdog_network_disabled_detailed=0x01040435; + /** Description of a wireless display route. [CHAR LIMIT=50] + */ + public static final int wireless_display_route_description=0x01040546; + /** Write fail reason: printing was cancelled.[CHAR LIMIT=none] + */ + public static final int write_fail_reason_cancelled=0x010405dc; + /** Write fail reason: couldn't write the printed content. [CHAR LIMIT=none] + */ + public static final int write_fail_reason_cannot_write=0x010405dd; + /** Preference framework strings. + */ + public static final int yes=0x01040013; + } + public static final class style { + /** Style to apply on top of a wallpaper settings theme when it is being + shown on top of the real wallpaper + */ + public static final int ActiveWallpaperSettings=0x010302fb; + /** Base style for animations. This style specifies no animations. + */ + public static final int Animation=0x01030000; + /** Standard animations for a full-screen window or activity. + */ + public static final int Animation_Activity=0x01030001; + /** Standard animations for a non-full-screen window or activity. + */ + public static final int Animation_Dialog=0x01030002; + /** Window animations for screen savers. {@hide} + */ + public static final int Animation_Dream=0x010301f9; + public static final int Animation_DropDownDown=0x010301ef; + public static final int Animation_DropDownUp=0x010301f0; + /** Window animations that are applied to input method overlay windows. + */ + public static final int Animation_InputMethod=0x01030056; + /** Special optional fancy IM animations. @hide + */ + public static final int Animation_InputMethodFancy=0x010301f1; + /** Standard animations for a non-full-screen window or activity. + */ + public static final int Animation_LockScreen=0x010301ea; + /** A special animation value used internally for popup windows. + */ + public static final int Animation_PopupWindow=0x010301f6; + /** A special animation we can use for recent applications, + for devices that can support it (do alpha transformations). + */ + public static final int Animation_RecentApplications=0x010301f5; + public static final int Animation_Toast=0x01030004; + /** Standard animations for a translucent window or activity. This + style is not used by default for the translucent theme + (since translucent activities are a special case that have no + clear UI paradigm), but you can make your own specialized theme + with this animation style if you would like to have the standard + platform transition animation. + */ + public static final int Animation_Translucent=0x01030003; + public static final int Animation_TypingFilter=0x010301ed; + public static final int Animation_TypingFilterRestore=0x010301ee; + /** Standard animations for wallpapers. + */ + public static final int Animation_Wallpaper=0x010301f4; + /** Window animations that are applied to the zoom buttons overlay window. + */ + public static final int Animation_ZoomButtons=0x010301f3; + /** Style you can use with a container (typically a horizontal + LinearLayout) to get the standard "button bar" background and + spacing. @hide + */ + public static final int ButtonBar=0x01030058; + /** Other Styles + */ + public static final int DeviceDefault_ButtonBar=0x010301cf; + public static final int DeviceDefault_ButtonBar_AlertDialog=0x010301d0; + public static final int DeviceDefault_Light_ButtonBar=0x010301d2; + public static final int DeviceDefault_Light_ButtonBar_AlertDialog=0x010301d3; + public static final int DeviceDefault_Light_SegmentedButton=0x010301d4; + public static final int DeviceDefault_SegmentedButton=0x010301d1; + public static final int Holo_ButtonBar=0x010300e5; + public static final int Holo_ButtonBar_AlertDialog=0x010300e7; + public static final int Holo_Light_ButtonBar=0x010300e6; + public static final int Holo_Light_ButtonBar_AlertDialog=0x010300e8; + public static final int Holo_Light_SegmentedButton=0x010300ea; + public static final int Holo_SegmentedButton=0x010300e9; + public static final int MediaButton=0x01030037; + public static final int MediaButton_Ffwd=0x0103003b; + public static final int MediaButton_Next=0x01030039; + public static final int MediaButton_Pause=0x0103003d; + public static final int MediaButton_Play=0x0103003a; + public static final int MediaButton_Previous=0x01030038; + public static final int MediaButton_Rew=0x0103003c; + /** Style to apply on top of a wallpaper settings theme when it is being + shown on top of the real wallpaper + */ + public static final int PreviewWallpaperSettings=0x010302fc; + public static final int TextAppearance=0x0103003e; + /** Text Appearance Styles + */ + public static final int TextAppearance_DeviceDefault=0x010301ad; + public static final int TextAppearance_DeviceDefault_DialogWindowTitle=0x010301b8; + public static final int TextAppearance_DeviceDefault_Inverse=0x010301ae; + public static final int TextAppearance_DeviceDefault_Large=0x010301af; + public static final int TextAppearance_DeviceDefault_Large_Inverse=0x010301b0; + public static final int TextAppearance_DeviceDefault_Medium=0x010301b1; + public static final int TextAppearance_DeviceDefault_Medium_Inverse=0x010301b2; + public static final int TextAppearance_DeviceDefault_SearchResult_Subtitle=0x010301b6; + public static final int TextAppearance_DeviceDefault_SearchResult_Title=0x010301b5; + public static final int TextAppearance_DeviceDefault_Small=0x010301b3; + public static final int TextAppearance_DeviceDefault_Small_Inverse=0x010301b4; + public static final int TextAppearance_DeviceDefault_Widget=0x010301b9; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Menu=0x010301ce; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle=0x010301c7; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse=0x010301cb; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title=0x010301c6; + public static final int TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse=0x010301ca; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle=0x010301c9; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse=0x010301cd; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title=0x010301c8; + public static final int TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse=0x010301cc; + public static final int TextAppearance_DeviceDefault_Widget_Button=0x010301ba; + public static final int TextAppearance_DeviceDefault_Widget_DropDownHint=0x010301bf; + public static final int TextAppearance_DeviceDefault_Widget_DropDownItem=0x010301c0; + public static final int TextAppearance_DeviceDefault_Widget_EditText=0x010301c2; + public static final int TextAppearance_DeviceDefault_Widget_IconMenu_Item=0x010301bb; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu=0x010301c3; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Large=0x010301c4; + public static final int TextAppearance_DeviceDefault_Widget_PopupMenu_Small=0x010301c5; + public static final int TextAppearance_DeviceDefault_Widget_TabWidget=0x010301bc; + public static final int TextAppearance_DeviceDefault_Widget_TextView=0x010301bd; + public static final int TextAppearance_DeviceDefault_Widget_TextView_PopupMenu=0x010301be; + public static final int TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem=0x010301c1; + public static final int TextAppearance_DeviceDefault_WindowTitle=0x010301b7; + public static final int TextAppearance_DialogWindowTitle=0x01030041; + /** Begin Holo theme styles + Text Styles + */ + public static final int TextAppearance_Holo=0x010300fb; + public static final int TextAppearance_Holo_DialogWindowTitle=0x01030117; + public static final int TextAppearance_Holo_Inverse=0x010300fc; + public static final int TextAppearance_Holo_Large=0x010300fd; + public static final int TextAppearance_Holo_Large_Inverse=0x010300fe; + public static final int TextAppearance_Holo_Medium=0x010300ff; + public static final int TextAppearance_Holo_Medium_Inverse=0x01030100; + public static final int TextAppearance_Holo_SearchResult_Subtitle=0x01030104; + public static final int TextAppearance_Holo_SearchResult_Title=0x01030103; + public static final int TextAppearance_Holo_Small=0x01030101; + public static final int TextAppearance_Holo_Small_Inverse=0x01030102; + public static final int TextAppearance_Holo_Widget=0x01030105; + public static final int TextAppearance_Holo_Widget_ActionBar_Menu=0x01030120; + public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle=0x01030113; + public static final int TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse=0x0103011d; + public static final int TextAppearance_Holo_Widget_ActionBar_Title=0x01030112; + public static final int TextAppearance_Holo_Widget_ActionBar_Title_Inverse=0x0103011c; + public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle=0x01030115; + public static final int TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse=0x0103011f; + public static final int TextAppearance_Holo_Widget_ActionMode_Title=0x01030114; + public static final int TextAppearance_Holo_Widget_ActionMode_Title_Inverse=0x0103011e; + public static final int TextAppearance_Holo_Widget_Button=0x01030106; + public static final int TextAppearance_Holo_Widget_DropDownHint=0x0103010b; + public static final int TextAppearance_Holo_Widget_DropDownItem=0x0103010c; + public static final int TextAppearance_Holo_Widget_EditText=0x0103010e; + public static final int TextAppearance_Holo_Widget_IconMenu_Item=0x01030107; + public static final int TextAppearance_Holo_Widget_PopupMenu=0x0103010f; + public static final int TextAppearance_Holo_Widget_PopupMenu_Large=0x01030110; + public static final int TextAppearance_Holo_Widget_PopupMenu_Small=0x01030111; + /** This style is for smaller screens; values-xlarge defines a version + for larger screens. + */ + public static final int TextAppearance_Holo_Widget_TabWidget=0x01030108; + public static final int TextAppearance_Holo_Widget_TextView=0x01030109; + public static final int TextAppearance_Holo_Widget_TextView_PopupMenu=0x0103010a; + public static final int TextAppearance_Holo_Widget_TextView_SpinnerItem=0x0103010d; + public static final int TextAppearance_Holo_WindowTitle=0x01030116; + public static final int TextAppearance_Inverse=0x0103003f; + public static final int TextAppearance_Large=0x01030042; + public static final int TextAppearance_Large_Inverse=0x01030043; + public static final int TextAppearance_Medium=0x01030044; + public static final int TextAppearance_Medium_Inverse=0x01030045; + public static final int TextAppearance_NumPadKey=0x010302b0; + public static final int TextAppearance_NumPadKey_Klondike=0x010302b1; + /** @hide + */ + public static final int TextAppearance_SearchResult_Subtitle=0x01030064; + /** @hide + */ + public static final int TextAppearance_SearchResult_Title=0x01030063; + /** @hide + */ + public static final int TextAppearance_SlidingTabActive=0x0103021f; + /** @hide + */ + public static final int TextAppearance_SlidingTabNormal=0x0103021e; + public static final int TextAppearance_Small=0x01030046; + public static final int TextAppearance_Small_Inverse=0x01030047; + /** Notification content styles + */ + public static final int TextAppearance_StatusBar_EventContent=0x01030067; + public static final int TextAppearance_StatusBar_EventContent_Title=0x01030068; + public static final int TextAppearance_StatusBar_Icon=0x01030066; + public static final int TextAppearance_StatusBar_Title=0x01030065; + public static final int TextAppearance_SuggestionHighlight=0x01030118; + public static final int TextAppearance_Theme=0x01030040; + public static final int TextAppearance_Theme_Dialog=0x01030048; + public static final int TextAppearance_Widget=0x01030049; + public static final int TextAppearance_Widget_Button=0x0103004a; + public static final int TextAppearance_Widget_DropDownHint=0x01030050; + public static final int TextAppearance_Widget_DropDownItem=0x01030051; + public static final int TextAppearance_Widget_EditText=0x0103004c; + public static final int TextAppearance_Widget_IconMenu_Item=0x0103004b; + public static final int TextAppearance_Widget_PopupMenu_Large=0x01030080; + public static final int TextAppearance_Widget_PopupMenu_Small=0x01030081; + public static final int TextAppearance_Widget_TabWidget=0x0103004d; + public static final int TextAppearance_Widget_TextView=0x0103004e; + public static final int TextAppearance_Widget_TextView_PopupMenu=0x0103004f; + public static final int TextAppearance_Widget_TextView_SpinnerItem=0x01030052; + public static final int TextAppearance_WindowTitle=0x01030053; + /** The default theme for apps on API level 10 and lower. This is the theme used for + activities that have not explicitly set their own theme. +

You can count on this being a dark + background with light text on top, but should try to make no + other assumptions about its appearance. In particular, the text + inside of widgets using this theme may be completely different, + with the widget container being a light color and the text on top + of it a dark color. +

If you're developing for API level 11 and higher, you should instead use {@link + #Theme_Holo} or {@link #Theme_DeviceDefault}.

+ + */ + public static final int Theme=0x01030005; + /** Variant on {@link #Theme} that ensures the background is + completely black. This is useful for things like image viewers and + media players. If you want the normal (dark background) theme + do not use this, use {@link #Theme}. + */ + public static final int Theme_Black=0x01030008; + /** Variant of {@link #Theme_Black} with no title bar + */ + public static final int Theme_Black_NoTitleBar=0x01030009; + /** Variant of {@link #Theme_Black} that has no title bar and + no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Black_NoTitleBar_Fullscreen=0x0103000a; + /** The default theme for apps that target API level 14 and higher. +

The DeviceDefault themes are aliases for a specific device’s native look and feel. The + DeviceDefault theme family and widget style family offer ways for you to target your app + to a device’s native theme with all device customizations intact.

+

For example, when you set your app's {@code targetSdkVersion} to 14 or higher, this + theme is applied to your application by default. As such, your app might appear with the + {@link #Theme_Holo Holo} styles on one device, but with a different set of styles on + another device. This is great if you want your app to fit with the device's native look and + feel. If, however, you prefer to keep your UI style the same across all devices, you should + apply a specific theme such as {@link #Theme_Holo Holo} or one of your own design. For more + information, read Holo + Everywhere.

+

Styles used by the DeviceDefault theme are named using the convention + Type.DeviceDefault.Etc (for example, {@code Widget.DeviceDefault.Button} and + {@code TextAppearance.DeviceDefault.Widget.PopupMenu.Large}).

+ + */ + public static final int Theme_DeviceDefault=0x01030128; + /** DeviceDefault theme for dialog windows and activities. This changes the window to be + floating (not fill the entire screen), and puts a frame around its contents. You can set this + theme on an activity if you would like to make an activity that looks like a Dialog. + */ + public static final int Theme_DeviceDefault_Dialog=0x0103012e; + public static final int Theme_DeviceDefault_Dialog_Alert=0x0103031a; + /** Variant of {@link #Theme_DeviceDefault_Dialog} that has a nice minimum width for a + regular dialog. + */ + public static final int Theme_DeviceDefault_Dialog_MinWidth=0x0103012f; + /** Variant of {@link #Theme_DeviceDefault_Dialog} without an action bar + */ + public static final int Theme_DeviceDefault_Dialog_NoActionBar=0x01030130; + /** Variant of {@link #Theme_DeviceDefault_Dialog_NoActionBar} that has a nice minimum width + for a regular dialog. + */ + public static final int Theme_DeviceDefault_Dialog_NoActionBar_MinWidth=0x01030131; + public static final int Theme_DeviceDefault_Dialog_NoFrame=0x0103031e; + /** DeviceDefault theme for a window that will be displayed either full-screen on smaller + screens (small, normal) or as a dialog on larger screens (large, xlarge). + */ + public static final int Theme_DeviceDefault_DialogWhenLarge=0x01030136; + /** DeviceDefault theme for a window without an action bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens (large, + xlarge). + */ + public static final int Theme_DeviceDefault_DialogWhenLarge_NoActionBar=0x01030137; + /** DeviceDefault style for input methods, which is used by the + {@link android.inputmethodservice.InputMethodService} class. + */ + public static final int Theme_DeviceDefault_InputMethod=0x0103013e; + /** Variant of {@link #Theme_DeviceDefault} with a light-colored style + */ + public static final int Theme_DeviceDefault_Light=0x0103012b; + /** Variant of the DeviceDefault (light) theme that has a solid (opaque) action bar with an + inverse color profile. + */ + public static final int Theme_DeviceDefault_Light_DarkActionBar=0x0103013f; + /** DeviceDefault light theme for dialog windows and activities. This changes the window to be + floating (not fill the entire screen), and puts a frame around its contents. You can set this + theme on an activity if you would like to make an activity that looks like a Dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog=0x01030132; + public static final int Theme_DeviceDefault_Light_Dialog_Alert=0x0103031b; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog} that has a nice minimum width for a + regular dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog_MinWidth=0x01030133; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog} without an action bar + */ + public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar=0x01030134; + /** Variant of {@link #Theme_DeviceDefault_Light_Dialog_NoActionBar} that has a nice minimum + width for a regular dialog. + */ + public static final int Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth=0x01030135; + /** DeviceDefault light theme for a window that will be displayed either full-screen on smaller + screens (small, normal) or as a dialog on larger screens (large, xlarge). + */ + public static final int Theme_DeviceDefault_Light_DialogWhenLarge=0x01030138; + /** DeviceDefault light theme for a window without an action bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens (large, + xlarge). + */ + public static final int Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar=0x01030139; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar + */ + public static final int Theme_DeviceDefault_Light_NoActionBar=0x0103012c; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar and no status bar. + This theme sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_Fullscreen=0x0103012d; + /** Variant of {@link #Theme_DeviceDefault_Light} with no action bar and no status bar + and extending in to overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_Overscan=0x010301e0; + /** Variant of {@link #Theme_DeviceDefault_Light} that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor=0x010301e4; + /** DeviceDefault light theme for panel windows. This removes all extraneous window + decorations, so you basically have an empty rectangle in which to place your content. It makes + the window floating, with a transparent background, and turns off dimming behind the window. + */ + public static final int Theme_DeviceDefault_Light_Panel=0x0103013b; + /** Variant of {@link #Theme_DeviceDefault} with no action bar + */ + public static final int Theme_DeviceDefault_NoActionBar=0x01030129; + /** Variant of {@link #Theme_DeviceDefault} with no action bar and no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_Fullscreen=0x0103012a; + /** Variant of {@link #Theme_DeviceDefault} with no action bar and no status bar and + extending in to overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_Overscan=0x010301df; + /** Variant of {@link #Theme_DeviceDefault} that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_DeviceDefault_NoActionBar_TranslucentDecor=0x010301e3; + /** DeviceDefault theme for panel windows. This removes all extraneous window + decorations, so you basically have an empty rectangle in which to place your content. It makes + the window floating, with a transparent background, and turns off dimming behind the window. + */ + public static final int Theme_DeviceDefault_Panel=0x0103013a; + /** DeviceDefault theme for windows that want to have the user's selected wallpaper appear + behind them. + */ + public static final int Theme_DeviceDefault_Wallpaper=0x0103013c; + /** DeviceDefault theme for windows that want to have the user's selected wallpaper appear + behind them and without an action bar. + */ + public static final int Theme_DeviceDefault_Wallpaper_NoTitleBar=0x0103013d; + /** Default theme for dialog windows and activities (on API level 10 and lower), + which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + */ + public static final int Theme_Dialog=0x0103000b; + /** Default theme for alert dialog windows (on API level 10 and lower), which is used by the + {@link android.app.AlertDialog} class. This is basically a dialog + but sets the background to empty so it can do two-tone backgrounds. + */ + public static final int Theme_Dialog_Alert=0x010302fe; + /** @hide + */ + public static final int Theme_Dialog_AppError=0x01030307; + /** Special theme for the recent apps dialog, to allow customization + with overlays. + */ + public static final int Theme_Dialog_RecentApplications=0x01030308; + public static final int Theme_ExpandedMenu=0x01030304; + /** Honeycomb holographic theme (dark version). +

This is the default system theme for apps that target API level 11 - 13. Starting + with API level 14, the default system theme is supplied by {@link #Theme_DeviceDefault}, + which might apply a different style on different devices. If you want to ensure that your + app consistently uses the Holo theme at all times, you must explicitly declare it in your + manifest. For example, {@code <application android:theme="@android:style/Theme.Holo">}. + For more information, read Holo + Everywhere.

+

The widgets in the holographic theme are translucent on their background, so + applications must ensure that any background they use with this theme is itself + dark; otherwise, it will be difficult to see the widgets. This UI style also includes a + full action bar by default.

+ +

Styles used by the Holo theme are named using the convention Type.Holo.Etc + (for example, {@code Widget.Holo.Button} and {@code + TextAppearance.Holo.Widget.PopupMenu.Large}). + Specific resources used by Holo are named using the convention @type/foo_bar_baz_holo + with trailing _dark or _light specifiers if they are not shared between both light and + dark versions of the theme. + */ + public static final int Theme_Holo=0x0103006b; + /** Holo theme for dialog windows and activities, which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + This is the default Dialog theme for applications targeting Honeycomb + or newer. + */ + public static final int Theme_Holo_Dialog=0x0103006f; + /** Holo theme for alert dialog windows, which is used by the + {@link android.app.AlertDialog} class. This is basically a dialog + but sets the background to empty so it can do two-tone backgrounds. + For applications targeting Honeycomb or newer, this is the default + AlertDialog theme. + */ + public static final int Theme_Holo_Dialog_Alert=0x0103030e; + /** Variant of Theme.Holo.Dialog that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Dialog_MinWidth=0x01030070; + /** Variant of Theme.Holo.Dialog that does not include a title bar. + */ + public static final int Theme_Holo_Dialog_NoActionBar=0x01030071; + /** Variant of Theme.Holo.Dialog.NoActionBar that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Dialog_NoActionBar_MinWidth=0x01030072; + /** Theme for a window that will be displayed either full-screen on + smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_DialogWhenLarge=0x01030077; + /** Theme for a window without a title bar that will be displayed either + full-screen on smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_DialogWhenLarge_NoActionBar=0x01030078; + /** Default theme for holo style input methods, which is used by the + {@link android.inputmethodservice.InputMethodService} class. + this inherits from Theme.Panel, but sets up IME appropriate animations + and a few custom attributes. + */ + public static final int Theme_Holo_InputMethod=0x0103007f; + /** Honeycomb holographic theme (light version). The widgets in the + holographic theme are translucent on their brackground, so applications + must ensure that any background they use with this theme is itself + light; otherwise, it will be difficult to see the widgets. This + UI style also includes a full action bar by default. + */ + public static final int Theme_Holo_Light=0x0103006e; + /** Variant of the holographic (light) theme that has a solid (opaque) action bar + with an inverse color profile. The dark action bar sharply stands out against + the light content. + */ + public static final int Theme_Holo_Light_DarkActionBar=0x01030119; + /** Light holo dialog themes + Holo light theme for dialog windows and activities, which is used by the + {@link android.app.Dialog} class. This changes the window to be + floating (not fill the entire screen), and puts a frame around its + contents. You can set this theme on an activity if you would like to + make an activity that looks like a Dialog. + This is the default Dialog theme for applications targeting Honeycomb + or newer. + */ + public static final int Theme_Holo_Light_Dialog=0x01030073; + /** Holo light theme for alert dialog windows, which is used by the + {@link android.app.AlertDialog} class. This is basically a dialog + but sets the background to empty so it can do two-tone backgrounds. + For applications targeting Honeycomb or newer, this is the default + AlertDialog theme. + */ + public static final int Theme_Holo_Light_Dialog_Alert=0x01030312; + /** Variant of Theme.Holo.Light.Dialog that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Light_Dialog_MinWidth=0x01030074; + /** Variant of Theme.Holo.Light.Dialog that does not include a title bar. + */ + public static final int Theme_Holo_Light_Dialog_NoActionBar=0x01030075; + /** Variant of Theme.Holo.Light.Dialog.NoActionBar that has a nice minimum width for + a regular dialog. + */ + public static final int Theme_Holo_Light_Dialog_NoActionBar_MinWidth=0x01030076; + /** Theme for a window that will be displayed either full-screen on + smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_Light_DialogWhenLarge=0x01030079; + /** Theme for a window without an action bar that will be displayed either full-screen + on smaller screens (small, normal) or as a dialog on larger screens + (large, xlarge). + */ + public static final int Theme_Holo_Light_DialogWhenLarge_NoActionBar=0x0103007a; + /** Variant of the holographic (light) theme with no action bar. + */ + public static final int Theme_Holo_Light_NoActionBar=0x010300f0; + /** Variant of the holographic (light) theme that has no title bar and fills + the entire screen. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Holo_Light_NoActionBar_Fullscreen=0x010300f1; + /** Variant of the holographic (light) theme that has no title bar and fills + the entire screen and extends into the display overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_Holo_Light_NoActionBar_Overscan=0x010301de; + /** Variant of the holographic (light) theme that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_Holo_Light_NoActionBar_TranslucentDecor=0x010301e2; + /** Default holo light theme for panel windows. This removes all extraneous + window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Holo_Light_Panel=0x0103007c; + /** Variant of the holographic (dark) theme with no action bar. + */ + public static final int Theme_Holo_NoActionBar=0x0103006c; + /** Variant of the holographic (dark) theme that has no title bar and fills + the entire screen. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Holo_NoActionBar_Fullscreen=0x0103006d; + /** Variant of the holographic (dark) theme that has no title bar and fills + the entire screen and extends into the display overscan region. This theme + sets {@link android.R.attr#windowFullscreen} and {@link android.R.attr#windowOverscan} + to true. + */ + public static final int Theme_Holo_NoActionBar_Overscan=0x010301dd; + /** Variant of the holographic (dark) theme that has no title bar and translucent + system decor. This theme sets {@link android.R.attr#windowTranslucentStatus} and + {@link android.R.attr#windowTranslucentNavigation} to true. + */ + public static final int Theme_Holo_NoActionBar_TranslucentDecor=0x010301e1; + /** Default holo dark theme for panel windows. This removes all extraneous + window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Holo_Panel=0x0103007b; + /** Default holographic (dark) for windows that want to have the user's selected + wallpaper appear behind them. + */ + public static final int Theme_Holo_Wallpaper=0x0103007d; + /** Default holographic (dark) for windows that want to have the user's selected + wallpaper appear behind them and without an action bar. + */ + public static final int Theme_Holo_Wallpaper_NoTitleBar=0x0103007e; + public static final int Theme_IconMenu=0x01030303; + /** Default theme for input methods (on API level 10 and lower), which is used by the + {@link android.inputmethodservice.InputMethodService} class. + this inherits from Theme.Panel, but sets up IME appropriate animations + and a few custom attributes. + */ + public static final int Theme_InputMethod=0x01030054; + /** Theme for a light background with dark text on top. Set your activity + to this theme if you would like such an appearance. As with the + default theme, you should try to assume little more than that the + background will be a light color. +

This is designed for API level 10 and lower.

+ */ + public static final int Theme_Light=0x0103000c; + /** Variant of {@link #Theme_Light} with no title bar + */ + public static final int Theme_Light_NoTitleBar=0x0103000d; + /** Variant of {@link #Theme_Light} that has no title bar and + no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_Light_NoTitleBar_Fullscreen=0x0103000e; + /** Default light theme for panel windows (on API level 10 and lower). This removes all + extraneous window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Light_Panel=0x0103005a; + /** Theme for a wallpaper's setting activity, which is designed to be a transparent + background with a light shade, so the previous Activity is visible in the background. + */ + public static final int Theme_Light_WallpaperSettings=0x01030062; + /** Default theme for activities that don't actually display a UI; that + is, they finish themselves before being resumed. + */ + public static final int Theme_NoDisplay=0x01030055; + /** Variant of {@link #Theme} with no title bar + */ + public static final int Theme_NoTitleBar=0x01030006; + /** Variant of {@link #Theme} that has no title bar and no status bar. This theme + sets {@link android.R.attr#windowFullscreen} to true. + */ + public static final int Theme_NoTitleBar_Fullscreen=0x01030007; + /** No title bar, but Action Mode bars will overlay application content + instead of pushing it down to make room. + */ + public static final int Theme_NoTitleBar_OverlayActionModes=0x0103006a; + /** Default dark theme for panel windows (on API level 10 and lower). This removes all + extraneous window decorations, so you basically have an empty rectangle in which + to place your content. It makes the window floating, with a transparent + background, and turns off dimming behind the window. + */ + public static final int Theme_Panel=0x01030059; + public static final int Theme_Panel_Volume=0x0103030a; + /** Default theme for window that looks like a toast. + */ + public static final int Theme_Toast=0x01030309; + /** Theme for translucent activities (on API level 10 and lower). That is, windows + that allow you to see through them to the windows behind. This sets up the translucent + flag and appropriate animations for your windows. + */ + public static final int Theme_Translucent=0x0103000f; + /** Variant of {@link #Theme_Translucent} with no title bar + */ + public static final int Theme_Translucent_NoTitleBar=0x01030010; + /** Variant of {@link #Theme_Translucent} that has no title bar and + no status bar + */ + public static final int Theme_Translucent_NoTitleBar_Fullscreen=0x01030011; + /** Theme for windows that want to have the user's selected + wallpaper appear behind them (for API level 10 and lower). + */ + public static final int Theme_Wallpaper=0x0103005e; + /** Variant of {@link #Theme_Wallpaper} that has no title bar + */ + public static final int Theme_Wallpaper_NoTitleBar=0x0103005f; + /** Variant of {@link #Theme_Wallpaper} that + has no title bar or status bar. + */ + public static final int Theme_Wallpaper_NoTitleBar_Fullscreen=0x01030060; + /** Theme for a wallpaper's setting activity, which is designed to be a transparent + background with a dark shade, so the previous Activity is visible in the background. + */ + public static final int Theme_WallpaperSettings=0x01030061; + /** Default theme with an Action Bar. + */ + public static final int Theme_WithActionBar=0x01030069; + /** Widget Styles + */ + public static final int Widget=0x01030012; + public static final int Widget_AbsListView=0x01030013; + public static final int Widget_ActionBar=0x01030082; + public static final int Widget_ActionBar_TabBar=0x010300f4; + public static final int Widget_ActionBar_TabText=0x010300f3; + public static final int Widget_ActionBar_TabView=0x010300f2; + public static final int Widget_ActionButton=0x01030084; + public static final int Widget_ActionButton_CloseMode=0x01030088; + public static final int Widget_ActionButton_Overflow=0x01030087; + public static final int Widget_AutoCompleteTextView=0x01030027; + public static final int Widget_Button=0x01030014; + public static final int Widget_Button_Inset=0x01030015; + /** Keyguard PIN pad styles + */ + public static final int Widget_Button_NumPadKey=0x010302af; + public static final int Widget_Button_Small=0x01030016; + public static final int Widget_Button_Toggle=0x01030017; + public static final int Widget_CalendarView=0x010300eb; + public static final int Widget_CompoundButton=0x01030018; + public static final int Widget_CompoundButton_CheckBox=0x01030019; + public static final int Widget_CompoundButton_RadioButton=0x0103001a; + public static final int Widget_CompoundButton_Star=0x0103001b; + public static final int Widget_DatePicker=0x010300ee; + /** Widget Styles + */ + public static final int Widget_DeviceDefault=0x01030140; + public static final int Widget_DeviceDefault_ActionBar=0x0103016b; + public static final int Widget_DeviceDefault_ActionBar_Solid=0x01030173; + public static final int Widget_DeviceDefault_ActionBar_TabBar=0x01030172; + public static final int Widget_DeviceDefault_ActionBar_TabText=0x01030171; + public static final int Widget_DeviceDefault_ActionBar_TabView=0x01030170; + public static final int Widget_DeviceDefault_ActionButton=0x01030166; + public static final int Widget_DeviceDefault_ActionButton_CloseMode=0x0103016a; + public static final int Widget_DeviceDefault_ActionButton_Overflow=0x01030167; + public static final int Widget_DeviceDefault_ActionButton_TextButton=0x01030168; + public static final int Widget_DeviceDefault_ActionMode=0x01030169; + public static final int Widget_DeviceDefault_AutoCompleteTextView=0x01030147; + public static final int Widget_DeviceDefault_Button=0x01030141; + public static final int Widget_DeviceDefault_Button_Borderless=0x0103016c; + public static final int Widget_DeviceDefault_Button_Borderless_Small=0x01030145; + public static final int Widget_DeviceDefault_Button_Inset=0x01030143; + public static final int Widget_DeviceDefault_Button_Small=0x01030142; + public static final int Widget_DeviceDefault_Button_Toggle=0x01030144; + public static final int Widget_DeviceDefault_CalendarView=0x0103016e; + public static final int Widget_DeviceDefault_CheckedTextView=0x010301db; + public static final int Widget_DeviceDefault_CompoundButton_CheckBox=0x01030148; + public static final int Widget_DeviceDefault_CompoundButton_RadioButton=0x01030159; + public static final int Widget_DeviceDefault_CompoundButton_Star=0x0103015d; + public static final int Widget_DeviceDefault_DatePicker=0x0103016f; + public static final int Widget_DeviceDefault_DropDownItem=0x01030161; + public static final int Widget_DeviceDefault_DropDownItem_Spinner=0x01030162; + public static final int Widget_DeviceDefault_EditText=0x0103014a; + public static final int Widget_DeviceDefault_ExpandableListView=0x0103014b; + public static final int Widget_DeviceDefault_GridView=0x0103014c; + public static final int Widget_DeviceDefault_HorizontalScrollView=0x0103015b; + public static final int Widget_DeviceDefault_ImageButton=0x0103014d; + public static final int Widget_DeviceDefault_Light=0x01030174; + public static final int Widget_DeviceDefault_Light_ActionBar=0x010301a3; + public static final int Widget_DeviceDefault_Light_ActionBar_Solid=0x010301a7; + public static final int Widget_DeviceDefault_Light_ActionBar_Solid_Inverse=0x010301a8; + public static final int Widget_DeviceDefault_Light_ActionBar_TabBar=0x010301a6; + public static final int Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse=0x010301a9; + public static final int Widget_DeviceDefault_Light_ActionBar_TabText=0x010301a5; + public static final int Widget_DeviceDefault_Light_ActionBar_TabText_Inverse=0x010301ab; + public static final int Widget_DeviceDefault_Light_ActionBar_TabView=0x010301a4; + public static final int Widget_DeviceDefault_Light_ActionBar_TabView_Inverse=0x010301aa; + public static final int Widget_DeviceDefault_Light_ActionButton=0x0103019f; + public static final int Widget_DeviceDefault_Light_ActionButton_CloseMode=0x010301a2; + public static final int Widget_DeviceDefault_Light_ActionButton_Overflow=0x010301a0; + public static final int Widget_DeviceDefault_Light_ActionMode=0x010301a1; + public static final int Widget_DeviceDefault_Light_ActionMode_Inverse=0x010301ac; + public static final int Widget_DeviceDefault_Light_AutoCompleteTextView=0x0103017b; + public static final int Widget_DeviceDefault_Light_Button=0x01030175; + public static final int Widget_DeviceDefault_Light_Button_Borderless_Small=0x01030179; + public static final int Widget_DeviceDefault_Light_Button_Inset=0x01030177; + public static final int Widget_DeviceDefault_Light_Button_Small=0x01030176; + public static final int Widget_DeviceDefault_Light_Button_Toggle=0x01030178; + public static final int Widget_DeviceDefault_Light_CalendarView=0x0103019e; + public static final int Widget_DeviceDefault_Light_CheckedTextView=0x010301dc; + public static final int Widget_DeviceDefault_Light_CompoundButton_CheckBox=0x0103017c; + public static final int Widget_DeviceDefault_Light_CompoundButton_RadioButton=0x01030190; + public static final int Widget_DeviceDefault_Light_CompoundButton_Star=0x01030194; + public static final int Widget_DeviceDefault_Light_DropDownItem=0x01030198; + public static final int Widget_DeviceDefault_Light_DropDownItem_Spinner=0x01030199; + public static final int Widget_DeviceDefault_Light_EditText=0x0103017e; + public static final int Widget_DeviceDefault_Light_ExpandableListView=0x0103017f; + public static final int Widget_DeviceDefault_Light_GridView=0x01030180; + public static final int Widget_DeviceDefault_Light_HorizontalScrollView=0x01030192; + public static final int Widget_DeviceDefault_Light_ImageButton=0x01030181; + public static final int Widget_DeviceDefault_Light_ListPopupWindow=0x0103019b; + public static final int Widget_DeviceDefault_Light_ListView=0x01030182; + public static final int Widget_DeviceDefault_Light_ListView_DropDown=0x0103017d; + public static final int Widget_DeviceDefault_Light_MediaRouteButton=0x010301d8; + public static final int Widget_DeviceDefault_Light_PopupMenu=0x0103019c; + public static final int Widget_DeviceDefault_Light_PopupWindow=0x01030183; + public static final int Widget_DeviceDefault_Light_ProgressBar=0x01030184; + public static final int Widget_DeviceDefault_Light_ProgressBar_Horizontal=0x01030185; + public static final int Widget_DeviceDefault_Light_ProgressBar_Inverse=0x01030189; + public static final int Widget_DeviceDefault_Light_ProgressBar_Large=0x01030188; + public static final int Widget_DeviceDefault_Light_ProgressBar_Large_Inverse=0x0103018b; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small=0x01030186; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Inverse=0x0103018a; + public static final int Widget_DeviceDefault_Light_ProgressBar_Small_Title=0x01030187; + public static final int Widget_DeviceDefault_Light_RatingBar=0x0103018d; + public static final int Widget_DeviceDefault_Light_RatingBar_Indicator=0x0103018e; + public static final int Widget_DeviceDefault_Light_RatingBar_Small=0x0103018f; + public static final int Widget_DeviceDefault_Light_ScrollView=0x01030191; + public static final int Widget_DeviceDefault_Light_SeekBar=0x0103018c; + public static final int Widget_DeviceDefault_Light_Spinner=0x01030193; + public static final int Widget_DeviceDefault_Light_Tab=0x0103019d; + public static final int Widget_DeviceDefault_Light_TabWidget=0x01030195; + public static final int Widget_DeviceDefault_Light_TextView=0x0103017a; + public static final int Widget_DeviceDefault_Light_TextView_SpinnerItem=0x0103019a; + public static final int Widget_DeviceDefault_Light_WebTextView=0x01030196; + public static final int Widget_DeviceDefault_Light_WebView=0x01030197; + public static final int Widget_DeviceDefault_ListPopupWindow=0x01030164; + public static final int Widget_DeviceDefault_ListView=0x0103014e; + public static final int Widget_DeviceDefault_ListView_DropDown=0x01030149; + public static final int Widget_DeviceDefault_MediaRouteButton=0x010301d7; + public static final int Widget_DeviceDefault_PopupMenu=0x01030165; + public static final int Widget_DeviceDefault_PopupWindow=0x0103014f; + public static final int Widget_DeviceDefault_ProgressBar=0x01030150; + public static final int Widget_DeviceDefault_ProgressBar_Horizontal=0x01030151; + public static final int Widget_DeviceDefault_ProgressBar_Large=0x01030154; + public static final int Widget_DeviceDefault_ProgressBar_Small=0x01030152; + public static final int Widget_DeviceDefault_ProgressBar_Small_Title=0x01030153; + public static final int Widget_DeviceDefault_RatingBar=0x01030156; + public static final int Widget_DeviceDefault_RatingBar_Indicator=0x01030157; + public static final int Widget_DeviceDefault_RatingBar_Small=0x01030158; + public static final int Widget_DeviceDefault_ScrollView=0x0103015a; + public static final int Widget_DeviceDefault_SeekBar=0x01030155; + public static final int Widget_DeviceDefault_Spinner=0x0103015c; + public static final int Widget_DeviceDefault_Tab=0x0103016d; + public static final int Widget_DeviceDefault_TabWidget=0x0103015e; + public static final int Widget_DeviceDefault_TextView=0x01030146; + public static final int Widget_DeviceDefault_TextView_SpinnerItem=0x01030163; + public static final int Widget_DeviceDefault_WebTextView=0x0103015f; + public static final int Widget_DeviceDefault_WebView=0x01030160; + public static final int Widget_DropDownItem=0x0103002b; + public static final int Widget_DropDownItem_Spinner=0x0103002c; + public static final int Widget_EditText=0x01030023; + public static final int Widget_ExpandableListView=0x01030024; + /** Default style for {@link android.app.FragmentBreadCrumbs} view. + */ + public static final int Widget_FragmentBreadCrumbs=0x01030089; + public static final int Widget_Gallery=0x01030035; + public static final int Widget_GridView=0x01030032; + /** Widget Styles + */ + public static final int Widget_Holo=0x0103008a; + public static final int Widget_Holo_ActionBar=0x010300b4; + public static final int Widget_Holo_ActionBar_Solid=0x01030121; + public static final int Widget_Holo_ActionBar_TabBar=0x010300f7; + public static final int Widget_Holo_ActionBar_TabText=0x010300f6; + public static final int Widget_Holo_ActionBar_TabView=0x010300f5; + public static final int Widget_Holo_ActionButton=0x010300af; + public static final int Widget_Holo_ActionButton_CloseMode=0x010300b3; + public static final int Widget_Holo_ActionButton_Overflow=0x010300b0; + public static final int Widget_Holo_ActionButton_TextButton=0x010300b1; + public static final int Widget_Holo_ActionMode=0x010300b2; + public static final int Widget_Holo_AutoCompleteTextView=0x01030090; + public static final int Widget_Holo_Button=0x0103008b; + public static final int Widget_Holo_Button_Borderless=0x010300e2; + public static final int Widget_Holo_Button_Borderless_Small=0x0103011a; + public static final int Widget_Holo_Button_Inset=0x0103008d; + public static final int Widget_Holo_Button_Small=0x0103008c; + public static final int Widget_Holo_Button_Toggle=0x0103008e; + public static final int Widget_Holo_CalendarView=0x010300ec; + public static final int Widget_Holo_CheckedTextView=0x010301d9; + public static final int Widget_Holo_CompoundButton_CheckBox=0x01030091; + public static final int Widget_Holo_CompoundButton_RadioButton=0x010300a2; + public static final int Widget_Holo_CompoundButton_Star=0x010300a6; + public static final int Widget_Holo_DatePicker=0x010300ef; + public static final int Widget_Holo_DropDownItem=0x010300aa; + public static final int Widget_Holo_DropDownItem_Spinner=0x010300ab; + public static final int Widget_Holo_EditText=0x01030093; + public static final int Widget_Holo_ExpandableListView=0x01030094; + public static final int Widget_Holo_GridView=0x01030095; + public static final int Widget_Holo_HorizontalScrollView=0x010300a4; + public static final int Widget_Holo_ImageButton=0x01030096; + /** Light widget styles + */ + public static final int Widget_Holo_Light=0x010300b5; + public static final int Widget_Holo_Light_ActionBar=0x010300e1; + public static final int Widget_Holo_Light_ActionBar_Solid=0x01030122; + public static final int Widget_Holo_Light_ActionBar_Solid_Inverse=0x01030123; + public static final int Widget_Holo_Light_ActionBar_TabBar=0x010300fa; + public static final int Widget_Holo_Light_ActionBar_TabBar_Inverse=0x01030124; + public static final int Widget_Holo_Light_ActionBar_TabText=0x010300f9; + public static final int Widget_Holo_Light_ActionBar_TabText_Inverse=0x01030126; + public static final int Widget_Holo_Light_ActionBar_TabView=0x010300f8; + public static final int Widget_Holo_Light_ActionBar_TabView_Inverse=0x01030125; + public static final int Widget_Holo_Light_ActionButton=0x010300dd; + public static final int Widget_Holo_Light_ActionButton_CloseMode=0x010300e0; + public static final int Widget_Holo_Light_ActionButton_Overflow=0x010300de; + public static final int Widget_Holo_Light_ActionMode=0x010300df; + public static final int Widget_Holo_Light_ActionMode_Inverse=0x01030127; + public static final int Widget_Holo_Light_AutoCompleteTextView=0x010300bb; + public static final int Widget_Holo_Light_Button=0x010300b6; + public static final int Widget_Holo_Light_Button_Borderless_Small=0x0103011b; + public static final int Widget_Holo_Light_Button_Inset=0x010300b8; + public static final int Widget_Holo_Light_Button_Small=0x010300b7; + public static final int Widget_Holo_Light_Button_Toggle=0x010300b9; + public static final int Widget_Holo_Light_CalendarView=0x010300ed; + public static final int Widget_Holo_Light_CheckedTextView=0x010301da; + public static final int Widget_Holo_Light_CompoundButton_CheckBox=0x010300bc; + public static final int Widget_Holo_Light_CompoundButton_RadioButton=0x010300d0; + public static final int Widget_Holo_Light_CompoundButton_Star=0x010300d4; + public static final int Widget_Holo_Light_DropDownItem=0x010300d8; + public static final int Widget_Holo_Light_DropDownItem_Spinner=0x010300d9; + public static final int Widget_Holo_Light_EditText=0x010300be; + public static final int Widget_Holo_Light_ExpandableListView=0x010300bf; + public static final int Widget_Holo_Light_GridView=0x010300c0; + public static final int Widget_Holo_Light_HorizontalScrollView=0x010300d2; + public static final int Widget_Holo_Light_ImageButton=0x010300c1; + public static final int Widget_Holo_Light_ListPopupWindow=0x010300db; + public static final int Widget_Holo_Light_ListView=0x010300c2; + public static final int Widget_Holo_Light_ListView_DropDown=0x010300bd; + public static final int Widget_Holo_Light_MediaRouteButton=0x010301d6; + public static final int Widget_Holo_Light_PopupMenu=0x010300dc; + public static final int Widget_Holo_Light_PopupWindow=0x010300c3; + public static final int Widget_Holo_Light_ProgressBar=0x010300c4; + public static final int Widget_Holo_Light_ProgressBar_Horizontal=0x010300c5; + public static final int Widget_Holo_Light_ProgressBar_Inverse=0x010300c9; + public static final int Widget_Holo_Light_ProgressBar_Large=0x010300c8; + public static final int Widget_Holo_Light_ProgressBar_Large_Inverse=0x010300cb; + public static final int Widget_Holo_Light_ProgressBar_Small=0x010300c6; + public static final int Widget_Holo_Light_ProgressBar_Small_Inverse=0x010300ca; + public static final int Widget_Holo_Light_ProgressBar_Small_Title=0x010300c7; + public static final int Widget_Holo_Light_RatingBar=0x010300cd; + public static final int Widget_Holo_Light_RatingBar_Indicator=0x010300ce; + public static final int Widget_Holo_Light_RatingBar_Small=0x010300cf; + public static final int Widget_Holo_Light_ScrollView=0x010300d1; + public static final int Widget_Holo_Light_SeekBar=0x010300cc; + public static final int Widget_Holo_Light_Spinner=0x010300d3; + public static final int Widget_Holo_Light_Tab=0x010300e4; + public static final int Widget_Holo_Light_TabWidget=0x010300d5; + public static final int Widget_Holo_Light_TextView=0x010300ba; + public static final int Widget_Holo_Light_TextView_SpinnerItem=0x010300da; + public static final int Widget_Holo_Light_WebTextView=0x010300d6; + public static final int Widget_Holo_Light_WebView=0x010300d7; + public static final int Widget_Holo_ListPopupWindow=0x010300ad; + public static final int Widget_Holo_ListView=0x01030097; + public static final int Widget_Holo_ListView_DropDown=0x01030092; + public static final int Widget_Holo_MediaRouteButton=0x010301d5; + public static final int Widget_Holo_PopupMenu=0x010300ae; + public static final int Widget_Holo_PopupWindow=0x01030098; + public static final int Widget_Holo_ProgressBar=0x01030099; + public static final int Widget_Holo_ProgressBar_Horizontal=0x0103009a; + public static final int Widget_Holo_ProgressBar_Large=0x0103009d; + public static final int Widget_Holo_ProgressBar_Small=0x0103009b; + public static final int Widget_Holo_ProgressBar_Small_Title=0x0103009c; + public static final int Widget_Holo_RatingBar=0x0103009f; + public static final int Widget_Holo_RatingBar_Indicator=0x010300a0; + public static final int Widget_Holo_RatingBar_Small=0x010300a1; + public static final int Widget_Holo_ScrollView=0x010300a3; + public static final int Widget_Holo_SeekBar=0x0103009e; + public static final int Widget_Holo_Spinner=0x010300a5; + public static final int Widget_Holo_Tab=0x010300e3; + public static final int Widget_Holo_TabWidget=0x010300a7; + public static final int Widget_Holo_TextView=0x0103008f; + public static final int Widget_Holo_TextView_SpinnerItem=0x010300ac; + public static final int Widget_Holo_WebTextView=0x010300a8; + public static final int Widget_Holo_WebView=0x010300a9; + public static final int Widget_ImageButton=0x01030026; + public static final int Widget_ImageWell=0x01030025; + public static final int Widget_KeyboardView=0x01030057; + public static final int Widget_ListPopupWindow=0x01030085; + public static final int Widget_ListView=0x0103002e; + public static final int Widget_ListView_DropDown=0x01030030; + public static final int Widget_ListView_Menu=0x01030031; + public static final int Widget_ListView_White=0x0103002f; + public static final int Widget_PopupMenu=0x01030086; + public static final int Widget_PopupWindow=0x01030036; + public static final int Widget_ProgressBar=0x0103001c; + public static final int Widget_ProgressBar_Horizontal=0x0103001f; + public static final int Widget_ProgressBar_Inverse=0x0103005b; + public static final int Widget_ProgressBar_Large=0x0103001d; + public static final int Widget_ProgressBar_Large_Inverse=0x0103005c; + public static final int Widget_ProgressBar_Small=0x0103001e; + public static final int Widget_ProgressBar_Small_Inverse=0x0103005d; + public static final int Widget_RatingBar=0x01030021; + public static final int Widget_ScrollView=0x0103002d; + public static final int Widget_SeekBar=0x01030020; + public static final int Widget_Spinner=0x01030028; + public static final int Widget_Spinner_DropDown=0x01030083; + public static final int Widget_TabWidget=0x01030034; + public static final int Widget_TextView=0x01030022; + public static final int Widget_TextView_PopupMenu=0x01030029; + public static final int Widget_TextView_SpinnerItem=0x0103002a; + public static final int Widget_WebView=0x01030033; + public static final int webviewchromium_AutofillPopupWindow=0x0103031f; + public static final int webviewchromium_SelectPopupDialog=0x01030320; + } + public static final class xml { + public static final int apns=0x010f0000; + public static final int audio_assets=0x010f0001; + public static final int autotext=0x010f0002; + public static final int eri=0x010f0003; + public static final int global_keys=0x010f0004; + public static final int password_kbd_numeric=0x010f0007; + public static final int password_kbd_qwerty=0x010f0009; + public static final int password_kbd_qwerty_shifted=0x010f000a; + public static final int password_kbd_symbols=0x010f000b; + public static final int password_kbd_symbols_shift=0x010f000c; + public static final int power_profile=0x010f000d; + public static final int sms_short_codes=0x010f000f; + public static final int storage_list=0x010f0010; + public static final int time_zones_by_country=0x010f0011; + } + public static final class styleable { + /** Attributes that can be used with a AbsListView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #AbsListView_cacheColorHint android:cacheColorHint} Indicates that this list will always be drawn on top of solid, single-color + opaque background.
{@link #AbsListView_choiceMode android:choiceMode} Defines the choice behavior for the view.
{@link #AbsListView_drawSelectorOnTop android:drawSelectorOnTop} When set to true, the selector will be drawn over the selected item.
{@link #AbsListView_fastScrollAlwaysVisible android:fastScrollAlwaysVisible} When set to true, the list will always show the fast scroll interface.
{@link #AbsListView_fastScrollEnabled android:fastScrollEnabled} Enables the fast scroll thumb that can be dragged to quickly scroll through + the list.
{@link #AbsListView_listSelector android:listSelector} Drawable used to indicate the currently selected item in the list.
{@link #AbsListView_scrollingCache android:scrollingCache} When set to true, the list uses a drawing cache during scrolling.
{@link #AbsListView_smoothScrollbar android:smoothScrollbar} When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen.
{@link #AbsListView_stackFromBottom android:stackFromBottom} Used by ListView and GridView to stack their content from the bottom.
{@link #AbsListView_textFilterEnabled android:textFilterEnabled} When set to true, the list will filter results as the user types.
{@link #AbsListView_transcriptMode android:transcriptMode} Sets the transcript mode for the list.
+ @see #AbsListView_cacheColorHint + @see #AbsListView_choiceMode + @see #AbsListView_drawSelectorOnTop + @see #AbsListView_fastScrollAlwaysVisible + @see #AbsListView_fastScrollEnabled + @see #AbsListView_listSelector + @see #AbsListView_scrollingCache + @see #AbsListView_smoothScrollbar + @see #AbsListView_stackFromBottom + @see #AbsListView_textFilterEnabled + @see #AbsListView_transcriptMode + */ + public static final int[] AbsListView = { + 0x010100fb, 0x010100fc, 0x010100fd, 0x010100fe, + 0x010100ff, 0x01010100, 0x01010101, 0x0101012b, + 0x01010226, 0x01010231, 0x01010335 + }; + /** +

+ @attr description + Indicates that this list will always be drawn on top of solid, single-color + opaque background. This allows the list to optimize drawing. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cacheColorHint}. + @attr name android:cacheColorHint + */ + public static final int AbsListView_cacheColorHint = 6; + /** +

+ @attr description + Defines the choice behavior for the view. By default, lists do not have + any choice behavior. By setting the choiceMode to singleChoice, the list + allows up to one item to be in a chosen state. By setting the choiceMode to + multipleChoice, the list allows any number of items to be chosen. + Finally, by setting the choiceMode to multipleChoiceModal the list allows + any number of items to be chosen in a special selection mode. + The application will supply a + {@link android.widget.AbsListView.MultiChoiceModeListener} using + {@link android.widget.AbsListView#setMultiChoiceModeListener} to control the + selection mode. This uses the {@link android.view.ActionMode} API. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Normal list that does not indicate choices.
singleChoice1 The list allows up to one choice.
multipleChoice2 The list allows multiple choices.
multipleChoiceModal3 The list allows multiple choices in a custom selection mode.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#choiceMode}. + @attr name android:choiceMode + */ + public static final int AbsListView_choiceMode = 7; + /** +

+ @attr description + When set to true, the selector will be drawn over the selected item. + Otherwise the selector is drawn behind the selected item. The default + value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawSelectorOnTop}. + @attr name android:drawSelectorOnTop + */ + public static final int AbsListView_drawSelectorOnTop = 1; + /** +

+ @attr description + When set to true, the list will always show the fast scroll interface. + This setting implies fastScrollEnabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollAlwaysVisible}. + @attr name android:fastScrollAlwaysVisible + */ + public static final int AbsListView_fastScrollAlwaysVisible = 10; + /** +

+ @attr description + Enables the fast scroll thumb that can be dragged to quickly scroll through + the list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollEnabled}. + @attr name android:fastScrollEnabled + */ + public static final int AbsListView_fastScrollEnabled = 8; + /** +

+ @attr description + Drawable used to indicate the currently selected item in the list. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listSelector}. + @attr name android:listSelector + */ + public static final int AbsListView_listSelector = 0; + /** +

+ @attr description + When set to true, the list uses a drawing cache during scrolling. + This makes the rendering faster but uses more memory. The default + value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollingCache}. + @attr name android:scrollingCache + */ + public static final int AbsListView_scrollingCache = 3; + /** +

+ @attr description + When set to true, the list will use a more refined calculation + method based on the pixels height of the items visible on screen. This + property is set to true by default but should be set to false if your adapter + will display items of varying heights. When this property is set to true and + your adapter displays items of varying heights, the scrollbar thumb will + change size as the user scrolls through the list. When set to fale, the list + will use only the number of items in the adapter and the number of items visible + on screen to determine the scrollbar's properties. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smoothScrollbar}. + @attr name android:smoothScrollbar + */ + public static final int AbsListView_smoothScrollbar = 9; + /** +

+ @attr description + Used by ListView and GridView to stack their content from the bottom. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stackFromBottom}. + @attr name android:stackFromBottom + */ + public static final int AbsListView_stackFromBottom = 2; + /** +

+ @attr description + When set to true, the list will filter results as the user types. The + List's adapter must support the Filterable interface for this to work. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textFilterEnabled}. + @attr name android:textFilterEnabled + */ + public static final int AbsListView_textFilterEnabled = 4; + /** +

+ @attr description + Sets the transcript mode for the list. In transcript mode, the list + scrolls to the bottom to make new items visible when they are added. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
disabled0 Disables transcript mode. This is the default value.
normal1 The list will automatically scroll to the bottom when + a data set change notification is received and only if the last item is + already visible on screen.
alwaysScroll2 The list will automatically scroll to the bottom, no matter what items + are currently visible.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#transcriptMode}. + @attr name android:transcriptMode + */ + public static final int AbsListView_transcriptMode = 5; + /** Attributes that can be used with a AbsSpinner. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AbsSpinner_entries android:entries} Reference to an array resource that will populate the Spinner.
+ @see #AbsSpinner_entries + */ + public static final int[] AbsSpinner = { + 0x010100b2 + }; + /** +

+ @attr description + Reference to an array resource that will populate the Spinner. For static content, + this is simpler than populating the Spinner programmatically. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int AbsSpinner_entries = 0; + /** Attributes that can be used with a AbsoluteLayout_Layout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AbsoluteLayout_Layout_layout_x android:layout_x}
{@link #AbsoluteLayout_Layout_layout_y android:layout_y}
+ @see #AbsoluteLayout_Layout_layout_x + @see #AbsoluteLayout_Layout_layout_y + */ + public static final int[] AbsoluteLayout_Layout = { + 0x0101017f, 0x01010180 + }; + /** +

This symbol is the offset where the {@link android.R.attr#layout_x} + attribute's value can be found in the {@link #AbsoluteLayout_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_x + */ + public static final int AbsoluteLayout_Layout_layout_x = 0; + /** +

This symbol is the offset where the {@link android.R.attr#layout_y} + attribute's value can be found in the {@link #AbsoluteLayout_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_y + */ + public static final int AbsoluteLayout_Layout_layout_y = 1; + /** Attributes that can be used with a AccelerateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AccelerateInterpolator_factor android:factor} This is the amount of deceleration to add when easing in.
+ @see #AccelerateInterpolator_factor + */ + public static final int[] AccelerateInterpolator = { + 0x010101d3 + }; + /** +

+ @attr description + This is the amount of deceleration to add when easing in. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#factor}. + @attr name android:factor + */ + public static final int AccelerateInterpolator_factor = 0; + /** Use accessibility-service as the root tag of the XML resource that + describes an {@link android.accessibilityservice.AccessibilityService} service, + which is referenced from its + {@link android.accessibilityservice.AccessibilityService#SERVICE_META_DATA} + meta-data entry. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #AccessibilityService_accessibilityEventTypes android:accessibilityEventTypes} The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}.
{@link #AccessibilityService_accessibilityFeedbackType android:accessibilityFeedbackType} The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}.
{@link #AccessibilityService_accessibilityFlags android:accessibilityFlags} Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}.
{@link #AccessibilityService_canRequestEnhancedWebAccessibility android:canRequestEnhancedWebAccessibility} Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements.
{@link #AccessibilityService_canRequestFilterKeyEvents android:canRequestFilterKeyEvents} Attribute whether the accessibility service wants to be able to request to + filter key events.
{@link #AccessibilityService_canRequestTouchExplorationMode android:canRequestTouchExplorationMode} Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures.
{@link #AccessibilityService_canRetrieveWindowContent android:canRetrieveWindowContent} Attribute whether the accessibility service wants to be able to retrieve the + active window content.
{@link #AccessibilityService_description android:description} Short description of the accessibility serivce purpose or behavior.
{@link #AccessibilityService_notificationTimeout android:notificationTimeout} The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce.
{@link #AccessibilityService_packageNames android:packageNames} Comma separated package names from which this serivce would like to receive events (leave out for all packages).
{@link #AccessibilityService_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #AccessibilityService_accessibilityEventTypes + @see #AccessibilityService_accessibilityFeedbackType + @see #AccessibilityService_accessibilityFlags + @see #AccessibilityService_canRequestEnhancedWebAccessibility + @see #AccessibilityService_canRequestFilterKeyEvents + @see #AccessibilityService_canRequestTouchExplorationMode + @see #AccessibilityService_canRetrieveWindowContent + @see #AccessibilityService_description + @see #AccessibilityService_notificationTimeout + @see #AccessibilityService_packageNames + @see #AccessibilityService_settingsActivity + */ + public static final int[] AccessibilityService = { + 0x01010020, 0x01010225, 0x01010380, 0x01010381, + 0x01010382, 0x01010383, 0x01010384, 0x01010385, + 0x010103d7, 0x010103d8, 0x010103d9 + }; + /** +

+ @attr description + The event types this serivce would like to receive as specified in + {@link android.view.accessibility.AccessibilityEvent}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + +
ConstantValueDescription
typeViewClicked0x00000001 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CLICKED} events.
typeViewLongClicked0x00000002 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_LONG_CLICKED} events.
typeViewSelected0x00000004 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SELECTED} events.
typeViewFocused0x00000008 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_FOCUSED} events.
typeViewTextChanged0x00000010 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED} events.
typeWindowStateChanged0x00000020 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} events.
typeNotificationStateChanged0x00000040 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED} events.
typeViewHoverEnter0x00000080 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} events.
typeViewHoverExit0x00000100 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} events.
typeTouchExplorationGestureStart0x00000200 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} events.
typeTouchExplorationGestureEnd0x00000400 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} events.
typeWindowContentChanged0x00000800 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} events.
typeViewScrolled0x000001000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SCROLLED} events.
typeViewTextSelectionChanged0x000002000 Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} events.
typeAllMask0xffffffff Receives {@link android.view.accessibility.AccessibilityEvent#TYPES_ALL_MASK} i.e. all events.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityEventTypes}. + @attr name android:accessibilityEventTypes + */ + public static final int AccessibilityService_accessibilityEventTypes = 2; + /** +

+ @attr description + The feedback types this serivce provides as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. This setting + can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
feedbackSpoken0x00000001 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_SPOKEN} feedback.
feedbackHaptic0x00000002 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_HAPTIC} feedback.
feedbackAudible0x00000004 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_AUDIBLE} feedback.
feedbackVisual0x00000008 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_VISUAL} feedback.
feedbackGeneric0x00000010 Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_GENERIC} feedback.
feedbackAllMask0xffffffff Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_ALL_MASK} feedback.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityFeedbackType}. + @attr name android:accessibilityFeedbackType + */ + public static final int AccessibilityService_accessibilityFeedbackType = 4; + /** +

+ @attr description + Additional flags as specified in + {@link android.accessibilityservice.AccessibilityServiceInfo}. + This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
flagDefault0x00000001 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT}
flagIncludeNotImportantViews0x00000002 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}
flagRequestTouchExplorationMode0x00000004 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}
flagRequestEnhancedWebAccessibility0x00000008 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY}
flagReportViewIds0x00000010 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}
flagRequestFilterKeyEvents0x00000020 Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS}
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityFlags}. + @attr name android:accessibilityFlags + */ + public static final int AccessibilityService_accessibilityFlags = 6; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request enhanced + web accessibility enhancements. For example, installing scripts to make app + content more accessible. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestEnhancedWebAccessibility}. + @attr name android:canRequestEnhancedWebAccessibility + */ + public static final int AccessibilityService_canRequestEnhancedWebAccessibility = 9; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request to + filter key events. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestFilterKeyEvents}. + @attr name android:canRequestFilterKeyEvents + */ + public static final int AccessibilityService_canRequestFilterKeyEvents = 10; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to request touch + exploration mode in which touched items are spoken aloud and the UI can be + explored via gestures. +

+ Required to allow setting the {@link android.accessibilityservice + #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag. +

+ + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRequestTouchExplorationMode}. + @attr name android:canRequestTouchExplorationMode + */ + public static final int AccessibilityService_canRequestTouchExplorationMode = 8; + /** +

+ @attr description + Attribute whether the accessibility service wants to be able to retrieve the + active window content. This setting cannot be changed at runtime. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#canRetrieveWindowContent}. + @attr name android:canRetrieveWindowContent + */ + public static final int AccessibilityService_canRetrieveWindowContent = 7; + /** +

+ @attr description + Short description of the accessibility serivce purpose or behavior. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AccessibilityService_description = 0; + /** +

+ @attr description + The minimal period in milliseconds between two accessibility events of the same type + are sent to this serivce. This setting can be changed at runtime by calling + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#notificationTimeout}. + @attr name android:notificationTimeout + */ + public static final int AccessibilityService_notificationTimeout = 5; + /** +

+ @attr description + Comma separated package names from which this serivce would like to receive events (leave out for all packages). + {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo) + android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#packageNames}. + @attr name android:packageNames + */ + public static final int AccessibilityService_packageNames = 3; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. This setting cannot be changed at runtime. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int AccessibilityService_settingsActivity = 1; + /** Use account-authenticator as the root tag of the XML resource that + describes an account authenticator. + +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AccountAuthenticator_accountPreferences android:accountPreferences} A preferences.
{@link #AccountAuthenticator_accountType android:accountType} The account type this authenticator handles.
{@link #AccountAuthenticator_customTokens android:customTokens} Account handles its own token storage and permissions.
{@link #AccountAuthenticator_icon android:icon} The icon of the authenticator.
{@link #AccountAuthenticator_label android:label} The user-visible name of the authenticator.
{@link #AccountAuthenticator_smallIcon android:smallIcon} Smaller icon of the authenticator.
+ @see #AccountAuthenticator_accountPreferences + @see #AccountAuthenticator_accountType + @see #AccountAuthenticator_customTokens + @see #AccountAuthenticator_icon + @see #AccountAuthenticator_label + @see #AccountAuthenticator_smallIcon + */ + public static final int[] AccountAuthenticator = { + 0x01010001, 0x01010002, 0x0101028f, 0x0101029e, + 0x0101029f, 0x0101033b + }; + /** +

+ @attr description + A preferences.xml file for authenticator-specific settings. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountPreferences}. + @attr name android:accountPreferences + */ + public static final int AccountAuthenticator_accountPreferences = 4; + /** +

+ @attr description + The account type this authenticator handles. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountType}. + @attr name android:accountType + */ + public static final int AccountAuthenticator_accountType = 2; + /** +

+ @attr description + Account handles its own token storage and permissions. + Default to false + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#customTokens}. + @attr name android:customTokens + */ + public static final int AccountAuthenticator_customTokens = 5; + /** +

+ @attr description + The icon of the authenticator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AccountAuthenticator_icon = 1; + /** +

+ @attr description + The user-visible name of the authenticator. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AccountAuthenticator_label = 0; + /** +

+ @attr description + Smaller icon of the authenticator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smallIcon}. + @attr name android:smallIcon + */ + public static final int AccountAuthenticator_smallIcon = 3; + /** Attributes used to style the Action Bar. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #ActionBar_background android:background} Specifies a background drawable for the action bar.
{@link #ActionBar_backgroundSplit android:backgroundSplit} Specifies a background drawable for the bottom component of a split action bar.
{@link #ActionBar_backgroundStacked android:backgroundStacked} Specifies a background drawable for a second stacked row of the action bar.
{@link #ActionBar_customNavigationLayout android:customNavigationLayout} Specifies a layout for custom navigation.
{@link #ActionBar_displayOptions android:displayOptions} Options affecting how the action bar is displayed.
{@link #ActionBar_divider android:divider} Specifies the drawable used for item dividers.
{@link #ActionBar_height android:height} Specifies a fixed height.
{@link #ActionBar_homeLayout android:homeLayout} Specifies a layout to use for the "home" section of the action bar.
{@link #ActionBar_icon android:icon} Specifies the drawable used for the application icon.
{@link #ActionBar_indeterminateProgressStyle android:indeterminateProgressStyle} Specifies a style resource to use for an indeterminate progress spinner.
{@link #ActionBar_itemPadding android:itemPadding} Specifies padding that should be applied to the left and right sides of + system-provided items in the bar.
{@link #ActionBar_logo android:logo} Specifies the drawable used for the application logo.
{@link #ActionBar_navigationMode android:navigationMode} The type of navigation to use.
{@link #ActionBar_progressBarPadding android:progressBarPadding} Specifies the horizontal padding on either end for an embedded progress bar.
{@link #ActionBar_progressBarStyle android:progressBarStyle} Specifies a style resource to use for an embedded progress bar.
{@link #ActionBar_subtitle android:subtitle} Specifies subtitle text used for navigationMode="normal"
{@link #ActionBar_subtitleTextStyle android:subtitleTextStyle} Specifies a style to use for subtitle text.
{@link #ActionBar_title android:title} Specifies title text used for navigationMode="normal"
{@link #ActionBar_titleTextStyle android:titleTextStyle} Specifies a style to use for title text.
+ @see #ActionBar_background + @see #ActionBar_backgroundSplit + @see #ActionBar_backgroundStacked + @see #ActionBar_customNavigationLayout + @see #ActionBar_displayOptions + @see #ActionBar_divider + @see #ActionBar_height + @see #ActionBar_homeLayout + @see #ActionBar_icon + @see #ActionBar_indeterminateProgressStyle + @see #ActionBar_itemPadding + @see #ActionBar_logo + @see #ActionBar_navigationMode + @see #ActionBar_progressBarPadding + @see #ActionBar_progressBarStyle + @see #ActionBar_subtitle + @see #ActionBar_subtitleTextStyle + @see #ActionBar_title + @see #ActionBar_titleTextStyle + */ + public static final int[] ActionBar = { + 0x01010002, 0x01010077, 0x010100d4, 0x01010129, + 0x01010155, 0x010101e1, 0x010102be, 0x010102cf, + 0x010102d0, 0x010102d1, 0x010102d2, 0x010102f8, + 0x010102f9, 0x01010318, 0x01010319, 0x0101031d, + 0x0101032d, 0x0101038a, 0x0101038b + }; + /** +

+ @attr description + Specifies a background drawable for the action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int ActionBar_background = 2; + /** +

+ @attr description + Specifies a background drawable for the bottom component of a split action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundSplit}. + @attr name android:backgroundSplit + */ + public static final int ActionBar_backgroundSplit = 18; + /** +

+ @attr description + Specifies a background drawable for a second stacked row of the action bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundStacked}. + @attr name android:backgroundStacked + */ + public static final int ActionBar_backgroundStacked = 17; + /** +

+ @attr description + Specifies a layout for custom navigation. Overrides navigationMode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#customNavigationLayout}. + @attr name android:customNavigationLayout + */ + public static final int ActionBar_customNavigationLayout = 10; + /** +

+ @attr description + Options affecting how the action bar is displayed. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
none0
useLogo0x1
showHome0x2
homeAsUp0x4
showTitle0x8
showCustom0x10
disableHome0x20
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#displayOptions}. + @attr name android:displayOptions + */ + public static final int ActionBar_displayOptions = 8; + /** +

+ @attr description + Specifies the drawable used for item dividers. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int ActionBar_divider = 3; + /** +

+ @attr description + Specifies a fixed height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ActionBar_height = 4; + /** +

+ @attr description + Specifies a layout to use for the "home" section of the action bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#homeLayout}. + @attr name android:homeLayout + */ + public static final int ActionBar_homeLayout = 15; + /** +

+ @attr description + Specifies the drawable used for the application icon. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int ActionBar_icon = 0; + /** +

+ @attr description + Specifies a style resource to use for an indeterminate progress spinner. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateProgressStyle}. + @attr name android:indeterminateProgressStyle + */ + public static final int ActionBar_indeterminateProgressStyle = 13; + /** +

+ @attr description + Specifies padding that should be applied to the left and right sides of + system-provided items in the bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemPadding}. + @attr name android:itemPadding + */ + public static final int ActionBar_itemPadding = 16; + /** +

+ @attr description + Specifies the drawable used for the application logo. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int ActionBar_logo = 6; + /** +

+ @attr description + The type of navigation to use. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Normal static title text
listMode1 The action bar will use a selection list for navigation.
tabMode2 The action bar will use a series of horizontal tabs for navigation.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#navigationMode}. + @attr name android:navigationMode + */ + public static final int ActionBar_navigationMode = 7; + /** +

+ @attr description + Specifies the horizontal padding on either end for an embedded progress bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarPadding}. + @attr name android:progressBarPadding + */ + public static final int ActionBar_progressBarPadding = 14; + /** +

+ @attr description + Specifies a style resource to use for an embedded progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyle}. + @attr name android:progressBarStyle + */ + public static final int ActionBar_progressBarStyle = 1; + /** +

+ @attr description + Specifies subtitle text used for navigationMode="normal" + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitle}. + @attr name android:subtitle + */ + public static final int ActionBar_subtitle = 9; + /** +

+ @attr description + Specifies a style to use for subtitle text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitleTextStyle}. + @attr name android:subtitleTextStyle + */ + public static final int ActionBar_subtitleTextStyle = 12; + /** +

+ @attr description + Specifies title text used for navigationMode="normal" + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int ActionBar_title = 5; + /** +

+ @attr description + Specifies a style to use for title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleTextStyle}. + @attr name android:titleTextStyle + */ + public static final int ActionBar_titleTextStyle = 11; + /** Attributes that can be used with a ActionBar_LayoutParams. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ActionBar_LayoutParams_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
+ @see #ActionBar_LayoutParams_layout_gravity + */ + public static final int[] ActionBar_LayoutParams = { + 0x010100b3 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int ActionBar_LayoutParams_layout_gravity = 0; + /** Attributes that can be used with a ActionMenuItemView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ActionMenuItemView_minWidth android:minWidth}
+ @see #ActionMenuItemView_minWidth + */ + public static final int[] ActionMenuItemView = { + 0x0101013f + }; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #ActionMenuItemView} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int ActionMenuItemView_minWidth = 0; + /** Attributes that can be used with a ActionMode. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #ActionMode_background android:background} Specifies a background for the action mode bar.
{@link #ActionMode_backgroundSplit android:backgroundSplit} Specifies a background for the split action mode bar.
{@link #ActionMode_height android:height} Specifies a fixed height for the action mode bar.
{@link #ActionMode_subtitleTextStyle android:subtitleTextStyle} Specifies a style to use for subtitle text.
{@link #ActionMode_titleTextStyle android:titleTextStyle} Specifies a style to use for title text.
+ @see #ActionMode_background + @see #ActionMode_backgroundSplit + @see #ActionMode_height + @see #ActionMode_subtitleTextStyle + @see #ActionMode_titleTextStyle + */ + public static final int[] ActionMode = { + 0x010100d4, 0x01010155, 0x010102f8, 0x010102f9, + 0x0101038b + }; + /** +

+ @attr description + Specifies a background for the action mode bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int ActionMode_background = 0; + /** +

+ @attr description + Specifies a background for the split action mode bar. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundSplit}. + @attr name android:backgroundSplit + */ + public static final int ActionMode_backgroundSplit = 4; + /** +

+ @attr description + Specifies a fixed height for the action mode bar. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ActionMode_height = 1; + /** +

+ @attr description + Specifies a style to use for subtitle text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtitleTextStyle}. + @attr name android:subtitleTextStyle + */ + public static final int ActionMode_subtitleTextStyle = 3; + /** +

+ @attr description + Specifies a style to use for title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleTextStyle}. + @attr name android:titleTextStyle + */ + public static final int ActionMode_titleTextStyle = 2; + /** Attrbitutes for a ActvityChooserView. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ActivityChooserView_expandActivityOverflowButtonDrawable android:expandActivityOverflowButtonDrawable} The drawable to show in the button for expanding the activities overflow popup.
{@link #ActivityChooserView_initialActivityCount android:initialActivityCount} The maximal number of items initially shown in the activity list.
+ @see #ActivityChooserView_expandActivityOverflowButtonDrawable + @see #ActivityChooserView_initialActivityCount + */ + public static final int[] ActivityChooserView = { + 0x0101044d, 0x0101044e + }; + /** +

+ @attr description + The drawable to show in the button for expanding the activities overflow popup. + Note: Clients would like to set this drawable + as a clue about the action the chosen activity will perform. For + example, if share activity is to be chosen the drawable should + give a clue that sharing is to be performed. + + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:expandActivityOverflowButtonDrawable + */ + public static final int ActivityChooserView_expandActivityOverflowButtonDrawable = 1; + /** +

+ @attr description + The maximal number of items initially shown in the activity list. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:initialActivityCount + */ + public static final int ActivityChooserView_initialActivityCount = 0; + /** Attributes that can be used with a AdapterViewAnimator. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AdapterViewAnimator_animateFirstView android:animateFirstView} Defines whether to animate the current View when the ViewAnimation + is first displayed.
{@link #AdapterViewAnimator_inAnimation android:inAnimation} Identifier for the animation to use when a view is shown.
{@link #AdapterViewAnimator_loopViews android:loopViews}Defines whether the animator loops to the first view once it + has reached the end of the list.
{@link #AdapterViewAnimator_outAnimation android:outAnimation} Identifier for the animation to use when a view is hidden.
+ @see #AdapterViewAnimator_animateFirstView + @see #AdapterViewAnimator_inAnimation + @see #AdapterViewAnimator_loopViews + @see #AdapterViewAnimator_outAnimation + */ + public static final int[] AdapterViewAnimator = { + 0x01010177, 0x01010178, 0x010102d5, 0x01010307 + }; + /** +

+ @attr description + Defines whether to animate the current View when the ViewAnimation + is first displayed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateFirstView}. + @attr name android:animateFirstView + */ + public static final int AdapterViewAnimator_animateFirstView = 2; + /** +

+ @attr description + Identifier for the animation to use when a view is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inAnimation}. + @attr name android:inAnimation + */ + public static final int AdapterViewAnimator_inAnimation = 0; + /** +

+ @attr description + Defines whether the animator loops to the first view once it + has reached the end of the list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#loopViews}. + @attr name android:loopViews + */ + public static final int AdapterViewAnimator_loopViews = 3; + /** +

+ @attr description + Identifier for the animation to use when a view is hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#outAnimation}. + @attr name android:outAnimation + */ + public static final int AdapterViewAnimator_outAnimation = 1; + /** Attributes that can be used with a AdapterViewFlipper. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AdapterViewFlipper_autoStart android:autoStart} When true, automatically start animating
{@link #AdapterViewFlipper_flipInterval android:flipInterval}
+ @see #AdapterViewFlipper_autoStart + @see #AdapterViewFlipper_flipInterval + */ + public static final int[] AdapterViewFlipper = { + 0x01010179, 0x010102b5 + }; + /** +

+ @attr description + When true, automatically start animating + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoStart}. + @attr name android:autoStart + */ + public static final int AdapterViewFlipper_autoStart = 1; + /** +

This symbol is the offset where the {@link android.R.attr#flipInterval} + attribute's value can be found in the {@link #AdapterViewFlipper} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:flipInterval + */ + public static final int AdapterViewFlipper_flipInterval = 0; + /** Specify one or more aid-filter elements inside a + aid-group element to specify an ISO7816 Application ID (AID) + your service can handle. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AidFilter_name android:name} The ISO7816 Application ID.
+ @see #AidFilter_name + */ + public static final int[] AidFilter = { + 0x01010003 + }; + /** +

+ @attr description + The ISO7816 Application ID. This attribute is mandatory. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AidFilter_name = 0; + /** Specify one or more aid-group elements inside a + host-apdu-service or offhost-apdu-service + element to define a group of ISO7816 Application ID (AIDs) that + your service can handle. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AidGroup_category android:category} The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly.
{@link #AidGroup_description android:description} Short description of what the AID group implements.
+ @see #AidGroup_category + @see #AidGroup_description + */ + public static final int[] AidGroup = { + 0x01010020, 0x010103e8 + }; + /** +

+ @attr description + The category attribute will be used by the Android platform to present + multiple applications that register ISO 7816 Application IDs (AIDs) in the + same category uniformly. + Additionally, when a category is specified, Android will ensure that either + all AIDs in this group are routed to this application, or none at all. + This attribute is optional. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#category}. + @attr name android:category + */ + public static final int AidGroup_category = 1; + /** +

+ @attr description + Short description of what the AID group implements. This attribute is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AidGroup_description = 0; + /** The set of attributes that describe a AlertDialog's theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AlertDialog_bottomBright android:bottomBright}
{@link #AlertDialog_bottomDark android:bottomDark}
{@link #AlertDialog_bottomMedium android:bottomMedium}
{@link #AlertDialog_centerBright android:centerBright}
{@link #AlertDialog_centerDark android:centerDark}
{@link #AlertDialog_centerMedium android:centerMedium}
{@link #AlertDialog_fullBright android:fullBright}
{@link #AlertDialog_fullDark android:fullDark}
{@link #AlertDialog_horizontalProgressLayout android:horizontalProgressLayout}
{@link #AlertDialog_layout android:layout} Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so.
{@link #AlertDialog_listItemLayout android:listItemLayout}
{@link #AlertDialog_listLayout android:listLayout}
{@link #AlertDialog_multiChoiceItemLayout android:multiChoiceItemLayout}
{@link #AlertDialog_progressLayout android:progressLayout}
{@link #AlertDialog_singleChoiceItemLayout android:singleChoiceItemLayout}
{@link #AlertDialog_topBright android:topBright}
{@link #AlertDialog_topDark android:topDark}
+ @see #AlertDialog_bottomBright + @see #AlertDialog_bottomDark + @see #AlertDialog_bottomMedium + @see #AlertDialog_centerBright + @see #AlertDialog_centerDark + @see #AlertDialog_centerMedium + @see #AlertDialog_fullBright + @see #AlertDialog_fullDark + @see #AlertDialog_horizontalProgressLayout + @see #AlertDialog_layout + @see #AlertDialog_listItemLayout + @see #AlertDialog_listLayout + @see #AlertDialog_multiChoiceItemLayout + @see #AlertDialog_progressLayout + @see #AlertDialog_singleChoiceItemLayout + @see #AlertDialog_topBright + @see #AlertDialog_topDark + */ + public static final int[] AlertDialog = { + 0x010100c6, 0x010100c7, 0x010100c8, 0x010100c9, + 0x010100ca, 0x010100cb, 0x010100cc, 0x010100cd, + 0x010100ce, 0x010100cf, 0x010100f2, 0x01010428, + 0x01010429, 0x0101042a, 0x0101042b, 0x0101042c, + 0x0101042d + }; + /** +

This symbol is the offset where the {@link android.R.attr#bottomBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomBright + */ + public static final int AlertDialog_bottomBright = 7; + /** +

This symbol is the offset where the {@link android.R.attr#bottomDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomDark + */ + public static final int AlertDialog_bottomDark = 3; + /** +

This symbol is the offset where the {@link android.R.attr#bottomMedium} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:bottomMedium + */ + public static final int AlertDialog_bottomMedium = 8; + /** +

This symbol is the offset where the {@link android.R.attr#centerBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerBright + */ + public static final int AlertDialog_centerBright = 6; + /** +

This symbol is the offset where the {@link android.R.attr#centerDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerDark + */ + public static final int AlertDialog_centerDark = 2; + /** +

This symbol is the offset where the {@link android.R.attr#centerMedium} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:centerMedium + */ + public static final int AlertDialog_centerMedium = 9; + /** +

This symbol is the offset where the {@link android.R.attr#fullBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:fullBright + */ + public static final int AlertDialog_fullBright = 4; + /** +

This symbol is the offset where the {@link android.R.attr#fullDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:fullDark + */ + public static final int AlertDialog_fullDark = 0; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#horizontalProgressLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:horizontalProgressLayout + */ + public static final int AlertDialog_horizontalProgressLayout = 16; + /** +

+ @attr description + Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int AlertDialog_layout = 10; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#listItemLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:listItemLayout + */ + public static final int AlertDialog_listItemLayout = 14; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#listLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:listLayout + */ + public static final int AlertDialog_listLayout = 11; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#multiChoiceItemLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:multiChoiceItemLayout + */ + public static final int AlertDialog_multiChoiceItemLayout = 12; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#progressLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:progressLayout + */ + public static final int AlertDialog_progressLayout = 15; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#singleChoiceItemLayout} + attribute's value can be found in the {@link #AlertDialog} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:singleChoiceItemLayout + */ + public static final int AlertDialog_singleChoiceItemLayout = 13; + /** +

This symbol is the offset where the {@link android.R.attr#topBright} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:topBright + */ + public static final int AlertDialog_topBright = 5; + /** +

This symbol is the offset where the {@link android.R.attr#topDark} + attribute's value can be found in the {@link #AlertDialog} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:topDark + */ + public static final int AlertDialog_topDark = 1; + /** Attributes that can be used with a AlphaAnimation. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AlphaAnimation_fromAlpha android:fromAlpha}
{@link #AlphaAnimation_toAlpha android:toAlpha}
+ @see #AlphaAnimation_fromAlpha + @see #AlphaAnimation_toAlpha + */ + public static final int[] AlphaAnimation = { + 0x010101ca, 0x010101cb + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromAlpha} + attribute's value can be found in the {@link #AlphaAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromAlpha + */ + public static final int AlphaAnimation_fromAlpha = 0; + /** +

This symbol is the offset where the {@link android.R.attr#toAlpha} + attribute's value can be found in the {@link #AlphaAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toAlpha + */ + public static final int AlphaAnimation_toAlpha = 1; + /** Attributes that can be used with a AnalogClock. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AnalogClock_dial android:dial}
{@link #AnalogClock_hand_hour android:hand_hour}
{@link #AnalogClock_hand_minute android:hand_minute}
+ @see #AnalogClock_dial + @see #AnalogClock_hand_hour + @see #AnalogClock_hand_minute + */ + public static final int[] AnalogClock = { + 0x01010102, 0x01010103, 0x01010104 + }; + /** +

This symbol is the offset where the {@link android.R.attr#dial} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:dial + */ + public static final int AnalogClock_dial = 0; + /** +

This symbol is the offset where the {@link android.R.attr#hand_hour} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:hand_hour + */ + public static final int AnalogClock_hand_hour = 1; + /** +

This symbol is the offset where the {@link android.R.attr#hand_minute} + attribute's value can be found in the {@link #AnalogClock} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:hand_minute + */ + public static final int AnalogClock_hand_minute = 2; + /** The manifest tag is the root of an + AndroidManifest.xml file, + describing the contents of an Android package (.apk) file. One + attribute must always be supplied: package gives a + unique name for the package, using a Java-style naming convention + to avoid name collisions. For example, applications published + by Google could have names of the form + com.google.app.appname + +

Inside of the manifest tag, may appear the following tags + in any order: {@link #AndroidManifestPermission permission}, + {@link #AndroidManifestPermissionGroup permission-group}, + {@link #AndroidManifestPermissionTree permission-tree}, + {@link #AndroidManifestUsesSdk uses-sdk}, + {@link #AndroidManifestUsesPermission uses-permission}, + {@link #AndroidManifestUsesConfiguration uses-configuration}, + {@link #AndroidManifestApplication application}, + {@link #AndroidManifestInstrumentation instrumentation}, + {@link #AndroidManifestUsesFeature uses-feature}. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #AndroidManifest_installLocation android:installLocation} The default install location defined by an application.
{@link #AndroidManifest_sharedUserId android:sharedUserId} Specify the name of a user ID that will be shared between multiple + packages.
{@link #AndroidManifest_sharedUserLabel android:sharedUserLabel} Specify a label for the shared user UID of this package.
{@link #AndroidManifest_versionCode android:versionCode} Internal version code.
{@link #AndroidManifest_versionName android:versionName} The text shown to the user to indicate the version they have.
+ @see #AndroidManifest_installLocation + @see #AndroidManifest_sharedUserId + @see #AndroidManifest_sharedUserLabel + @see #AndroidManifest_versionCode + @see #AndroidManifest_versionName + */ + public static final int[] AndroidManifest = { + 0x0101000b, 0x0101021b, 0x0101021c, 0x01010261, + 0x010102b7 + }; + /** +

+ @attr description + The default install location defined by an application. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Let the system decide ideal install location
internalOnly1 Explicitly request to be installed on internal phone storage + only.
preferExternal2 Prefer to be installed on SD card. There is no guarantee that + the system will honor this request. The application might end + up being installed on internal storage if external media + is unavailable or too full.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#installLocation}. + @attr name android:installLocation + */ + public static final int AndroidManifest_installLocation = 4; + /** +

+ @attr description + Specify the name of a user ID that will be shared between multiple + packages. By default, each package gets its own unique user-id. + By setting this value on two or more packages, each of these packages + will be given a single shared user ID, so they can for example run + in the same process. Note that for them to actually get the same + user ID, they must also be signed with the same signature. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sharedUserId}. + @attr name android:sharedUserId + */ + public static final int AndroidManifest_sharedUserId = 0; + /** +

+ @attr description + Specify a label for the shared user UID of this package. This is + only used if you have also used android:sharedUserId. This must + be a reference to a string resource; it can not be an explicit + string. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sharedUserLabel}. + @attr name android:sharedUserLabel + */ + public static final int AndroidManifest_sharedUserLabel = 3; + /** +

+ @attr description + Internal version code. This is the number used to determine whether + one version is more recent than another: it has no other meaning than + that higher numbers are more recent. You could use this number to + encode a "x.y" in the lower and upper 16 bits, make it a build + number, simply increase it by one each time a new version is + released, or define it however else you want, as long as each + successive version has a higher number. This is not a version + number generally shown to the user, that is usually supplied + with {@link android.R.attr#versionName}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#versionCode}. + @attr name android:versionCode + */ + public static final int AndroidManifest_versionCode = 1; + /** +

+ @attr description + The text shown to the user to indicate the version they have. This + is used for no other purpose than display to the user; the actual + significant version number is given by {@link android.R.attr#versionCode}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#versionName}. + @attr name android:versionName + */ + public static final int AndroidManifest_versionName = 2; + /** Attributes that can be supplied in an AndroidManifest.xml + action tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag. + See {@link android.content.IntentFilter#addAction} for + more information. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestAction_name android:name} The name of an action that is handled, using the Java-style + naming convention.
+ @see #AndroidManifestAction_name + */ + public static final int[] AndroidManifestAction = { + 0x01010003 + }; + /** +

+ @attr description + The name of an action that is handled, using the Java-style + naming convention. For example, to support + {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW} + you would put android.intent.action.VIEW here. + Custom actions should generally use a prefix matching the + package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestAction_name = 0; + /** The activity tag declares an + {@link android.app.Activity} class that is available + as part of the package's application components, implementing + a part of the application's user interface. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of an activity, to specify the Intents + that it can handle. If none are specified, the activity can + only be started through direct specification of its class name. + The activity tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestActivity_allowTaskReparenting android:allowTaskReparenting} Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate.
{@link #AndroidManifestActivity_alwaysRetainTaskState android:alwaysRetainTaskState} Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations.
{@link #AndroidManifestActivity_clearTaskOnLaunch android:clearTaskOnLaunch} Specify whether an activity's task should be cleared when it + is re-launched from the home screen.
{@link #AndroidManifestActivity_configChanges android:configChanges} Specify one or more configuration changes that the activity will + handle itself.
{@link #AndroidManifestActivity_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestActivity_enabled android:enabled} Specify whether the activity is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestActivity_excludeFromRecents android:excludeFromRecents} Indicates that an Activity should be excluded from the list of + recently launched activities.
{@link #AndroidManifestActivity_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestActivity_finishOnCloseSystemDialogs android:finishOnCloseSystemDialogs} Specify whether an activity should be finished when a "close system + windows" request has been made.
{@link #AndroidManifestActivity_finishOnTaskLaunch android:finishOnTaskLaunch} Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen.
{@link #AndroidManifestActivity_hardwareAccelerated android:hardwareAccelerated}

Flag indicating whether the application's rendering should be hardware + accelerated if possible.

{@link #AndroidManifestActivity_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestActivity_immersive android:immersive} Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications.
{@link #AndroidManifestActivity_label android:label} A user-legible name for the given item.
{@link #AndroidManifestActivity_launchMode android:launchMode} Specify how an activity should be launched.
{@link #AndroidManifestActivity_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestActivity_multiprocess android:multiprocess} Specify whether a component is allowed to have multiple instances + of itself running in different processes.
{@link #AndroidManifestActivity_name android:name} Required name of the class implementing the activity, deriving from + {@link android.app.Activity}.
{@link #AndroidManifestActivity_noHistory android:noHistory} Specify whether an activity should be kept in its history stack.
{@link #AndroidManifestActivity_parentActivityName android:parentActivityName} The name of the logical parent of the activity as it appears in the manifest.
{@link #AndroidManifestActivity_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestActivity_primaryUserOnly android:primaryUserOnly} @hide This broacast receiver will only receive broadcasts for the + primary user.
{@link #AndroidManifestActivity_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestActivity_screenOrientation android:screenOrientation} Specify the orientation an activity should be run in.
{@link #AndroidManifestActivity_showOnLockScreen android:showOnLockScreen} Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows
{@link #AndroidManifestActivity_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestActivity_stateNotNeeded android:stateNotNeeded} Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted.
{@link #AndroidManifestActivity_taskAffinity android:taskAffinity} Specify a task name that activities have an "affinity" to.
{@link #AndroidManifestActivity_theme android:theme} The overall theme to use for an activity.
{@link #AndroidManifestActivity_uiOptions android:uiOptions} Extra options for an activity's UI.
{@link #AndroidManifestActivity_windowSoftInputMode android:windowSoftInputMode} Specify the default soft-input mode for the main window of + this activity.
+ @see #AndroidManifestActivity_allowTaskReparenting + @see #AndroidManifestActivity_alwaysRetainTaskState + @see #AndroidManifestActivity_clearTaskOnLaunch + @see #AndroidManifestActivity_configChanges + @see #AndroidManifestActivity_description + @see #AndroidManifestActivity_enabled + @see #AndroidManifestActivity_excludeFromRecents + @see #AndroidManifestActivity_exported + @see #AndroidManifestActivity_finishOnCloseSystemDialogs + @see #AndroidManifestActivity_finishOnTaskLaunch + @see #AndroidManifestActivity_hardwareAccelerated + @see #AndroidManifestActivity_icon + @see #AndroidManifestActivity_immersive + @see #AndroidManifestActivity_label + @see #AndroidManifestActivity_launchMode + @see #AndroidManifestActivity_logo + @see #AndroidManifestActivity_multiprocess + @see #AndroidManifestActivity_name + @see #AndroidManifestActivity_noHistory + @see #AndroidManifestActivity_parentActivityName + @see #AndroidManifestActivity_permission + @see #AndroidManifestActivity_primaryUserOnly + @see #AndroidManifestActivity_process + @see #AndroidManifestActivity_screenOrientation + @see #AndroidManifestActivity_showOnLockScreen + @see #AndroidManifestActivity_singleUser + @see #AndroidManifestActivity_stateNotNeeded + @see #AndroidManifestActivity_taskAffinity + @see #AndroidManifestActivity_theme + @see #AndroidManifestActivity_uiOptions + @see #AndroidManifestActivity_windowSoftInputMode + */ + public static final int[] AndroidManifestActivity = { + 0x01010000, 0x01010001, 0x01010002, 0x01010003, + 0x01010006, 0x0101000e, 0x01010010, 0x01010011, + 0x01010012, 0x01010013, 0x01010014, 0x01010015, + 0x01010016, 0x01010017, 0x0101001d, 0x0101001e, + 0x0101001f, 0x01010020, 0x01010203, 0x01010204, + 0x0101022b, 0x0101022d, 0x010102a7, 0x010102be, + 0x010102c0, 0x010102d3, 0x01010398, 0x010103a7, + 0x010103bf, 0x010103c9, 0x01010480 + }; + /** +

+ @attr description + Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowTaskReparenting}. + @attr name android:allowTaskReparenting + */ + public static final int AndroidManifestActivity_allowTaskReparenting = 19; + /** +

+ @attr description + Specify whether an acitivty's task state should always be maintained + by the system, or if it is allowed to reset the task to its initial + state in certain situations. + +

Normally the system will reset a task (remove all activities from + the stack and reset the root activity) in certain situations when + the user re-selects that task from the home screen. Typically this + will be done if the user hasn't visited that task for a certain + amount of time, such as 30 minutes. + +

By setting this attribute, the user will always return to your + task in its last state, regardless of how they get there. This is + useful, for example, in an application like the web browser where there + is a lot of state (such as multiple open tabs) that the application + would not like to lose. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alwaysRetainTaskState}. + @attr name android:alwaysRetainTaskState + */ + public static final int AndroidManifestActivity_alwaysRetainTaskState = 18; + /** +

+ @attr description + Specify whether an activity's task should be cleared when it + is re-launched from the home screen. As a result, every time the + user starts the task, they will be brought to its root activity, + regardless of whether they used BACK or HOME to last leave it. + This flag only applies to activities that + are used to start the root of a new task. + +

An example of the use of this flag would be for the case where + a user launches activity A from home, and from there goes to + activity B. They now press home, and then return to activity A. + Normally they would see activity B, since that is what they were + last doing in A's task. However, if A has set this flag to true, + then upon going to the background all of the tasks on top of it (B + in this case) are removed, so when the user next returns to A they + will restart at its original activity. + +

When this option is used in conjunction with + {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the + clear. That is, all activities above the root activity of the + task will be removed: those that have an affinity will be moved + to the task they are associated with, otherwise they will simply + be dropped as described here. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clearTaskOnLaunch}. + @attr name android:clearTaskOnLaunch + */ + public static final int AndroidManifestActivity_clearTaskOnLaunch = 11; + /** +

+ @attr description + Specify one or more configuration changes that the activity will + handle itself. If not specified, the activity will be restarted + if any of these configuration changes happen in the system. Otherwise, + the activity will remain running and its + {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged} + method called with the new configuration. + +

Note that all of these configuration changes can impact the + resource values seen by the application, so you will generally need + to re-retrieve all resources (including view layouts, drawables, etc) + to correctly handle any configuration change. + +

These values must be kept in sync with those in + {@link android.content.pm.ActivityInfo} and + include/utils/ResourceTypes.h. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
mcc0x0001 The IMSI MCC has changed, that is a SIM has been detected and + updated the Mobile Country Code.
mnc0x0002 The IMSI MNC has changed, that is a SIM has been detected and + updated the Mobile Network Code.
locale0x0004 The locale has changed, that is the user has selected a new + language that text should be displayed in.
touchscreen0x0008 The touchscreen has changed. Should never normally happen.
keyboard0x0010 The keyboard type has changed, for example the user has plugged + in an external keyboard.
keyboardHidden0x0020 The keyboard or navigation accessibility has changed, for example + the user has slid the keyboard out to expose it. Note that + despite its name, this applied to any accessibility: keyboard + or navigation.
navigation0x0040 The navigation type has changed. Should never normally happen.
orientation0x0080 The screen orientation has changed, that is the user has + rotated the device.
screenLayout0x0100 The screen layout has changed. This might be caused by a + different display being activated.
uiMode0x0200 The global user interface mode has changed. For example, + going in or out of car mode, night mode changing, etc.
screenSize0x0400 The current available screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in the + currently available size, so will change when the user switches + between landscape and portrait.
smallestScreenSize0x0800 The physical screen size has changed. If applications don't + target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} + then the activity will always handle this itself (the change + will not result in a restart). This represents a change in size + regardless of orientation, so will only change when the actual + physical screen size has changed such as switching to an external + display.
layoutDirection0x2000 The layout direction has changed. For example going from LTR to RTL.
fontScale0x40000000 The font scaling factor has changed, that is the user has + selected a new global font size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#configChanges}. + @attr name android:configChanges + */ + public static final int AndroidManifestActivity_configChanges = 16; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestActivity_description = 17; + /** +

+ @attr description + Specify whether the activity is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestActivity_enabled = 5; + /** +

+ @attr description + Indicates that an Activity should be excluded from the list of + recently launched activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#excludeFromRecents}. + @attr name android:excludeFromRecents + */ + public static final int AndroidManifestActivity_excludeFromRecents = 13; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestActivity_exported = 6; + /** +

+ @attr description + Specify whether an activity should be finished when a "close system + windows" request has been made. This happens, for example, when + the home key is pressed, when the device is locked, when a system + dialog showing recent applications is displayed, etc. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#finishOnCloseSystemDialogs}. + @attr name android:finishOnCloseSystemDialogs + */ + public static final int AndroidManifestActivity_finishOnCloseSystemDialogs = 22; + /** +

+ @attr description + Specify whether an activity should be finished when its task is + brought to the foreground by relaunching from the home screen. + +

If both this option and {@link android.R.attr#allowTaskReparenting} are + specified, the finish trumps the affinity: the affinity will be + ignored and the activity simply finished. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#finishOnTaskLaunch}. + @attr name android:finishOnTaskLaunch + */ + public static final int AndroidManifestActivity_finishOnTaskLaunch = 10; + /** +

+ @attr description +

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+ + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hardwareAccelerated}. + @attr name android:hardwareAccelerated + */ + public static final int AndroidManifestActivity_hardwareAccelerated = 25; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestActivity_icon = 2; + /** +

+ @attr description + Flag declaring this activity to be 'immersive'; immersive activities + should not be interrupted with other activities or notifications. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#immersive}. + @attr name android:immersive + */ + public static final int AndroidManifestActivity_immersive = 24; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestActivity_label = 1; + /** +

+ @attr description + Specify how an activity should be launched. See the + Tasks and Back + Stack document for important information on how these options impact + the behavior of your application. + +

If this attribute is not specified, standard launch + mode will be used. Note that the particular launch behavior can + be changed in some ways at runtime through the + {@link android.content.Intent} flags + {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}, + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and + {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
standard0 The default mode, which will usually create a new instance of + the activity when it is started, though this behavior may change + with the introduction of other options such as + {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK + Intent.FLAG_ACTIVITY_NEW_TASK}.
singleTop1 If, when starting the activity, there is already an + instance of the same activity class in the foreground that is + interacting with the user, then + re-use that instance. This existing instance will receive a call to + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with + the new Intent that is being started.
singleTask2 If, when starting the activity, there is already a task running + that starts with this activity, then instead of starting a new + instance the current task is brought to the front. The existing + instance will receive a call to {@link android.app.Activity#onNewIntent + Activity.onNewIntent()} + with the new Intent that is being started, and with the + {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT + Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set. This is a superset + of the singleTop mode, where if there is already an instance + of the activity being started at the top of the stack, it will + receive the Intent as described there (without the + FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set). See the + Tasks and Back + Stack document for more details about tasks.
singleInstance3 Only allow one instance of this activity to ever be + running. This activity gets a unique task with only itself running + in it; if it is ever launched again with the same Intent, then that + task will be brought forward and its + {@link android.app.Activity#onNewIntent Activity.onNewIntent()} + method called. If this + activity tries to start a new activity, that new activity will be + launched in a separate task. See the + Tasks and Back + Stack document for more details about tasks.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#launchMode}. + @attr name android:launchMode + */ + public static final int AndroidManifestActivity_launchMode = 14; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestActivity_logo = 23; + /** +

+ @attr description + Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#multiprocess}. + @attr name android:multiprocess + */ + public static final int AndroidManifestActivity_multiprocess = 9; + /** +

+ @attr description + Required name of the class implementing the activity, deriving from + {@link android.app.Activity}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestActivity_name = 3; + /** +

+ @attr description + Specify whether an activity should be kept in its history stack. + If this attribute is set, then as soon as the user navigates away + from the activity it will be finished and they will no longer be + able to return to it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#noHistory}. + @attr name android:noHistory + */ + public static final int AndroidManifestActivity_noHistory = 21; + /** +

+ @attr description + The name of the logical parent of the activity as it appears in the manifest. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#parentActivityName}. + @attr name android:parentActivityName + */ + public static final int AndroidManifestActivity_parentActivityName = 27; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestActivity_permission = 4; + /** +

+ @attr description + @hide This broacast receiver will only receive broadcasts for the + primary user. Can only be used with receivers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:primaryUserOnly + */ + public static final int AndroidManifestActivity_primaryUserOnly = 30; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestActivity_process = 7; + /** +

+ @attr description + Specify the orientation an activity should be run in. If not + specified, it will run in the current preferred orientation + of the screen. +

This attribute is supported by the {@code <activity>} + element. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
unspecified-1 No preference specified: let the system decide the best + orientation. This will either be the orientation selected + by the activity below, or the user's preferred orientation + if this activity is the bottom of a task. If the user + explicitly turned off sensor based orientation through settings + sensor based device rotation will be ignored. If not by default + sensor based orientation will be taken into account and the + orientation will changed based on how the user rotates the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}.
landscape0 Would like to have the screen in a landscape orientation: that + is, with the display wider than it is tall, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}.
portrait1 Would like to have the screen in a portrait orientation: that + is, with the display taller than it is wide, ignoring sensor data. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}.
user2 Use the user's current preferred orientation of the handset. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}.
behind3 Keep the screen in the same orientation as whatever is behind + this activity. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}.
sensor4 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + Ignores user's setting to turn off sensor-based rotation. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}.
nosensor5 Always ignore orientation determined by orientation sensor: + the display will not rotate when the user moves the device. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}.
sensorLandscape6 Would like to have the screen in landscape orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}.
sensorPortrait7 Would like to have the screen in portrait orientation, but can + use the sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}.
reverseLandscape8 Would like to have the screen in landscape orientation, turned in + the opposite direction from normal landscape. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}.
reversePortrait9 Would like to have the screen in portrait orientation, turned in + the opposite direction from normal portrait. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}.
fullSensor10 Orientation is determined by a physical orientation sensor: + the display will rotate based on how the user moves the device. + This allows any of the 4 possible rotations, regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}.
userLandscape11 Would like to have the screen in landscape orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}.
userPortrait12 Would like to have the screen in portrait orientation, but if + the user has enabled sensor-based rotation then we can use the + sensor to change which direction the screen is facing. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}.
fullUser13 Respect the user's sensor-based rotation preference, but if + sensor-based rotation is enabled then allow the screen to rotate + in all 4 possible directions regardless of what + the device will normally do (for example some devices won't + normally use 180 degree rotation). + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}.
locked14 Screen is locked to its current rotation, whatever that is. + Corresponds to + {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenOrientation}. + @attr name android:screenOrientation + */ + public static final int AndroidManifestActivity_screenOrientation = 15; + /** +

+ @attr description + Specify that an Activity should be shown over the lock screen and, + in a multiuser environment, across all users' windows + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showOnLockScreen}. + @attr name android:showOnLockScreen + */ + public static final int AndroidManifestActivity_showOnLockScreen = 29; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestActivity_singleUser = 28; + /** +

+ @attr description + Indicates that an Activity does not need to have its freeze state + (as returned by {@link android.app.Activity#onSaveInstanceState} + retained in order to be restarted. Generally you use this for activities + that do not store any state. When this flag is set, if for some reason + the activity is killed before it has a chance to save its state, + then the system will not remove it from the activity stack like + it normally would. Instead, the next time the user navigates to + it its {@link android.app.Activity#onCreate} method will be called + with a null icicle, just like it was starting for the first time. + +

This is used by the Home activity to make sure it does not get + removed if it crashes for some reason. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stateNotNeeded}. + @attr name android:stateNotNeeded + */ + public static final int AndroidManifestActivity_stateNotNeeded = 12; + /** +

+ @attr description + Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskAffinity}. + @attr name android:taskAffinity + */ + public static final int AndroidManifestActivity_taskAffinity = 8; + /** +

+ @attr description + The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#theme}. + @attr name android:theme + */ + public static final int AndroidManifestActivity_theme = 0; + /** +

+ @attr description + Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#uiOptions}. + @attr name android:uiOptions + */ + public static final int AndroidManifestActivity_uiOptions = 26; + /** +

+ @attr description + Specify the default soft-input mode for the main window of + this activity. A value besides "unspecified" here overrides + any value in the theme. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int AndroidManifestActivity_windowSoftInputMode = 20; + /** The activity-alias tag declares a new + name for an existing {@link #AndroidManifestActivity activity} + tag. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of an activity-alias, to specify the Intents + that it can handle. If none are specified, the activity can + only be started through direct specification of its class name. + The activity-alias tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestActivityAlias_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestActivityAlias_enabled android:enabled} Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestActivityAlias_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestActivityAlias_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestActivityAlias_label android:label} A user-legible name for the given item.
{@link #AndroidManifestActivityAlias_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestActivityAlias_name android:name} Required name of the class implementing the activity, deriving from + {@link android.app.Activity}.
{@link #AndroidManifestActivityAlias_parentActivityName android:parentActivityName} The name of the logical parent of the activity as it appears in the manifest.
{@link #AndroidManifestActivityAlias_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestActivityAlias_targetActivity android:targetActivity} The name of the activity this alias should launch.
+ @see #AndroidManifestActivityAlias_description + @see #AndroidManifestActivityAlias_enabled + @see #AndroidManifestActivityAlias_exported + @see #AndroidManifestActivityAlias_icon + @see #AndroidManifestActivityAlias_label + @see #AndroidManifestActivityAlias_logo + @see #AndroidManifestActivityAlias_name + @see #AndroidManifestActivityAlias_parentActivityName + @see #AndroidManifestActivityAlias_permission + @see #AndroidManifestActivityAlias_targetActivity + */ + public static final int[] AndroidManifestActivityAlias = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010020, 0x01010202, + 0x010102be, 0x010103a7 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestActivityAlias_description = 6; + /** +

+ @attr description + Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestActivityAlias_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestActivityAlias_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestActivityAlias_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestActivityAlias_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestActivityAlias_logo = 8; + /** +

+ @attr description + Required name of the class implementing the activity, deriving from + {@link android.app.Activity}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestActivityAlias_name = 2; + /** +

+ @attr description + The name of the logical parent of the activity as it appears in the manifest. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#parentActivityName}. + @attr name android:parentActivityName + */ + public static final int AndroidManifestActivityAlias_parentActivityName = 9; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestActivityAlias_permission = 3; + /** +

+ @attr description + The name of the activity this alias should launch. The activity + must be in the same manifest as the alias, and have been defined + in that manifest before the alias here. This must use a Java-style + naming convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetActivity}. + @attr name android:targetActivity + */ + public static final int AndroidManifestActivityAlias_targetActivity = 7; + /** The application tag describes application-level components + contained in the package, as well as general application + attributes. Many of the attributes you can supply here (such + as theme, label, icon, permission, process, taskAffinity, + and allowTaskReparenting) serve + as default values for the corresponding attributes of components + declared inside of the application. + +

Inside of this element you specify what the application contains, + using the elements {@link #AndroidManifestProvider provider}, + {@link #AndroidManifestService service}, + {@link #AndroidManifestReceiver receiver}, + {@link #AndroidManifestActivity activity}, + {@link #AndroidManifestActivityAlias activity-alias}, and + {@link #AndroidManifestUsesLibrary uses-library}. The application tag + appears as a child of the root {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestApplication_allowBackup android:allowBackup} Whether to allow the application to participate in the backup + and restore infrastructure.
{@link #AndroidManifestApplication_allowClearUserData android:allowClearUserData} Option to let applications specify that user data can/cannot be + cleared.
{@link #AndroidManifestApplication_allowTaskReparenting android:allowTaskReparenting} Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate.
{@link #AndroidManifestApplication_backupAgent android:backupAgent} The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage.
{@link #AndroidManifestApplication_cantSaveState android:cantSaveState} Declare that this application can't participate in the normal + state save/restore mechanism.
{@link #AndroidManifestApplication_debuggable android:debuggable} Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode.
{@link #AndroidManifestApplication_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestApplication_enabled android:enabled} Specify whether the components in this application are enabled or not (that is, can be + instantiated by the system).
{@link #AndroidManifestApplication_hardwareAccelerated android:hardwareAccelerated}

Flag indicating whether the application's rendering should be hardware + accelerated if possible.

{@link #AndroidManifestApplication_hasCode android:hasCode} Indicate whether this application contains code.
{@link #AndroidManifestApplication_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestApplication_killAfterRestore android:killAfterRestore} Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation.
{@link #AndroidManifestApplication_label android:label} A user-legible name for the given item.
{@link #AndroidManifestApplication_largeHeap android:largeHeap} Request that your application's processes be created with + a large Dalvik heap.
{@link #AndroidManifestApplication_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestApplication_manageSpaceActivity android:manageSpaceActivity} Name of activity to be launched for managing the application's space on the device.
{@link #AndroidManifestApplication_name android:name} An optional name of a class implementing the overall + {@link android.app.Application} for this package.
{@link #AndroidManifestApplication_neverEncrypt android:neverEncrypt} Option to let applications specify that user data should + never be encrypted if an Encrypted File System solution + is enabled.
{@link #AndroidManifestApplication_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestApplication_persistent android:persistent} Flag to control special persistent mode of an application.
{@link #AndroidManifestApplication_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestApplication_requiredAccountType android:requiredAccountType} Declare that this application requires an account of a certain + type.
{@link #AndroidManifestApplication_requiredForAllUsers android:requiredForAllUsers} Flag to specify if this application needs to be present for all users.
{@link #AndroidManifestApplication_restoreAnyVersion android:restoreAnyVersion} Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device.
{@link #AndroidManifestApplication_restoreNeedsApplication android:restoreNeedsApplication} @deprecated This attribute is not used by the Android operating system.
{@link #AndroidManifestApplication_restrictedAccountType android:restrictedAccountType} Declare that this application requires access to restricted accounts of a certain + type.
{@link #AndroidManifestApplication_supportsRtl android:supportsRtl} Declare that your application will be able to deal with RTL (right to left) layouts.
{@link #AndroidManifestApplication_taskAffinity android:taskAffinity} Specify a task name that activities have an "affinity" to.
{@link #AndroidManifestApplication_testOnly android:testOnly} Option to indicate this application is only for testing purposes.
{@link #AndroidManifestApplication_theme android:theme} The overall theme to use for an activity.
{@link #AndroidManifestApplication_uiOptions android:uiOptions} Extra options for an activity's UI.
{@link #AndroidManifestApplication_vmSafeMode android:vmSafeMode} Flag indicating whether the application requests the VM to operate in + the safe mode.
+ @see #AndroidManifestApplication_allowBackup + @see #AndroidManifestApplication_allowClearUserData + @see #AndroidManifestApplication_allowTaskReparenting + @see #AndroidManifestApplication_backupAgent + @see #AndroidManifestApplication_cantSaveState + @see #AndroidManifestApplication_debuggable + @see #AndroidManifestApplication_description + @see #AndroidManifestApplication_enabled + @see #AndroidManifestApplication_hardwareAccelerated + @see #AndroidManifestApplication_hasCode + @see #AndroidManifestApplication_icon + @see #AndroidManifestApplication_killAfterRestore + @see #AndroidManifestApplication_label + @see #AndroidManifestApplication_largeHeap + @see #AndroidManifestApplication_logo + @see #AndroidManifestApplication_manageSpaceActivity + @see #AndroidManifestApplication_name + @see #AndroidManifestApplication_neverEncrypt + @see #AndroidManifestApplication_permission + @see #AndroidManifestApplication_persistent + @see #AndroidManifestApplication_process + @see #AndroidManifestApplication_requiredAccountType + @see #AndroidManifestApplication_requiredForAllUsers + @see #AndroidManifestApplication_restoreAnyVersion + @see #AndroidManifestApplication_restoreNeedsApplication + @see #AndroidManifestApplication_restrictedAccountType + @see #AndroidManifestApplication_supportsRtl + @see #AndroidManifestApplication_taskAffinity + @see #AndroidManifestApplication_testOnly + @see #AndroidManifestApplication_theme + @see #AndroidManifestApplication_uiOptions + @see #AndroidManifestApplication_vmSafeMode + */ + public static final int[] AndroidManifestApplication = { + 0x01010000, 0x01010001, 0x01010002, 0x01010003, + 0x01010004, 0x01010005, 0x01010006, 0x0101000c, + 0x0101000d, 0x0101000e, 0x0101000f, 0x01010011, + 0x01010012, 0x01010020, 0x01010204, 0x01010272, + 0x0101027f, 0x01010280, 0x0101029c, 0x0101029d, + 0x010102b8, 0x010102ba, 0x010102be, 0x010102d3, + 0x0101035a, 0x01010398, 0x010103af, 0x010103d0, + 0x010103d5, 0x010103d6, 0x0101047e, 0x0101047f + }; + /** +

+ @attr description + Whether to allow the application to participate in the backup + and restore infrastructure. If this attribute is set to false, + no backup or restore of the application will ever be performed, even by a + full-system backup that would otherwise cause all application data to be saved + via adb. The default value of this attribute is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowBackup}. + @attr name android:allowBackup + */ + public static final int AndroidManifestApplication_allowBackup = 17; + /** +

+ @attr description + Option to let applications specify that user data can/cannot be + cleared. This flag is turned on by default. + This attribute is usable only by applications + included in the system image. Third-party apps cannot use it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowClearUserData}. + @attr name android:allowClearUserData + */ + public static final int AndroidManifestApplication_allowClearUserData = 5; + /** +

+ @attr description + Specify that an activity can be moved out of a task it is in to + the task it has an affinity for when appropriate. Use with the + application tag (to supply a default for all activities in the + application), or with an activity tag (to supply a specific + setting for that component). + +

Normally when an application is started, it is associated with + the task of the activity that started it and stays there for its + entire lifetime. You can use the allowTaskReparenting feature to force an + activity to be re-parented to a different task when the task it is + in goes to the background. Typically this is used to cause the + activities of an application to move back to the main task associated + with that application. The activity is re-parented to the task + with the same {@link android.R.attr#taskAffinity} as it has. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowTaskReparenting}. + @attr name android:allowTaskReparenting + */ + public static final int AndroidManifestApplication_allowTaskReparenting = 14; + /** +

+ @attr description + The name of the class subclassing BackupAgent to manage + backup and restore of the application's data on external storage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backupAgent}. + @attr name android:backupAgent + */ + public static final int AndroidManifestApplication_backupAgent = 16; + /** +

+ @attr description + Declare that this application can't participate in the normal + state save/restore mechanism. Since it is not able to save and + restore its state on demand, + it can not participate in the normal activity lifecycle. It will + not be killed while in the background; the user must explicitly + quit it. Only one such app can be running at a time; if the user + tries to launch a second such app, they will be prompted + to quit the first before doing so. While the + application is running, the user will be informed of this. + @hide + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:cantSaveState + */ + public static final int AndroidManifestApplication_cantSaveState = 31; + /** +

+ @attr description + Flag indicating whether the application can be debugged, even when + running on a device that is running in user mode. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#debuggable}. + @attr name android:debuggable + */ + public static final int AndroidManifestApplication_debuggable = 10; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestApplication_description = 13; + /** +

+ @attr description + Specify whether the components in this application are enabled or not (that is, can be + instantiated by the system). + If "false", it overrides any component specific values (a value of "true" will not + override the component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestApplication_enabled = 9; + /** +

+ @attr description +

Flag indicating whether the application's rendering should be hardware + accelerated if possible. This flag is turned on by default for applications + that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} + or later.

+

This flag can be set on the application and any activity declared + in the manifest. When enabled for the application, each activity is + automatically assumed to be hardware accelerated. This flag can be + overridden in the activity tags, either turning it off (if on for the + application) or on (if off for the application.)

+

When this flag is turned on for an activity (either directly or via + the application tag), every window created from the activity, including + the activity's own window, will be hardware accelerated, if possible.

+

Please refer to the documentation of + {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} + for more information on how to control this flag programmatically.

+ + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hardwareAccelerated}. + @attr name android:hardwareAccelerated + */ + public static final int AndroidManifestApplication_hardwareAccelerated = 23; + /** +

+ @attr description + Indicate whether this application contains code. If set to false, + there is no code associated with it and thus the system will not + try to load its code when launching components. The default is true + for normal behavior. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hasCode}. + @attr name android:hasCode + */ + public static final int AndroidManifestApplication_hasCode = 7; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestApplication_icon = 2; + /** +

+ @attr description + Whether the application in question should be terminated after its + settings have been restored during a full-system restore operation. + Single-package restore operations will never cause the application to + be shut down. Full-system restore operations typically only occur once, + when the phone is first set up. Third-party applications will not usually + need to use this attribute. + +

The default is true, which means that after the application + has finished processing its data during a full-system restore, it will be + terminated. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#killAfterRestore}. + @attr name android:killAfterRestore + */ + public static final int AndroidManifestApplication_killAfterRestore = 18; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestApplication_label = 1; + /** +

+ @attr description + Request that your application's processes be created with + a large Dalvik heap. This applies to all processes + created for the application. It only applies to the first + application loaded into a process; if using a sharedUserId + to allow multiple applications to use a process, they all must + use this option consistently or will get unpredictable results. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largeHeap}. + @attr name android:largeHeap + */ + public static final int AndroidManifestApplication_largeHeap = 24; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestApplication_logo = 22; + /** +

+ @attr description + Name of activity to be launched for managing the application's space on the device. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#manageSpaceActivity}. + @attr name android:manageSpaceActivity + */ + public static final int AndroidManifestApplication_manageSpaceActivity = 4; + /** +

+ @attr description + An optional name of a class implementing the overall + {@link android.app.Application} for this package. When the + process for your package is started, this class is instantiated + before any of the other application components. Note that this + is not required, and in fact most applications will probably + not need it. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestApplication_name = 3; + /** +

+ @attr description + Option to let applications specify that user data should + never be encrypted if an Encrypted File System solution + is enabled. Specifically, this is an "opt-out" feature, meaning + that, by default, user data will be encrypted if the EFS feature + is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:neverEncrypt + */ + public static final int AndroidManifestApplication_neverEncrypt = 30; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestApplication_permission = 6; + /** +

+ @attr description + Flag to control special persistent mode of an application. This should + not normally be used by applications; it requires that the system keep + your application running at all times. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistent}. + @attr name android:persistent + */ + public static final int AndroidManifestApplication_persistent = 8; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestApplication_process = 11; + /** +

+ @attr description + Declare that this application requires an account of a certain + type. The default value is null and indicates that the application can work without + any accounts. The type should correspond to the account authenticator type, such as + "com.google". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiredAccountType}. + @attr name android:requiredAccountType + */ + public static final int AndroidManifestApplication_requiredAccountType = 29; + /** +

+ @attr description + Flag to specify if this application needs to be present for all users. Only pre-installed + applications can request this feature. Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiredForAllUsers}. + @attr name android:requiredForAllUsers + */ + public static final int AndroidManifestApplication_requiredForAllUsers = 27; + /** +

+ @attr description + Indicate that the application is prepared to attempt a restore of any + backed-up dataset, even if the backup is apparently from a newer version + of the application than is currently installed on the device. Setting + this attribute to true will permit the Backup Manager to + attempt restore even when a version mismatch suggests that the data are + incompatible. Use with caution! + +

The default value of this attribute is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restoreAnyVersion}. + @attr name android:restoreAnyVersion + */ + public static final int AndroidManifestApplication_restoreAnyVersion = 21; + /** +

+ @attr description + @deprecated This attribute is not used by the Android operating system. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restoreNeedsApplication}. + @attr name android:restoreNeedsApplication + */ + @Deprecated + public static final int AndroidManifestApplication_restoreNeedsApplication = 19; + /** +

+ @attr description + Declare that this application requires access to restricted accounts of a certain + type. The default value is null and restricted accounts won\'t be visible to this + application. The type should correspond to the account authenticator type, such as + "com.google". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#restrictedAccountType}. + @attr name android:restrictedAccountType + */ + public static final int AndroidManifestApplication_restrictedAccountType = 28; + /** +

+ @attr description + Declare that your application will be able to deal with RTL (right to left) layouts. + If set to false (default value), your application will not care about RTL layouts. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#supportsRtl}. + @attr name android:supportsRtl + */ + public static final int AndroidManifestApplication_supportsRtl = 26; + /** +

+ @attr description + Specify a task name that activities have an "affinity" to. + Use with the application tag (to supply a default affinity for all + activities in the application), or with the activity tag (to supply + a specific affinity for that component). + +

The default value for this attribute is the same as the package + name, indicating that all activities in the manifest should generally + be considered a single "application" to the user. You can use this + attribute to modify that behavior: either giving them an affinity + for another task, if the activities are intended to be part of that + task from the user's perspective, or using an empty string for + activities that have no affinity to a task. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskAffinity}. + @attr name android:taskAffinity + */ + public static final int AndroidManifestApplication_taskAffinity = 12; + /** +

+ @attr description + Option to indicate this application is only for testing purposes. + For example, it may expose functionality or data outside of itself + that would cause a security hole, but is useful for testing. This + kind of application can not be installed without the + INSTALL_ALLOW_TEST flag, which means only through adb install. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#testOnly}. + @attr name android:testOnly + */ + public static final int AndroidManifestApplication_testOnly = 15; + /** +

+ @attr description + The overall theme to use for an activity. Use with either the + application tag (to supply a default theme for all activities) or + the activity tag (to supply a specific theme for that activity). + +

This automatically sets + your activity's Context to use this theme, and may also be used + for "starting" animations prior to the activity being launched (to + better match what the activity actually looks like). It is a reference + to a style resource defining the theme. If not set, the default + system theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#theme}. + @attr name android:theme + */ + public static final int AndroidManifestApplication_theme = 0; + /** +

+ @attr description + Extra options for an activity's UI. Applies to either the {@code <activity>} or + {@code <application>} tag. If specified on the {@code <application>} + tag these will be considered defaults for all activities in the + application. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
none0 No extra UI options. This is the default.
splitActionBarWhenNarrow1 Split the options menu into a separate bar at the bottom of + the screen when severely constrained for horizontal space. + (e.g. portrait mode on a phone.) Instead of a small number + of action buttons appearing in the action bar at the top + of the screen, the action bar will split into the top navigation + section and the bottom menu section. Menu items will not be + split across the two bars; they will always appear together.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#uiOptions}. + @attr name android:uiOptions + */ + public static final int AndroidManifestApplication_uiOptions = 25; + /** +

+ @attr description + Flag indicating whether the application requests the VM to operate in + the safe mode. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#vmSafeMode}. + @attr name android:vmSafeMode + */ + public static final int AndroidManifestApplication_vmSafeMode = 20; + /** Attributes that can be supplied in an AndroidManifest.xml + category tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag. + See {@link android.content.IntentFilter#addCategory} for + more information. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestCategory_name android:name} The name of category that is handled, using the Java-style + naming convention.
+ @see #AndroidManifestCategory_name + */ + public static final int[] AndroidManifestCategory = { + 0x01010003 + }; + /** +

+ @attr description + The name of category that is handled, using the Java-style + naming convention. For example, to support + {@link android.content.Intent#CATEGORY_LAUNCHER Intent.CATEGORY_LAUNCHER} + you would put android.intent.category.LAUNCHER here. + Custom actions should generally use a prefix matching the + package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestCategory_name = 0; + /** Attributes that can be supplied in an AndroidManifest.xml + screen tag, a child of compatible-screens, + which is itself a child of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestCompatibleScreensScreen_screenDensity android:screenDensity} Specifies a compatible screen density, as per the device + configuration screen density bins.
{@link #AndroidManifestCompatibleScreensScreen_screenSize android:screenSize} Specifies a compatible screen size, as per the device + configuration screen size bins.
+ @see #AndroidManifestCompatibleScreensScreen_screenDensity + @see #AndroidManifestCompatibleScreensScreen_screenSize + */ + public static final int[] AndroidManifestCompatibleScreensScreen = { + 0x010102ca, 0x010102cb + }; + /** +

+ @attr description + Specifies a compatible screen density, as per the device + configuration screen density bins. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ldpi120 A low density screen, approximately 120dpi.
mdpi160 A medium density screen, approximately 160dpi.
hdpi240 A high density screen, approximately 240dpi.
xhdpi320 An extra high density screen, approximately 320dpi.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenDensity}. + @attr name android:screenDensity + */ + public static final int AndroidManifestCompatibleScreensScreen_screenDensity = 1; + /** +

+ @attr description + Specifies a compatible screen size, as per the device + configuration screen size bins. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
small200 A small screen configuration, at least 240x320dp.
normal300 A normal screen configuration, at least 320x480dp.
large400 A large screen configuration, at least 400x530dp.
xlarge500 An extra large screen configuration, at least 600x800dp.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#screenSize}. + @attr name android:screenSize + */ + public static final int AndroidManifestCompatibleScreensScreen_screenSize = 0; + /** Attributes that can be supplied in an AndroidManifest.xml + data tag, a child of the + {@link #AndroidManifestIntentFilter intent-filter} tag, describing + the types of data that match. This tag can be specified multiple + times to supply multiple data options, as described in the + {@link android.content.IntentFilter} class. Note that all such + tags are adding options to the same IntentFilter so that, for example, + <data android:scheme="myscheme" android:host="me.com" /> + is equivalent to <data android:scheme="myscheme" /> + <data android:host="me.com" />. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestData_host android:host} Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}.
{@link #AndroidManifestData_mimeType android:mimeType} Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}.
{@link #AndroidManifestData_path android:path} Specify a URI path that must exactly match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestData_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestData_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
{@link #AndroidManifestData_port android:port} Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}.
{@link #AndroidManifestData_scheme android:scheme} Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}.
{@link #AndroidManifestData_ssp android:ssp} Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestData_sspPattern android:sspPattern} Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestData_sspPrefix android:sspPrefix} Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
+ @see #AndroidManifestData_host + @see #AndroidManifestData_mimeType + @see #AndroidManifestData_path + @see #AndroidManifestData_pathPattern + @see #AndroidManifestData_pathPrefix + @see #AndroidManifestData_port + @see #AndroidManifestData_scheme + @see #AndroidManifestData_ssp + @see #AndroidManifestData_sspPattern + @see #AndroidManifestData_sspPrefix + */ + public static final int[] AndroidManifestData = { + 0x01010026, 0x01010027, 0x01010028, 0x01010029, + 0x0101002a, 0x0101002b, 0x0101002c, 0x010103e3, + 0x010103e4, 0x010103e5 + }; + /** +

+ @attr description + Specify a URI authority host that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. +

Note: host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + host names here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#host}. + @attr name android:host + */ + public static final int AndroidManifestData_host = 2; + /** +

+ @attr description + Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int AndroidManifestData_mimeType = 0; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestData_path = 4; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestData_pathPattern = 6; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataPath + IntentFilter.addDataPath()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestData_pathPrefix = 5; + /** +

+ @attr description + Specify a URI authority port that is handled, as per + {@link android.content.IntentFilter#addDataAuthority + IntentFilter.addDataAuthority()}. If a host is supplied + but not a port, any port is matched. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#port}. + @attr name android:port + */ + public static final int AndroidManifestData_port = 3; + /** +

+ @attr description + Specify a URI scheme that is handled, as per + {@link android.content.IntentFilter#addDataScheme + IntentFilter.addDataScheme()}. +

Note: scheme matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + schemes here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scheme}. + @attr name android:scheme + */ + public static final int AndroidManifestData_scheme = 1; + /** +

+ @attr description + Specify a URI scheme specific part that must exactly match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ssp}. + @attr name android:ssp + */ + public static final int AndroidManifestData_ssp = 7; + /** +

+ @attr description + Specify a URI scheme specific part that matches a simple pattern, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sspPattern}. + @attr name android:sspPattern + */ + public static final int AndroidManifestData_sspPattern = 9; + /** +

+ @attr description + Specify a URI scheme specific part that must be a prefix to match, as per + {@link android.content.IntentFilter#addDataSchemeSpecificPart + IntentFilter.addDataSchemeSpecificPart()} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#sspPrefix}. + @attr name android:sspPrefix + */ + public static final int AndroidManifestData_sspPrefix = 8; + /** Attributes that can be supplied in an AndroidManifest.xml + grant-uri-permission tag, a child of the + {@link #AndroidManifestProvider provider} tag, describing a specific + URI path that can be granted as a permission. This tag can be + specified multiple time to supply multiple paths. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestGrantUriPermission_path android:path} Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestGrantUriPermission_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestGrantUriPermission_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
+ @see #AndroidManifestGrantUriPermission_path + @see #AndroidManifestGrantUriPermission_pathPattern + @see #AndroidManifestGrantUriPermission_pathPrefix + */ + public static final int[] AndroidManifestGrantUriPermission = { + 0x0101002a, 0x0101002b, 0x0101002c + }; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestGrantUriPermission_path = 0; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestGrantUriPermission_pathPattern = 2; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestGrantUriPermission_pathPrefix = 1; + /** Attributes that can be supplied in an AndroidManifest.xml + instrumentation tag, a child of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestInstrumentation_functionalTest android:functionalTest} Flag indicating that an Instrumentation class should be run as a + functional test.
{@link #AndroidManifestInstrumentation_handleProfiling android:handleProfiling} Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running.
{@link #AndroidManifestInstrumentation_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestInstrumentation_label android:label} A user-legible name for the given item.
{@link #AndroidManifestInstrumentation_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestInstrumentation_name android:name} Required name of the class implementing the instrumentation, deriving from + {@link android.app.Instrumentation}.
{@link #AndroidManifestInstrumentation_targetPackage android:targetPackage} The name of the application package that an Instrumentation object + will run against.
+ @see #AndroidManifestInstrumentation_functionalTest + @see #AndroidManifestInstrumentation_handleProfiling + @see #AndroidManifestInstrumentation_icon + @see #AndroidManifestInstrumentation_label + @see #AndroidManifestInstrumentation_logo + @see #AndroidManifestInstrumentation_name + @see #AndroidManifestInstrumentation_targetPackage + */ + public static final int[] AndroidManifestInstrumentation = { + 0x01010001, 0x01010002, 0x01010003, 0x01010021, + 0x01010022, 0x01010023, 0x010102be + }; + /** +

+ @attr description + Flag indicating that an Instrumentation class should be run as a + functional test. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#functionalTest}. + @attr name android:functionalTest + */ + public static final int AndroidManifestInstrumentation_functionalTest = 5; + /** +

+ @attr description + Flag indicating that an Instrumentation class wants to take care + of starting/stopping profiling itself, rather than relying on + the default behavior of profiling the complete time it is running. + This allows it to target profiling data at a specific set of + operations. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#handleProfiling}. + @attr name android:handleProfiling + */ + public static final int AndroidManifestInstrumentation_handleProfiling = 4; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestInstrumentation_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestInstrumentation_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestInstrumentation_logo = 6; + /** +

+ @attr description + Required name of the class implementing the instrumentation, deriving from + {@link android.app.Instrumentation}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyActivity); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestInstrumentation_name = 2; + /** +

+ @attr description + The name of the application package that an Instrumentation object + will run against. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetPackage}. + @attr name android:targetPackage + */ + public static final int AndroidManifestInstrumentation_targetPackage = 3; + /** The intent-filter tag is used to construct an + {@link android.content.IntentFilter} object that will be used + to determine which component can handle a particular + {@link android.content.Intent} that has been given to the system. + It can be used as a child of the + {@link #AndroidManifestActivity activity}, + {@link #AndroidManifestReceiver receiver} and + {@link #AndroidManifestService service} + tags. + +

Zero or more {@link #AndroidManifestAction action}, + {@link #AndroidManifestCategory category}, and/or + {@link #AndroidManifestData data} tags should be + included inside to describe the contents of the filter. + +

The optional label and icon attributes here are used with + an activity to supply an alternative description of that activity + when it is being started through an Intent matching this filter. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AndroidManifestIntentFilter_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestIntentFilter_label android:label} A user-legible name for the given item.
{@link #AndroidManifestIntentFilter_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestIntentFilter_priority android:priority} Specify the relative importance or ability in handling a particular + Intent.
+ @see #AndroidManifestIntentFilter_icon + @see #AndroidManifestIntentFilter_label + @see #AndroidManifestIntentFilter_logo + @see #AndroidManifestIntentFilter_priority + */ + public static final int[] AndroidManifestIntentFilter = { + 0x01010001, 0x01010002, 0x0101001c, 0x010102be + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestIntentFilter_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestIntentFilter_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestIntentFilter_logo = 3; + /** +

+ @attr description + Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#priority}. + @attr name android:priority + */ + public static final int AndroidManifestIntentFilter_priority = 2; + /** The library tag declares that this apk is providing itself + as a shared library for other applications to use. It can only be used + with apks that are built in to the system image. Other apks can link to + it with the {@link #AndroidManifestUsesLibrary uses-library} tag. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestLibrary_name android:name} Required public name of the library, which other components and + packages will use when referring to this library.
+ @see #AndroidManifestLibrary_name + */ + public static final int[] AndroidManifestLibrary = { + 0x01010003 + }; + /** +

+ @attr description + Required public name of the library, which other components and + packages will use when referring to this library. This is a string using + Java-style scoping to ensure it is unique. The name should typically + be the same as the apk's package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestLibrary_name = 0; + /** The meta-data tag is used to attach additional + arbitrary data to an application component. The data can later + be retrieved programmatically from the + {@link android.content.pm.ComponentInfo#metaData + ComponentInfo.metaData} field. There is no meaning given to this + data by the system. You may supply the data through either the + value or resource attribute; if both + are given, then resource will be used. + +

It is highly recommended that you avoid supplying related data as + multiple separate meta-data entries. Instead, if you have complex + data to associate with a component, then use the resource + attribute to assign an XML resource that the client can parse to + retrieve the complete data. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestMetaData_name android:name} A unique name for the given item.
{@link #AndroidManifestMetaData_resource android:resource} Resource identifier to assign to this piece of named meta-data.
{@link #AndroidManifestMetaData_value android:value} Concrete value to assign to this piece of named meta-data.
+ @see #AndroidManifestMetaData_name + @see #AndroidManifestMetaData_resource + @see #AndroidManifestMetaData_value + */ + public static final int[] AndroidManifestMetaData = { + 0x01010003, 0x01010024, 0x01010025 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestMetaData_name = 0; + /** +

+ @attr description + Resource identifier to assign to this piece of named meta-data. + The resource identifier can later be retrieved from the meta data + Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#resource}. + @attr name android:resource + */ + public static final int AndroidManifestMetaData_resource = 2; + /** +

+ @attr description + Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int AndroidManifestMetaData_value = 1; + /** Private tag to declare the original package name that this package is + based on. Only used for packages installed in the system image. If + given, and different than the actual package name, and the given + original package was previously installed on the device but the new + one was not, then the data for the old one will be renamed to be + for the new package. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestOriginalPackage_name android:name} A unique name for the given item.
+ @see #AndroidManifestOriginalPackage_name + */ + public static final int[] AndroidManifestOriginalPackage = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestOriginalPackage_name = 0; + /** Attributes relating to a package verifier. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestPackageVerifier_name android:name} Specifies the Java-style package name that defines this + package verifier.
{@link #AndroidManifestPackageVerifier_publicKey android:publicKey} The Base64 encoded public key of the package verifier's + signature.
+ @see #AndroidManifestPackageVerifier_name + @see #AndroidManifestPackageVerifier_publicKey + */ + public static final int[] AndroidManifestPackageVerifier = { + 0x01010003, 0x010103a6 + }; + /** +

+ @attr description + Specifies the Java-style package name that defines this + package verifier. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPackageVerifier_name = 0; + /** +

+ @attr description + The Base64 encoded public key of the package verifier's + signature. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#publicKey}. + @attr name android:publicKey + */ + public static final int AndroidManifestPackageVerifier_publicKey = 1; + /** Attributes that can be supplied in an AndroidManifest.xml + path-permission tag, a child of the + {@link #AndroidManifestProvider provider} tag, describing a permission + that allows access to a specific path in the provider. This tag can be + specified multiple time to supply multiple paths. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPathPermission_path android:path} Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}.
{@link #AndroidManifestPathPermission_pathPattern android:pathPattern} Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
{@link #AndroidManifestPathPermission_pathPrefix android:pathPrefix} Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}.
{@link #AndroidManifestPathPermission_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestPathPermission_readPermission android:readPermission} A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}.
{@link #AndroidManifestPathPermission_writePermission android:writePermission} A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}.
+ @see #AndroidManifestPathPermission_path + @see #AndroidManifestPathPermission_pathPattern + @see #AndroidManifestPathPermission_pathPrefix + @see #AndroidManifestPathPermission_permission + @see #AndroidManifestPathPermission_readPermission + @see #AndroidManifestPathPermission_writePermission + */ + public static final int[] AndroidManifestPathPermission = { + 0x01010006, 0x01010007, 0x01010008, 0x0101002a, + 0x0101002b, 0x0101002c + }; + /** +

+ @attr description + Specify a URI path that must exactly match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_LITERAL}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#path}. + @attr name android:path + */ + public static final int AndroidManifestPathPermission_path = 3; + /** +

+ @attr description + Specify a URI path that matches a simple pattern, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. + Note that because '\' is used as an escape character when + reading the string from XML (before it is parsed as a pattern), + you will need to double-escape: for example a literal "*" would + be written as "\\*" and a literal "\" would be written as + "\\\\". This is basically the same as what you would need to + write if constructing the string in Java code. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPattern}. + @attr name android:pathPattern + */ + public static final int AndroidManifestPathPermission_pathPattern = 5; + /** +

+ @attr description + Specify a URI path that must be a prefix to match, as per + {@link android.os.PatternMatcher} with + {@link android.os.PatternMatcher#PATTERN_PREFIX}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#pathPrefix}. + @attr name android:pathPrefix + */ + public static final int AndroidManifestPathPermission_pathPrefix = 4; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestPathPermission_permission = 0; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#readPermission}. + @attr name android:readPermission + */ + public static final int AndroidManifestPathPermission_readPermission = 1; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#writePermission}. + @attr name android:writePermission + */ + public static final int AndroidManifestPathPermission_writePermission = 2; + /** The permission tag declares a security permission that can be + used to control access from other packages to specific components or + features in your package (or other packages). See the + Security and Permissions + document for more information on permissions. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermission_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestPermission_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermission_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermission_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermission_name android:name} Required public name of the permission, which other components and + packages will use when referring to this permission.
{@link #AndroidManifestPermission_permissionFlags android:permissionFlags} Flags indicating more context for a permission.
{@link #AndroidManifestPermission_permissionGroup android:permissionGroup} Specified the name of a group that this permission is associated + with.
{@link #AndroidManifestPermission_protectionLevel android:protectionLevel} Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it.
+ @see #AndroidManifestPermission_description + @see #AndroidManifestPermission_icon + @see #AndroidManifestPermission_label + @see #AndroidManifestPermission_logo + @see #AndroidManifestPermission_name + @see #AndroidManifestPermission_permissionFlags + @see #AndroidManifestPermission_permissionGroup + @see #AndroidManifestPermission_protectionLevel + */ + public static final int[] AndroidManifestPermission = { + 0x01010001, 0x01010002, 0x01010003, 0x01010009, + 0x0101000a, 0x01010020, 0x010102be, 0x010103c7 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestPermission_description = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermission_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermission_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermission_logo = 6; + /** +

+ @attr description + Required public name of the permission, which other components and + packages will use when referring to this permission. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermission_name = 2; + /** +

+ @attr description + Flags indicating more context for a permission. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
costsMoney0x0001 Set to indicate that this permission allows an operation that + may cost the user money. Such permissions may be highlighted + when shown to the user with this additional information.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionFlags}. + @attr name android:permissionFlags + */ + public static final int AndroidManifestPermission_permissionFlags = 7; + /** +

+ @attr description + Specified the name of a group that this permission is associated + with. The group must have been defined with the + {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionGroup}. + @attr name android:permissionGroup + */ + public static final int AndroidManifestPermission_permissionGroup = 4; + /** +

+ @attr description + Characterizes the potential risk implied in a permission and + indicates the procedure the system should follow when determining + whether to grant the permission to an application requesting it. {@link + android.Manifest.permission Standard permissions} have a predefined and + permanent protectionLevel. If you are creating a custom permission in an + application, you can define a protectionLevel attribute with one of the + values listed below. If no protectionLevel is defined for a custom + permission, the system assigns the default ("normal"). + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
normal0 A lower-risk permission that gives an application access to isolated + application-level features, with minimal risk to other applications, + the system, or the user. The system automatically grants this type + of permission to a requesting application at installation, without + asking for the user's explicit approval (though the user always + has the option to review these permissions before installing).
dangerous1 A higher-risk permission that would give a requesting application + access to private user data or control over the device that can + negatively impact the user. Because this type of permission + introduces potential risk, the system may not automatically + grant it to the requesting application. For example, any dangerous + permissions requested by an application may be displayed to the + user and require confirmation before proceeding, or some other + approach may be taken to avoid the user automatically allowing + the use of such facilities.
signature2 A permission that the system is to grant only if the requesting + application is signed with the same certificate as the application + that declared the permission. If the certificates match, the system + automatically grants the permission without notifying the user or + asking for the user's explicit approval.
signatureOrSystem3 A permission that the system is to grant only to packages in the + Android system image or that are signed with the same + certificates. Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
system0x10 Additional flag from base permission type: this permission can also + be granted to any applications installed on the system image. + Please avoid using this option, as the + signature protection level should be sufficient for most needs and + works regardless of exactly where applications are installed. This + permission flag is used for certain special situations where multiple + vendors have applications built in to a system image which need + to share specific features explicitly because they are being built + together.
development0x20 Additional flag from base permission type: this permission can also + (optionally) be granted to development applications.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#protectionLevel}. + @attr name android:protectionLevel + */ + public static final int AndroidManifestPermission_protectionLevel = 3; + /** The permission-group tag declares a logical grouping of + related permissions. + +

Note that this tag does not declare a permission itself, only + a namespace in which further permissions can be placed. See + the {@link #AndroidManifestPermission <permission>} tag for + more information. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermissionGroup_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestPermissionGroup_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermissionGroup_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermissionGroup_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermissionGroup_name android:name} Required public name of the permission group, permissions will use + to specify the group they are in.
{@link #AndroidManifestPermissionGroup_permissionGroupFlags android:permissionGroupFlags} Flags indicating more context for a permission group.
{@link #AndroidManifestPermissionGroup_priority android:priority} Specify the relative importance or ability in handling a particular + Intent.
+ @see #AndroidManifestPermissionGroup_description + @see #AndroidManifestPermissionGroup_icon + @see #AndroidManifestPermissionGroup_label + @see #AndroidManifestPermissionGroup_logo + @see #AndroidManifestPermissionGroup_name + @see #AndroidManifestPermissionGroup_permissionGroupFlags + @see #AndroidManifestPermissionGroup_priority + */ + public static final int[] AndroidManifestPermissionGroup = { + 0x01010001, 0x01010002, 0x01010003, 0x0101001c, + 0x01010020, 0x010102be, 0x010103c5 + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestPermissionGroup_description = 4; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermissionGroup_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermissionGroup_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermissionGroup_logo = 5; + /** +

+ @attr description + Required public name of the permission group, permissions will use + to specify the group they are in. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermissionGroup_name = 2; + /** +

+ @attr description + Flags indicating more context for a permission group. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + +
ConstantValueDescription
personalInfo0x0001 Set to indicate that this permission group contains permissions + protecting access to some information that is considered + personal to the user (such as contacts, e-mails, etc).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#permissionGroupFlags}. + @attr name android:permissionGroupFlags + */ + public static final int AndroidManifestPermissionGroup_permissionGroupFlags = 6; + /** +

+ @attr description + Specify the relative importance or ability in handling a particular + Intent. For receivers, this controls the order in which they are + executed to receive a broadcast (note that for + asynchronous broadcasts, this order is ignored). For activities, + this provides information about how good an activity is handling an + Intent; when multiple activities match an intent and have different + priorities, only those with the higher priority value will be + considered a match. + +

Only use if you really need to impose some specific + order in which the broadcasts are received, or want to forcibly + place an activity to always be preferred over others. The value is a + single integer, with higher numbers considered to be better. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#priority}. + @attr name android:priority + */ + public static final int AndroidManifestPermissionGroup_priority = 3; + /** The permission-tree tag declares the base of a tree of + permission values: it declares that this package has ownership of + the given permission name, as well as all names underneath it + (separated by '.'). This allows you to use the + {@link android.content.pm.PackageManager#addPermission + PackageManager.addPermission()} method to dynamically add new + permissions under this tree. + +

Note that this tag does not declare a permission itself, only + a namespace in which further permissions can be placed. See + the {@link #AndroidManifestPermission <permission>} tag for + more information. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #AndroidManifestPermissionTree_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestPermissionTree_label android:label} A user-legible name for the given item.
{@link #AndroidManifestPermissionTree_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestPermissionTree_name android:name} Required public name of the permission tree, which is the base name + of all permissions under it.
+ @see #AndroidManifestPermissionTree_icon + @see #AndroidManifestPermissionTree_label + @see #AndroidManifestPermissionTree_logo + @see #AndroidManifestPermissionTree_name + */ + public static final int[] AndroidManifestPermissionTree = { + 0x01010001, 0x01010002, 0x01010003, 0x010102be + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestPermissionTree_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestPermissionTree_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestPermissionTree_logo = 3; + /** +

+ @attr description + Required public name of the permission tree, which is the base name + of all permissions under it. This is a string using + Java-style scoping to ensure it is unique. The prefix will often + be the same as our overall package name, for example + "com.mycompany.android.myapp.SomePermission". A permission tree name + must have more than two segments in its path; that is, + "com.me.foo" is okay, but not "com.me" or "com". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestPermissionTree_name = 2; + /** Private tag to declare system protected broadcast actions. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestProtectedBroadcast_name android:name} A unique name for the given item.
+ @see #AndroidManifestProtectedBroadcast_name + */ + public static final int[] AndroidManifestProtectedBroadcast = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestProtectedBroadcast_name = 0; + /** The provider tag declares a + {@link android.content.ContentProvider} class that is available + as part of the package's application components, supplying structured + access to data managed by the application. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestProvider_authorities android:authorities} Specify the authorities under which this content provider can be + found.
{@link #AndroidManifestProvider_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestProvider_enabled android:enabled} Specify whether this provider is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestProvider_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestProvider_grantUriPermissions android:grantUriPermissions} If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission.
{@link #AndroidManifestProvider_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestProvider_initOrder android:initOrder} Specify the order in which content providers hosted by a process + are instantiated when that process is created.
{@link #AndroidManifestProvider_label android:label} A user-legible name for the given item.
{@link #AndroidManifestProvider_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestProvider_multiprocess android:multiprocess} Specify whether a component is allowed to have multiple instances + of itself running in different processes.
{@link #AndroidManifestProvider_name android:name} Required name of the class implementing the provider, deriving from + {@link android.content.ContentProvider}.
{@link #AndroidManifestProvider_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestProvider_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestProvider_readPermission android:readPermission} A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}.
{@link #AndroidManifestProvider_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestProvider_syncable android:syncable} Flag indicating whether this content provider would like to + participate in data synchronization.
{@link #AndroidManifestProvider_writePermission android:writePermission} A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}.
+ @see #AndroidManifestProvider_authorities + @see #AndroidManifestProvider_description + @see #AndroidManifestProvider_enabled + @see #AndroidManifestProvider_exported + @see #AndroidManifestProvider_grantUriPermissions + @see #AndroidManifestProvider_icon + @see #AndroidManifestProvider_initOrder + @see #AndroidManifestProvider_label + @see #AndroidManifestProvider_logo + @see #AndroidManifestProvider_multiprocess + @see #AndroidManifestProvider_name + @see #AndroidManifestProvider_permission + @see #AndroidManifestProvider_process + @see #AndroidManifestProvider_readPermission + @see #AndroidManifestProvider_singleUser + @see #AndroidManifestProvider_syncable + @see #AndroidManifestProvider_writePermission + */ + public static final int[] AndroidManifestProvider = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x01010007, 0x01010008, 0x0101000e, 0x01010010, + 0x01010011, 0x01010013, 0x01010018, 0x01010019, + 0x0101001a, 0x0101001b, 0x01010020, 0x010102be, + 0x010103bf + }; + /** +

+ @attr description + Specify the authorities under which this content provider can be + found. Multiple authorities may be supplied by separating them + with a semicolon. Authority names should use a Java-style naming + convention (such as com.google.provider.MyProvider) + in order to avoid conflicts. Typically this name is the same + as the class implementation describing the provider's data structure. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#authorities}. + @attr name android:authorities + */ + public static final int AndroidManifestProvider_authorities = 10; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestProvider_description = 14; + /** +

+ @attr description + Specify whether this provider is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestProvider_enabled = 6; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestProvider_exported = 7; + /** +

+ @attr description + If true, the {@link android.content.Context#grantUriPermission + Context.grantUriPermission} or corresponding Intent flags can + be used to allow others to access specific URIs in the content + provider, even if they do not have an explicit read or write + permission. If you are supporting this feature, you must be + sure to call {@link android.content.Context#revokeUriPermission + Context.revokeUriPermission} when URIs are deleted from your + provider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#grantUriPermissions}. + @attr name android:grantUriPermissions + */ + public static final int AndroidManifestProvider_grantUriPermissions = 13; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestProvider_icon = 1; + /** +

+ @attr description + Specify the order in which content providers hosted by a process + are instantiated when that process is created. Not needed unless + you have providers with dependencies between each other, to make + sure that they are created in the order needed by those dependencies. + The value is a simple integer, with higher numbers being + initialized first. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initOrder}. + @attr name android:initOrder + */ + public static final int AndroidManifestProvider_initOrder = 12; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestProvider_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestProvider_logo = 15; + /** +

+ @attr description + Specify whether a component is allowed to have multiple instances + of itself running in different processes. Use with the activity + and provider tags. + +

Normally the system will ensure that all instances of a particular + component are only running in a single process. You can use this + attribute to disable that behavior, allowing the system to create + instances wherever they are used (provided permissions allow it). + This is most often used with content providers, so that instances + of a provider can be created in each client process, allowing them + to be used without performing IPC. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#multiprocess}. + @attr name android:multiprocess + */ + public static final int AndroidManifestProvider_multiprocess = 9; + /** +

+ @attr description + Required name of the class implementing the provider, deriving from + {@link android.content.ContentProvider}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyProvider); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestProvider_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestProvider_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestProvider_process = 8; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for read-only + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#readPermission}. + @attr name android:readPermission + */ + public static final int AndroidManifestProvider_readPermission = 4; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestProvider_singleUser = 16; + /** +

+ @attr description + Flag indicating whether this content provider would like to + participate in data synchronization. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#syncable}. + @attr name android:syncable + */ + public static final int AndroidManifestProvider_syncable = 11; + /** +

+ @attr description + A specific {@link android.R.attr#permission} name for write + access to a {@link android.content.ContentProvider}. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#writePermission}. + @attr name android:writePermission + */ + public static final int AndroidManifestProvider_writePermission = 5; + /** The receiver tag declares an + {@link android.content.BroadcastReceiver} class that is available + as part of the package's application components, allowing the + application to receive actions or data broadcast by other + applications even if it is not currently running. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of a receiver, to specify the Intents + it will receive. If none are specified, the receiver will only + be run when an Intent is broadcast that is directed at its specific + class name. The receiver tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestReceiver_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestReceiver_enabled android:enabled} Specify whether the receiver is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestReceiver_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestReceiver_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestReceiver_label android:label} A user-legible name for the given item.
{@link #AndroidManifestReceiver_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestReceiver_name android:name} Required name of the class implementing the receiver, deriving from + {@link android.content.BroadcastReceiver}.
{@link #AndroidManifestReceiver_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestReceiver_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestReceiver_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
+ @see #AndroidManifestReceiver_description + @see #AndroidManifestReceiver_enabled + @see #AndroidManifestReceiver_exported + @see #AndroidManifestReceiver_icon + @see #AndroidManifestReceiver_label + @see #AndroidManifestReceiver_logo + @see #AndroidManifestReceiver_name + @see #AndroidManifestReceiver_permission + @see #AndroidManifestReceiver_process + @see #AndroidManifestReceiver_singleUser + */ + public static final int[] AndroidManifestReceiver = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010011, 0x01010020, + 0x010102be, 0x010103bf + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestReceiver_description = 7; + /** +

+ @attr description + Specify whether the receiver is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestReceiver_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestReceiver_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestReceiver_icon = 1; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestReceiver_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestReceiver_logo = 8; + /** +

+ @attr description + Required name of the class implementing the receiver, deriving from + {@link android.content.BroadcastReceiver}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyReceiver); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestReceiver_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestReceiver_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestReceiver_process = 6; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestReceiver_singleUser = 9; + /** The service tag declares a + {@link android.app.Service} class that is available + as part of the package's application components, implementing + long-running background operations or a rich communication API + that can be called by other packages. + +

Zero or more {@link #AndroidManifestIntentFilter intent-filter} + tags can be included inside of a service, to specify the Intents + that can connect with it. If none are specified, the service can + only be accessed by direct specification of its class name. + The service tag appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestService_description android:description} Descriptive text for the associated data.
{@link #AndroidManifestService_enabled android:enabled} Specify whether the service is enabled or not (that is, can be instantiated by the system).
{@link #AndroidManifestService_exported android:exported} Flag indicating whether the given application component is available + to other applications.
{@link #AndroidManifestService_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #AndroidManifestService_isolatedProcess android:isolatedProcess} If set to true, this service will run under a special process + that is isolated from the rest of the system.
{@link #AndroidManifestService_label android:label} A user-legible name for the given item.
{@link #AndroidManifestService_logo android:logo} A Drawable resource providing an extended graphical logo for its + associated item.
{@link #AndroidManifestService_name android:name} Required name of the class implementing the service, deriving from + {@link android.app.Service}.
{@link #AndroidManifestService_permission android:permission} Specify a permission that a client is required to have in order to + use the associated object.
{@link #AndroidManifestService_process android:process} Specify a specific process that the associated code is to run in.
{@link #AndroidManifestService_singleUser android:singleUser} If set to true, a single instance of this component will run for + all users.
{@link #AndroidManifestService_stopWithTask android:stopWithTask} If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application.
+ @see #AndroidManifestService_description + @see #AndroidManifestService_enabled + @see #AndroidManifestService_exported + @see #AndroidManifestService_icon + @see #AndroidManifestService_isolatedProcess + @see #AndroidManifestService_label + @see #AndroidManifestService_logo + @see #AndroidManifestService_name + @see #AndroidManifestService_permission + @see #AndroidManifestService_process + @see #AndroidManifestService_singleUser + @see #AndroidManifestService_stopWithTask + */ + public static final int[] AndroidManifestService = { + 0x01010001, 0x01010002, 0x01010003, 0x01010006, + 0x0101000e, 0x01010010, 0x01010011, 0x01010020, + 0x010102be, 0x0101036a, 0x010103a9, 0x010103bf + }; + /** +

+ @attr description + Descriptive text for the associated data. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int AndroidManifestService_description = 7; + /** +

+ @attr description + Specify whether the service is enabled or not (that is, can be instantiated by the system). + It can also be specified for an application as a whole, in which case a value of "false" + will override any component specific values (a value of "true" will not override the + component specific values). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int AndroidManifestService_enabled = 4; + /** +

+ @attr description + Flag indicating whether the given application component is available + to other applications. If false, it can only be accessed by + applications with its same user id (which usually means only by + code in its own package). If true, it can be invoked by external + entities, though which ones can do so may be controlled through + permissions. The default value is false for activity, receiver, + and service components that do not specify any intent filters; it + is true for activity, receiver, and service components that do + have intent filters (implying they expect to be invoked by others + who do not know their particular component name) and for all + content providers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exported}. + @attr name android:exported + */ + public static final int AndroidManifestService_exported = 5; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int AndroidManifestService_icon = 1; + /** +

+ @attr description + If set to true, this service will run under a special process + that is isolated from the rest of the system. The only communication + with it is through the Service API (binding and starting). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isolatedProcess}. + @attr name android:isolatedProcess + */ + public static final int AndroidManifestService_isolatedProcess = 10; + /** +

+ @attr description + A user-legible name for the given item. Use with the + application tag (to supply a default label for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific label for that component). It may also be + used with the intent-filter tag to supply a label to show to the + user when an activity is being selected based on a particular Intent. + +

The given label will be used wherever the user sees information + about its associated component; for example, as the name of a + main activity that is displayed in the launcher. You should + generally set this to a reference to a string resource, so that + it can be localized, however it is also allowed to supply a plain + string for quick and dirty programming. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int AndroidManifestService_label = 0; + /** +

+ @attr description + A Drawable resource providing an extended graphical logo for its + associated item. Use with the application tag (to supply a default + logo for all application components), or with the activity, receiver, + service, or instrumentation tag (to supply a specific logo for that + component). It may also be used with the intent-filter tag to supply + a logo to show to the user when an activity is being selected based + on a particular Intent. + +

The given logo will be used to display to the user a graphical + representation of its associated component; for example as the + header in the Action Bar. The primary differences between an icon + and a logo are that logos are often wider and more detailed, and are + used without an accompanying text caption. This must be a reference + to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#logo}. + @attr name android:logo + */ + public static final int AndroidManifestService_logo = 8; + /** +

+ @attr description + Required name of the class implementing the service, deriving from + {@link android.app.Service}. This is a fully + qualified class name (for example, com.mycompany.myapp.MyService); as a + short-hand if the first character of the class + is a period then it is appended to your package name. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestService_name = 2; + /** +

+ @attr description + Specify a permission that a client is required to have in order to + use the associated object. If the client does not hold the named + permission, its request will fail. See the + Security and Permissions + document for more information on permissions. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#permission}. + @attr name android:permission + */ + public static final int AndroidManifestService_permission = 3; + /** +

+ @attr description + Specify a specific process that the associated code is to run in. + Use with the application tag (to supply a default process for all + application components), or with the activity, receiver, service, + or provider tag (to supply a specific icon for that component). + +

Application components are normally run in a single process that + is created for the entire application. You can use this tag to modify + where they run. If the process name begins with a ':' character, + a new process private to that application will be created when needed + to run that component (allowing you to spread your application across + multiple processes). If the process name begins with a lower-case + character, the component will be run in a global process of that name, + provided that you have permission to do so, allowing multiple + applications to share one process to reduce resource usage. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#process}. + @attr name android:process + */ + public static final int AndroidManifestService_process = 6; + /** +

+ @attr description + If set to true, a single instance of this component will run for + all users. That instance will run as user 0, the default/primary + user. When the app running is in processes for other users and interacts + with this component (by binding to a service for example) those processes will + always interact with the instance running for user 0. Enabling + single user mode forces "exported" of the component to be false, to + help avoid introducing multi-user security bugs. This feature is only + available to applications built in to the system image; you must hold the + permission INTERACT_ACROSS_USERS in order + to use this feature. This flag can only be used with services, + receivers, and providers; it can not be used with activities. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleUser}. + @attr name android:singleUser + */ + public static final int AndroidManifestService_singleUser = 11; + /** +

+ @attr description + If set to true, this service with be automatically stopped + when the user remove a task rooted in an activity owned by + the application. The default is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stopWithTask}. + @attr name android:stopWithTask + */ + public static final int AndroidManifestService_stopWithTask = 9; + /** The input-type tag is a child of the supports-input tag, which + is itself a child of the root {@link #AndroidManifest manifest} tag. Each + input-type tag specifices the name of a specific input device type. When + grouped with the other elements of the parent supports-input tag it defines + a collection of input devices, which when all used together, are considered a supported + input mechanism for the application. There may be multiple supports-input + tags defined, each containing a different combination of input device types. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AndroidManifestSupportsInputInputType_name android:name} Specifices the name of the input device type
+ @see #AndroidManifestSupportsInputInputType_name + */ + public static final int[] AndroidManifestSupportsInputInputType = { + 0x01010003 + }; + /** +

+ @attr description + Specifices the name of the input device type + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestSupportsInputInputType_name = 0; + /** The supports-screens specifies the screen dimensions an + application supports. By default a modern application supports all + screen sizes and must explicitly disable certain screen sizes here; + older applications are assumed to only support the traditional normal + (HVGA) screen size. Note that screen size is a separate axis from + density, and is determined as the available pixels to an application + after density scaling has been applied. + +

This appears as a child tag of the + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #AndroidManifestSupportsScreens_anyDensity android:anyDensity} Indicates whether the application can accommodate any screen + density.
{@link #AndroidManifestSupportsScreens_compatibleWidthLimitDp android:compatibleWidthLimitDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with.
{@link #AndroidManifestSupportsScreens_largeScreens android:largeScreens} Indicates whether the application supports larger screen form-factors.
{@link #AndroidManifestSupportsScreens_largestWidthLimitDp android:largestWidthLimitDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with.
{@link #AndroidManifestSupportsScreens_normalScreens android:normalScreens} Indicates whether an application supports the normal screen + form-factors.
{@link #AndroidManifestSupportsScreens_requiresSmallestWidthDp android:requiresSmallestWidthDp} Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with.
{@link #AndroidManifestSupportsScreens_resizeable android:resizeable} Indicates whether the application can resize itself to newer + screen sizes.
{@link #AndroidManifestSupportsScreens_smallScreens android:smallScreens} Indicates whether the application supports smaller screen form-factors.
{@link #AndroidManifestSupportsScreens_xlargeScreens android:xlargeScreens} Indicates whether the application supports extra large screen form-factors.
+ @see #AndroidManifestSupportsScreens_anyDensity + @see #AndroidManifestSupportsScreens_compatibleWidthLimitDp + @see #AndroidManifestSupportsScreens_largeScreens + @see #AndroidManifestSupportsScreens_largestWidthLimitDp + @see #AndroidManifestSupportsScreens_normalScreens + @see #AndroidManifestSupportsScreens_requiresSmallestWidthDp + @see #AndroidManifestSupportsScreens_resizeable + @see #AndroidManifestSupportsScreens_smallScreens + @see #AndroidManifestSupportsScreens_xlargeScreens + */ + public static final int[] AndroidManifestSupportsScreens = { + 0x0101026c, 0x01010284, 0x01010285, 0x01010286, + 0x0101028d, 0x010102bf, 0x01010364, 0x01010365, + 0x01010366 + }; + /** +

+ @attr description + Indicates whether the application can accommodate any screen + density. Older applications are assumed to not be able to, + new ones able to. You can explicitly supply your abilities + here. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#anyDensity}. + @attr name android:anyDensity + */ + public static final int AndroidManifestSupportsScreens_anyDensity = 0; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the largest screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application is designed for. If this value is smaller than + the "smallest screen width" of the device it is running on, the user + is offered to run it in a compatibility mode that emulates a + smaller screen and zooms it to fit the screen. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for compatibleWidthLimitDp is larger than 320. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#compatibleWidthLimitDp}. + @attr name android:compatibleWidthLimitDp + */ + public static final int AndroidManifestSupportsScreens_compatibleWidthLimitDp = 7; + /** +

+ @attr description + Indicates whether the application supports larger screen form-factors. + A large screen is defined as a screen that is significantly larger + than a normal phone screen, and thus may require some special care + on the application's part to make good use of it. An example would + be a VGA normal density screen, though even larger screens + are certainly possible. An application that does not support + large screens will be placed as a postage stamp on such a + screen, so that it retains the dimensions it was originally + designed for. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largeScreens}. + @attr name android:largeScreens + */ + public static final int AndroidManifestSupportsScreens_largeScreens = 3; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the screens an application is + compatible with. This attribute provides the maximum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can work well on. If this value is smaller than + the "smallest screen width" of the device it is running on, the + application will be forced in to screen compatibility mode with + no way for the user to turn it off. Currently the compatibility mode only + emulates phone screens with a 320dp width, so compatibility mode is not applied if the + value for largestWidthLimitDp is larger than 320. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#largestWidthLimitDp}. + @attr name android:largestWidthLimitDp + */ + public static final int AndroidManifestSupportsScreens_largestWidthLimitDp = 8; + /** +

+ @attr description + Indicates whether an application supports the normal screen + form-factors. Traditionally this is an HVGA normal density + screen, but WQVGA low density and WVGA high density are also + considered to be normal. This attribute is true by default, + and applications currently should leave it that way. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#normalScreens}. + @attr name android:normalScreens + */ + public static final int AndroidManifestSupportsScreens_normalScreens = 2; + /** +

+ @attr description + Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, + this is the new way to specify the minimum screen size an application is + compatible with. This attribute provides the required minimum + "smallest screen width" (as per the -swNNNdp resource configuration) + that the application can run on. For example, a typical phone + screen is 320, a 7" tablet 600, and a 10" tablet 720. If the + smallest screen width of the device is below the value supplied here, + then the application is considered incompatible with that device. + If not supplied, then any old smallScreens, normalScreens, largeScreens, + or xlargeScreens attributes will be used instead. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiresSmallestWidthDp}. + @attr name android:requiresSmallestWidthDp + */ + public static final int AndroidManifestSupportsScreens_requiresSmallestWidthDp = 6; + /** +

+ @attr description + Indicates whether the application can resize itself to newer + screen sizes. This is mostly used to distinguish between old + applications that may not be compatible with newly introduced + screen sizes and newer applications that should be; it will be + set for you automatically based on whether you are targeting + a newer platform that supports more screens. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#resizeable}. + @attr name android:resizeable + */ + public static final int AndroidManifestSupportsScreens_resizeable = 4; + /** +

+ @attr description + Indicates whether the application supports smaller screen form-factors. + A small screen is defined as one with a smaller aspect ratio than + the traditional HVGA screen; that is, for a portrait screen, less + tall than an HVGA screen. In practice, this means a QVGA low + density or VGA high density screen. An application that does + not support small screens will not be available for + small screen devices, since there is little the platform can do + to make such an application work on a smaller screen. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#smallScreens}. + @attr name android:smallScreens + */ + public static final int AndroidManifestSupportsScreens_smallScreens = 1; + /** +

+ @attr description + Indicates whether the application supports extra large screen form-factors. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#xlargeScreens}. + @attr name android:xlargeScreens + */ + public static final int AndroidManifestSupportsScreens_xlargeScreens = 5; + /** The uses-configuration tag specifies + a specific hardware configuration value used by the application. + For example an application might specify that it requires + a physical keyboard or a particular navigation method like + trackball. Multiple such attribute values can be specified by the + application. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesConfiguration_reqFiveWayNav android:reqFiveWayNav} Application's requirement for five way navigation
{@link #AndroidManifestUsesConfiguration_reqHardKeyboard android:reqHardKeyboard} Application's requirement for a hard keyboard
{@link #AndroidManifestUsesConfiguration_reqKeyboardType android:reqKeyboardType} The input method preferred by an application.
{@link #AndroidManifestUsesConfiguration_reqNavigation android:reqNavigation} The navigation device preferred by an application.
{@link #AndroidManifestUsesConfiguration_reqTouchScreen android:reqTouchScreen} The type of touch screen used by an application.
+ @see #AndroidManifestUsesConfiguration_reqFiveWayNav + @see #AndroidManifestUsesConfiguration_reqHardKeyboard + @see #AndroidManifestUsesConfiguration_reqKeyboardType + @see #AndroidManifestUsesConfiguration_reqNavigation + @see #AndroidManifestUsesConfiguration_reqTouchScreen + */ + public static final int[] AndroidManifestUsesConfiguration = { + 0x01010227, 0x01010228, 0x01010229, 0x0101022a, + 0x01010232 + }; + /** +

+ @attr description + Application's requirement for five way navigation + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqFiveWayNav}. + @attr name android:reqFiveWayNav + */ + public static final int AndroidManifestUsesConfiguration_reqFiveWayNav = 4; + /** +

+ @attr description + Application's requirement for a hard keyboard + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqHardKeyboard}. + @attr name android:reqHardKeyboard + */ + public static final int AndroidManifestUsesConfiguration_reqHardKeyboard = 2; + /** +

+ @attr description + The input method preferred by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
nokeys1
qwerty2
twelvekey3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqKeyboardType}. + @attr name android:reqKeyboardType + */ + public static final int AndroidManifestUsesConfiguration_reqKeyboardType = 1; + /** +

+ @attr description + The navigation device preferred by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
undefined0
nonav1
dpad2
trackball3
wheel4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqNavigation}. + @attr name android:reqNavigation + */ + public static final int AndroidManifestUsesConfiguration_reqNavigation = 3; + /** +

+ @attr description + The type of touch screen used by an application. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
undefined0
notouch1
stylus2
finger3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#reqTouchScreen}. + @attr name android:reqTouchScreen + */ + public static final int AndroidManifestUsesConfiguration_reqTouchScreen = 0; + /** The uses-feature tag specifies + a specific feature used by the application. + For example an application might specify that it requires + specific version of OpenGL. Multiple such attribute + values can be specified by the application. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesFeature_glEsVersion android:glEsVersion} The GLES driver version number needed by an application.
{@link #AndroidManifestUsesFeature_name android:name} The name of the feature that is being used.
{@link #AndroidManifestUsesFeature_required android:required} Specify whether this feature is required for the application.
+ @see #AndroidManifestUsesFeature_glEsVersion + @see #AndroidManifestUsesFeature_name + @see #AndroidManifestUsesFeature_required + */ + public static final int[] AndroidManifestUsesFeature = { + 0x01010003, 0x01010281, 0x0101028e + }; + /** +

+ @attr description + The GLES driver version number needed by an application. + The higher 16 bits represent the major number and the lower 16 bits + represent the minor number. For example for GL 1.2 referring to + 0x00000102, the actual value should be set as 0x00010002. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#glEsVersion}. + @attr name android:glEsVersion + */ + public static final int AndroidManifestUsesFeature_glEsVersion = 1; + /** +

+ @attr description + The name of the feature that is being used. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesFeature_name = 0; + /** +

+ @attr description + Specify whether this feature is required for the application. + The default is true, meaning the application requires the + feature, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + not impose a restriction on where the application can be + installed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#required}. + @attr name android:required + */ + public static final int AndroidManifestUsesFeature_required = 2; + /** The uses-libraries specifies a shared library that this + package requires to be linked against. Specifying this flag tells the + system to include this library's code in your class loader. + +

This appears as a child tag of the + {@link #AndroidManifestApplication application} tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestUsesLibrary_name android:name} Required name of the library you use.
{@link #AndroidManifestUsesLibrary_required android:required} Specify whether this library is required for the application.
+ @see #AndroidManifestUsesLibrary_name + @see #AndroidManifestUsesLibrary_required + */ + public static final int[] AndroidManifestUsesLibrary = { + 0x01010003, 0x0101028e + }; + /** +

+ @attr description + Required name of the library you use. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesLibrary_name = 0; + /** +

+ @attr description + Specify whether this library is required for the application. + The default is true, meaning the application requires the + library, and does not want to be installed on devices that + don't support it. If you set this to false, then this will + allow the application to be installed even if the library + doesn't exist, and you will need to check for its presence + dynamically at runtime. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#required}. + @attr name android:required + */ + public static final int AndroidManifestUsesLibrary_required = 1; + /** The uses-permission tag requests a + {@link #AndroidManifestPermission <permission>} that the containing + package must be granted in order for it to operate correctly. + See the Security and Permissions + document for more information on permissions. Also available is a + {@link android.Manifest.permission list of permissions} included + with the base platform. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. + Specify whether this permission is required for the application. + The default is true, meaning the application requires the + permission, and it must always be granted when it is installed. + If you set this to false, then in some cases the application may + be installed with it being granted the permission, and it will + need to request the permission later if it needs it. + + +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AndroidManifestUsesPermission_maxSdkVersion android:maxSdkVersion} Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission.
{@link #AndroidManifestUsesPermission_name android:name} Required name of the permission you use, as published with the + corresponding name attribute of a + {@link android.R.styleable#AndroidManifestPermission <permission>} + tag; often this is one of the {@link android.Manifest.permission standard + system permissions}.
+ @see #AndroidManifestUsesPermission_maxSdkVersion + @see #AndroidManifestUsesPermission_name + */ + public static final int[] AndroidManifestUsesPermission = { + 0x01010003, 0x01010271 + }; + /** +

+ @attr description + Optional: specify the maximum version of the Android OS for which the + application wishes to request the permission. When running on a version + of Android higher than the number given here, the permission will not + be requested. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxSdkVersion}. + @attr name android:maxSdkVersion + */ + public static final int AndroidManifestUsesPermission_maxSdkVersion = 1; + /** +

+ @attr description + Required name of the permission you use, as published with the + corresponding name attribute of a + {@link android.R.styleable#AndroidManifestPermission <permission>} + tag; often this is one of the {@link android.Manifest.permission standard + system permissions}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int AndroidManifestUsesPermission_name = 0; + /** The uses-sdk tag describes the SDK features that the + containing package must be running on to operate correctly. + +

This appears as a child tag of the root + {@link #AndroidManifest manifest} tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AndroidManifestUsesSdk_maxSdkVersion android:maxSdkVersion} This is the maximum SDK version number that an application works + on.
{@link #AndroidManifestUsesSdk_minSdkVersion android:minSdkVersion} This is the minimum SDK version number that the application + requires.
{@link #AndroidManifestUsesSdk_targetSdkVersion android:targetSdkVersion} This is the SDK version number that the application is targeting.
+ @see #AndroidManifestUsesSdk_maxSdkVersion + @see #AndroidManifestUsesSdk_minSdkVersion + @see #AndroidManifestUsesSdk_targetSdkVersion + */ + public static final int[] AndroidManifestUsesSdk = { + 0x0101020c, 0x01010270, 0x01010271 + }; + /** +

+ @attr description + This is the maximum SDK version number that an application works + on. You can use this to ensure your application is filtered out + of later versions of the platform when you know you have + incompatibility with them. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxSdkVersion}. + @attr name android:maxSdkVersion + */ + public static final int AndroidManifestUsesSdk_maxSdkVersion = 2; + /** +

+ @attr description + This is the minimum SDK version number that the application + requires. This number is an abstract integer, from the list + in {@link android.os.Build.VERSION_CODES} If + not supplied, the application will work on any SDK. This + may also be string (such as "Donut") if the application was built + against a development branch, in which case it will only work against + the development builds. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minSdkVersion}. + @attr name android:minSdkVersion + */ + public static final int AndroidManifestUsesSdk_minSdkVersion = 0; + /** +

+ @attr description + This is the SDK version number that the application is targeting. + It is able to run on older versions (down to minSdkVersion), but + was explicitly tested to work with the version specified here. + Specifying this version allows the platform to disable compatibility + code that are not required or enable newer features that are not + available to older applications. This may also be a string + (such as "Donut") if this is built against a development + branch, in which case minSdkVersion is also forced to be that + string. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetSdkVersion}. + @attr name android:targetSdkVersion + */ + public static final int AndroidManifestUsesSdk_targetSdkVersion = 1; + /** Attributes that can be used with a AnimatedRotateDrawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AnimatedRotateDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #AnimatedRotateDrawable_frameDuration android:frameDuration}
{@link #AnimatedRotateDrawable_framesCount android:framesCount}
{@link #AnimatedRotateDrawable_pivotX android:pivotX}
{@link #AnimatedRotateDrawable_pivotY android:pivotY}
{@link #AnimatedRotateDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #AnimatedRotateDrawable_drawable + @see #AnimatedRotateDrawable_frameDuration + @see #AnimatedRotateDrawable_framesCount + @see #AnimatedRotateDrawable_pivotX + @see #AnimatedRotateDrawable_pivotY + @see #AnimatedRotateDrawable_visible + */ + public static final int[] AnimatedRotateDrawable = { + 0x01010194, 0x01010199, 0x010101b5, 0x010101b6, + 0x0101044a, 0x0101044b + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int AnimatedRotateDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#frameDuration} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:frameDuration + */ + public static final int AnimatedRotateDrawable_frameDuration = 4; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#framesCount} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:framesCount + */ + public static final int AnimatedRotateDrawable_framesCount = 5; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int AnimatedRotateDrawable_pivotX = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #AnimatedRotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int AnimatedRotateDrawable_pivotY = 3; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int AnimatedRotateDrawable_visible = 0; + /** Attributes that can be used with a Animation. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #Animation_background android:background} Special background behind animation.
{@link #Animation_detachWallpaper android:detachWallpaper} Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it.
{@link #Animation_duration android:duration} Amount of time (in milliseconds) for the animation to run.
{@link #Animation_fillAfter android:fillAfter} When set to true, the animation transformation is applied after the animation is + over.
{@link #Animation_fillBefore android:fillBefore} When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started.
{@link #Animation_fillEnabled android:fillEnabled} When set to true, the value of fillBefore is taken into account.
{@link #Animation_interpolator android:interpolator} Defines the interpolator used to smooth the animation movement in time.
{@link #Animation_repeatCount android:repeatCount} Defines how many times the animation should repeat.
{@link #Animation_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #Animation_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
{@link #Animation_zAdjustment android:zAdjustment} Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation.
+ @see #Animation_background + @see #Animation_detachWallpaper + @see #Animation_duration + @see #Animation_fillAfter + @see #Animation_fillBefore + @see #Animation_fillEnabled + @see #Animation_interpolator + @see #Animation_repeatCount + @see #Animation_repeatMode + @see #Animation_startOffset + @see #Animation_zAdjustment + */ + public static final int[] Animation = { + 0x010100d4, 0x01010141, 0x01010198, 0x010101bc, + 0x010101bd, 0x010101be, 0x010101bf, 0x010101c0, + 0x010101c1, 0x0101024f, 0x010102a6 + }; + /** +

+ @attr description + Special background behind animation. Only for use with window + animations. Can only be a color, and only black. If 0, the + default, there is no background. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int Animation_background = 0; + /** +

+ @attr description + Special option for window animations: if this window is on top + of a wallpaper, don't animate the wallpaper with it. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detachWallpaper}. + @attr name android:detachWallpaper + */ + public static final int Animation_detachWallpaper = 10; + /** +

+ @attr description + Amount of time (in milliseconds) for the animation to run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Animation_duration = 2; + /** +

+ @attr description + When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillAfter}. + @attr name android:fillAfter + */ + public static final int Animation_fillAfter = 4; + /** +

+ @attr description + When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillBefore}. + @attr name android:fillBefore + */ + public static final int Animation_fillBefore = 3; + /** +

+ @attr description + When set to true, the value of fillBefore is taken into account. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillEnabled}. + @attr name android:fillEnabled + */ + public static final int Animation_fillEnabled = 9; + /** +

+ @attr description + Defines the interpolator used to smooth the animation movement in time. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Animation_interpolator = 1; + /** +

+ @attr description + Defines how many times the animation should repeat. The default value is 0. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatCount}. + @attr name android:repeatCount + */ + public static final int Animation_repeatCount = 6; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int Animation_repeatMode = 7; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int Animation_startOffset = 5; + /** +

+ @attr description + Allows for an adjustment of the Z ordering of the content being + animated for the duration of the animation. The default value is normal. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 The content being animated be kept in its current Z order.
top1 The content being animated is forced on top of all other + content for the duration of the animation.
bottom-1 The content being animated is forced under all other + content for the duration of the animation.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#zAdjustment}. + @attr name android:zAdjustment + */ + public static final int Animation_zAdjustment = 8; + /** Drawable used to render several animated frames. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #AnimationDrawable_oneshot android:oneshot} If true, the animation will only run a single time and then + stop.
{@link #AnimationDrawable_variablePadding android:variablePadding} If true, allows the drawable's padding to change based on the + current state that is selected.
{@link #AnimationDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #AnimationDrawable_oneshot + @see #AnimationDrawable_variablePadding + @see #AnimationDrawable_visible + */ + public static final int[] AnimationDrawable = { + 0x01010194, 0x01010195, 0x01010197 + }; + /** +

+ @attr description + If true, the animation will only run a single time and then + stop. If false (the default), it will continually run, + restarting at the first frame after the last has finished. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#oneshot}. + @attr name android:oneshot + */ + public static final int AnimationDrawable_oneshot = 2; + /** +

+ @attr description + If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#variablePadding}. + @attr name android:variablePadding + */ + public static final int AnimationDrawable_variablePadding = 1; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int AnimationDrawable_visible = 0; + /** Represents a single frame inside an AnimationDrawable. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AnimationDrawableItem_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #AnimationDrawableItem_duration android:duration} Amount of time (in milliseconds) to display this frame.
+ @see #AnimationDrawableItem_drawable + @see #AnimationDrawableItem_duration + */ + public static final int[] AnimationDrawableItem = { + 0x01010198, 0x01010199 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int AnimationDrawableItem_drawable = 1; + /** +

+ @attr description + Amount of time (in milliseconds) to display this frame. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int AnimationDrawableItem_duration = 0; + /** Attributes that can be used with a AnimationSet. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #AnimationSet_duration android:duration} Amount of time (in milliseconds) to display this frame.
{@link #AnimationSet_fillAfter android:fillAfter} When set to true, the animation transformation is applied after the animation is + over.
{@link #AnimationSet_fillBefore android:fillBefore} When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started.
{@link #AnimationSet_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #AnimationSet_shareInterpolator android:shareInterpolator}
{@link #AnimationSet_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
+ @see #AnimationSet_duration + @see #AnimationSet_fillAfter + @see #AnimationSet_fillBefore + @see #AnimationSet_repeatMode + @see #AnimationSet_shareInterpolator + @see #AnimationSet_startOffset + */ + public static final int[] AnimationSet = { + 0x01010198, 0x010101bb, 0x010101bc, 0x010101bd, + 0x010101be, 0x010101c0 + }; + /** +

+ @attr description + Amount of time (in milliseconds) to display this frame. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int AnimationSet_duration = 0; + /** +

+ @attr description + When set to true, the animation transformation is applied after the animation is + over. The default value is false. If fillEnabled is not set to true and the + animation is not set on a View, fillAfter is assumed to be true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillAfter}. + @attr name android:fillAfter + */ + public static final int AnimationSet_fillAfter = 3; + /** +

+ @attr description + When set to true or when fillEnabled is not set to true, the animation transformation + is applied before the animation has started. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillBefore}. + @attr name android:fillBefore + */ + public static final int AnimationSet_fillBefore = 2; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int AnimationSet_repeatMode = 5; + /** +

This symbol is the offset where the {@link android.R.attr#shareInterpolator} + attribute's value can be found in the {@link #AnimationSet} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:shareInterpolator + */ + public static final int AnimationSet_shareInterpolator = 1; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int AnimationSet_startOffset = 4; + /** Attributes that can be used with a Animator. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Animator_duration android:duration} Amount of time (in milliseconds) for the animation to run.
{@link #Animator_interpolator android:interpolator} Defines the interpolator used to smooth the animation movement in time.
{@link #Animator_repeatCount android:repeatCount} Defines how many times the animation should repeat.
{@link #Animator_repeatMode android:repeatMode} Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite.
{@link #Animator_startOffset android:startOffset} Delay in milliseconds before the animation runs, once start time is reached.
{@link #Animator_valueFrom android:valueFrom} Value the animation starts from.
{@link #Animator_valueTo android:valueTo} Value the animation animates to.
{@link #Animator_valueType android:valueType} The type of valueFrom and valueTo.
+ @see #Animator_duration + @see #Animator_interpolator + @see #Animator_repeatCount + @see #Animator_repeatMode + @see #Animator_startOffset + @see #Animator_valueFrom + @see #Animator_valueTo + @see #Animator_valueType + */ + public static final int[] Animator = { + 0x01010141, 0x01010198, 0x010101be, 0x010101bf, + 0x010101c0, 0x010102de, 0x010102df, 0x010102e0 + }; + /** +

+ @attr description + Amount of time (in milliseconds) for the animation to run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Animator_duration = 1; + /** +

+ @attr description + Defines the interpolator used to smooth the animation movement in time. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Animator_interpolator = 0; + /** +

+ @attr description + Defines how many times the animation should repeat. The default value is 0. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
infinite-1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatCount}. + @attr name android:repeatCount + */ + public static final int Animator_repeatCount = 3; + /** +

+ @attr description + Defines the animation behavior when it reaches the end and the repeat count is + greater than 0 or infinite. The default value is restart. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
restart1 The animation starts again from the beginning.
reverse2 The animation plays backward.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#repeatMode}. + @attr name android:repeatMode + */ + public static final int Animator_repeatMode = 4; + /** +

+ @attr description + Delay in milliseconds before the animation runs, once start time is reached. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startOffset}. + @attr name android:startOffset + */ + public static final int Animator_startOffset = 2; + /** +

+ @attr description + Value the animation starts from. + + +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueFrom}. + @attr name android:valueFrom + */ + public static final int Animator_valueFrom = 5; + /** +

+ @attr description + Value the animation animates to. + + +

May be an integer value, such as "100". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueTo}. + @attr name android:valueTo + */ + public static final int Animator_valueTo = 6; + /** +

+ @attr description + The type of valueFrom and valueTo. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floatType0 valueFrom and valueTo are floats. This is the default value is valueType is + unspecified. Note that if either valueFrom or valueTo represent colors + (beginning with "#"), then this attribute is ignored and the color values are + interpreted as integers.
intType1 valueFrom and valueTo are integers.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#valueType}. + @attr name android:valueType + */ + public static final int Animator_valueType = 7; + /** Attributes that can be used with a AnimatorSet. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AnimatorSet_ordering android:ordering} Name of the property being animated.
+ @see #AnimatorSet_ordering + */ + public static final int[] AnimatorSet = { + 0x010102e2 + }; + /** +

+ @attr description + Name of the property being animated. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child animations should be played together.
sequentially1 child animations should be played sequentially, in the same order as the xml.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ordering}. + @attr name android:ordering + */ + public static final int AnimatorSet_ordering = 0; + /** Attributes that can be used with a AnticipateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #AnticipateInterpolator_tension android:tension} This is the amount of tension.
+ @see #AnticipateInterpolator_tension + */ + public static final int[] AnticipateInterpolator = { + 0x0101026a + }; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int AnticipateInterpolator_tension = 0; + /** Attributes that can be used with a AnticipateOvershootInterpolator. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #AnticipateOvershootInterpolator_extraTension android:extraTension} This is the amount by which to multiply the tension.
{@link #AnticipateOvershootInterpolator_tension android:tension} This is the amount of tension.
+ @see #AnticipateOvershootInterpolator_extraTension + @see #AnticipateOvershootInterpolator_tension + */ + public static final int[] AnticipateOvershootInterpolator = { + 0x0101026a, 0x0101026b + }; + /** +

+ @attr description + This is the amount by which to multiply the tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#extraTension}. + @attr name android:extraTension + */ + public static final int AnticipateOvershootInterpolator_extraTension = 1; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int AnticipateOvershootInterpolator_tension = 0; + /** Use appwidget-provider as the root tag of the XML resource that + describes an AppWidget provider. See {@link android.appwidget android.appwidget} + package for more info. + +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #AppWidgetProviderInfo_autoAdvanceViewId android:autoAdvanceViewId} The view id of the AppWidget subview which should be auto-advanced.
{@link #AppWidgetProviderInfo_configure android:configure} A class name in the AppWidget's package to be launched to configure.
{@link #AppWidgetProviderInfo_initialKeyguardLayout android:initialKeyguardLayout} A resource id of a layout.
{@link #AppWidgetProviderInfo_initialLayout android:initialLayout} A resource id of a layout.
{@link #AppWidgetProviderInfo_minHeight android:minHeight} Minimum height of the AppWidget.
{@link #AppWidgetProviderInfo_minResizeHeight android:minResizeHeight} Minimum height that the AppWidget can be resized to.
{@link #AppWidgetProviderInfo_minResizeWidth android:minResizeWidth} Minimum width that the AppWidget can be resized to.
{@link #AppWidgetProviderInfo_minWidth android:minWidth} Minimum width of the AppWidget.
{@link #AppWidgetProviderInfo_previewImage android:previewImage} A preview of what the AppWidget will look like after it's configured.
{@link #AppWidgetProviderInfo_resizeMode android:resizeMode} Optional parameter which indicates if and how this widget can be + resized.
{@link #AppWidgetProviderInfo_updatePeriodMillis android:updatePeriodMillis} Update period in milliseconds, or 0 if the AppWidget will update itself.
{@link #AppWidgetProviderInfo_widgetCategory android:widgetCategory} Optional parameter which indicates where this widget can be shown, + ie.
+ @see #AppWidgetProviderInfo_autoAdvanceViewId + @see #AppWidgetProviderInfo_configure + @see #AppWidgetProviderInfo_initialKeyguardLayout + @see #AppWidgetProviderInfo_initialLayout + @see #AppWidgetProviderInfo_minHeight + @see #AppWidgetProviderInfo_minResizeHeight + @see #AppWidgetProviderInfo_minResizeWidth + @see #AppWidgetProviderInfo_minWidth + @see #AppWidgetProviderInfo_previewImage + @see #AppWidgetProviderInfo_resizeMode + @see #AppWidgetProviderInfo_updatePeriodMillis + @see #AppWidgetProviderInfo_widgetCategory + */ + public static final int[] AppWidgetProviderInfo = { + 0x0101013f, 0x01010140, 0x01010250, 0x01010251, + 0x0101025d, 0x010102da, 0x0101030f, 0x01010363, + 0x01010395, 0x01010396, 0x010103c2, 0x010103c4 + }; + /** +

+ @attr description + The view id of the AppWidget subview which should be auto-advanced. + by the widget's host. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoAdvanceViewId}. + @attr name android:autoAdvanceViewId + */ + public static final int AppWidgetProviderInfo_autoAdvanceViewId = 6; + /** +

+ @attr description + A class name in the AppWidget's package to be launched to configure. + If not supplied, then no activity will be launched. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#configure}. + @attr name android:configure + */ + public static final int AppWidgetProviderInfo_configure = 4; + /** +

+ @attr description + A resource id of a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initialKeyguardLayout}. + @attr name android:initialKeyguardLayout + */ + public static final int AppWidgetProviderInfo_initialKeyguardLayout = 10; + /** +

+ @attr description + A resource id of a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#initialLayout}. + @attr name android:initialLayout + */ + public static final int AppWidgetProviderInfo_initialLayout = 3; + /** +

+ @attr description + Minimum height of the AppWidget. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int AppWidgetProviderInfo_minHeight = 1; + /** +

+ @attr description + Minimum height that the AppWidget can be resized to. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minResizeHeight}. + @attr name android:minResizeHeight + */ + public static final int AppWidgetProviderInfo_minResizeHeight = 9; + /** +

+ @attr description + Minimum width that the AppWidget can be resized to. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minResizeWidth}. + @attr name android:minResizeWidth + */ + public static final int AppWidgetProviderInfo_minResizeWidth = 8; + /** +

+ @attr description + Minimum width of the AppWidget. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int AppWidgetProviderInfo_minWidth = 0; + /** +

+ @attr description + A preview of what the AppWidget will look like after it's configured. + If not supplied, the AppWidget's icon will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#previewImage}. + @attr name android:previewImage + */ + public static final int AppWidgetProviderInfo_previewImage = 5; + /** +

+ @attr description + Optional parameter which indicates if and how this widget can be + resized. Supports combined values using | operator. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x0
horizontal0x1
vertical0x2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#resizeMode}. + @attr name android:resizeMode + */ + public static final int AppWidgetProviderInfo_resizeMode = 7; + /** +

+ @attr description + Update period in milliseconds, or 0 if the AppWidget will update itself. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#updatePeriodMillis}. + @attr name android:updatePeriodMillis + */ + public static final int AppWidgetProviderInfo_updatePeriodMillis = 2; + /** +

+ @attr description + Optional parameter which indicates where this widget can be shown, + ie. home screen, keyguard or both. + resized. Supports combined values using | operator. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
home_screen0x1
keyguard0x2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#widgetCategory}. + @attr name android:widgetCategory + */ + public static final int AppWidgetProviderInfo_widgetCategory = 11; + /** Attributes that can be used with a AutoCompleteTextView. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #AutoCompleteTextView_completionHint android:completionHint} Defines the hint displayed in the drop down menu.
{@link #AutoCompleteTextView_completionHintView android:completionHintView} Defines the hint view displayed in the drop down menu.
{@link #AutoCompleteTextView_completionThreshold android:completionThreshold} Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu.
{@link #AutoCompleteTextView_dropDownAnchor android:dropDownAnchor} View to anchor the auto-complete dropdown to.
{@link #AutoCompleteTextView_dropDownHeight android:dropDownHeight} Specifies the basic height of the dropdown.
{@link #AutoCompleteTextView_dropDownHorizontalOffset android:dropDownHorizontalOffset} Amount of pixels by which the drop down should be offset horizontally.
{@link #AutoCompleteTextView_dropDownSelector android:dropDownSelector} Selector in a drop down list.
{@link #AutoCompleteTextView_dropDownVerticalOffset android:dropDownVerticalOffset} Amount of pixels by which the drop down should be offset vertically.
{@link #AutoCompleteTextView_dropDownWidth android:dropDownWidth} Specifies the basic width of the dropdown.
{@link #AutoCompleteTextView_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
+ @see #AutoCompleteTextView_completionHint + @see #AutoCompleteTextView_completionHintView + @see #AutoCompleteTextView_completionThreshold + @see #AutoCompleteTextView_dropDownAnchor + @see #AutoCompleteTextView_dropDownHeight + @see #AutoCompleteTextView_dropDownHorizontalOffset + @see #AutoCompleteTextView_dropDownSelector + @see #AutoCompleteTextView_dropDownVerticalOffset + @see #AutoCompleteTextView_dropDownWidth + @see #AutoCompleteTextView_inputType + */ + public static final int[] AutoCompleteTextView = { + 0x01010172, 0x01010173, 0x01010174, 0x01010175, + 0x01010220, 0x01010262, 0x01010263, 0x01010283, + 0x010102ac, 0x010102ad + }; + /** +

+ @attr description + Defines the hint displayed in the drop down menu. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionHint}. + @attr name android:completionHint + */ + public static final int AutoCompleteTextView_completionHint = 0; + /** +

+ @attr description + Defines the hint view displayed in the drop down menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionHintView}. + @attr name android:completionHintView + */ + public static final int AutoCompleteTextView_completionHintView = 1; + /** +

+ @attr description + Defines the number of characters that the user must type before + completion suggestions are displayed in a drop down menu. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#completionThreshold}. + @attr name android:completionThreshold + */ + public static final int AutoCompleteTextView_completionThreshold = 2; + /** +

+ @attr description + View to anchor the auto-complete dropdown to. If not specified, the text view itself + is used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownAnchor}. + @attr name android:dropDownAnchor + */ + public static final int AutoCompleteTextView_dropDownAnchor = 6; + /** +

+ @attr description + Specifies the basic height of the dropdown. Its value may + be a dimension (such as "12dip") for a constant height, + fill_parent or match_parent to fill the height of the + screen, or wrap_content to match the height of + the content of the drop down. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fit the height of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the height of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the height of the content.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHeight}. + @attr name android:dropDownHeight + */ + public static final int AutoCompleteTextView_dropDownHeight = 7; + /** +

+ @attr description + Amount of pixels by which the drop down should be offset horizontally. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHorizontalOffset}. + @attr name android:dropDownHorizontalOffset + */ + public static final int AutoCompleteTextView_dropDownHorizontalOffset = 8; + /** +

+ @attr description + Selector in a drop down list. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSelector}. + @attr name android:dropDownSelector + */ + public static final int AutoCompleteTextView_dropDownSelector = 3; + /** +

+ @attr description + Amount of pixels by which the drop down should be offset vertically. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownVerticalOffset}. + @attr name android:dropDownVerticalOffset + */ + public static final int AutoCompleteTextView_dropDownVerticalOffset = 9; + /** +

+ @attr description + Specifies the basic width of the dropdown. Its value may + be a dimension (such as "12dip") for a constant width, + fill_parent or match_parent to match the width of the + screen, or wrap_content to match the width of + the anchored view. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownWidth}. + @attr name android:dropDownWidth + */ + public static final int AutoCompleteTextView_dropDownWidth = 5; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int AutoCompleteTextView_inputType = 4; + /** Drawable used to draw bitmaps. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #BitmapDrawable_antialias android:antialias} Enables or disables antialiasing.
{@link #BitmapDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #BitmapDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #BitmapDrawable_filter android:filter} Enables or disables bitmap filtering.
{@link #BitmapDrawable_gravity android:gravity} Defines the gravity for the bitmap.
{@link #BitmapDrawable_mipMap android:mipMap} Enables or disables the mipmap hint.
{@link #BitmapDrawable_src android:src} Identifier of the bitmap file.
{@link #BitmapDrawable_tileMode android:tileMode} Defines the tile mode.
+ @see #BitmapDrawable_antialias + @see #BitmapDrawable_autoMirrored + @see #BitmapDrawable_dither + @see #BitmapDrawable_filter + @see #BitmapDrawable_gravity + @see #BitmapDrawable_mipMap + @see #BitmapDrawable_src + @see #BitmapDrawable_tileMode + */ + public static final int[] BitmapDrawable = { + 0x010100af, 0x01010119, 0x0101011a, 0x0101011b, + 0x0101011c, 0x01010201, 0x010103cd, 0x010103ea + }; + /** +

+ @attr description + Enables or disables antialiasing. Antialiasing can be used to smooth the + edges of a bitmap when rotated. Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#antialias}. + @attr name android:antialias + */ + public static final int BitmapDrawable_antialias = 2; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int BitmapDrawable_autoMirrored = 7; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). Default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int BitmapDrawable_dither = 4; + /** +

+ @attr description + Enables or disables bitmap filtering. Filtering is used when the bitmap is + shrunk or stretched to smooth its apperance. Default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#filter}. + @attr name android:filter + */ + public static final int BitmapDrawable_filter = 3; + /** +

+ @attr description + Defines the gravity for the bitmap. The gravity indicates where to position + the drawable in its container if the bitmap is smaller than the container. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int BitmapDrawable_gravity = 0; + /** +

+ @attr description + Enables or disables the mipmap hint. See + {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information. + Default value is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mipMap}. + @attr name android:mipMap + */ + public static final int BitmapDrawable_mipMap = 6; + /** +

+ @attr description + Identifier of the bitmap file. This attribute is mandatory. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int BitmapDrawable_src = 1; + /** +

+ @attr description + Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. + Gravity is ignored when the tile mode is enabled. Default value is "disabled". + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
disabled-1 Do not tile the bitmap. This is the default value.
clamp0 Replicates the edge color.
repeat1 Repeats the bitmap in both direction.
mirror2 Repeats the shader's image horizontally and vertically, alternating + mirror images so that adjacent images always seam.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#tileMode}. + @attr name android:tileMode + */ + public static final int BitmapDrawable_tileMode = 5; + /** Attributes that can be used with a Button. + */ + public static final int[] Button = { + + }; + /** Attributes that can be used with a CalendarView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #CalendarView_dateTextAppearance android:dateTextAppearance} The text appearance for the calendar dates.
{@link #CalendarView_firstDayOfWeek android:firstDayOfWeek} The first day of week according to {@link java.util.Calendar}.
{@link #CalendarView_focusedMonthDateColor android:focusedMonthDateColor} The color for the dates of the focused month.
{@link #CalendarView_maxDate android:maxDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #CalendarView_minDate android:minDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #CalendarView_selectedDateVerticalBar android:selectedDateVerticalBar} Drawable for the vertical bar shown at the beginning and at the end of the selected date.
{@link #CalendarView_selectedWeekBackgroundColor android:selectedWeekBackgroundColor} The background color for the selected week.
{@link #CalendarView_showWeekNumber android:showWeekNumber} Whether do show week numbers.
{@link #CalendarView_shownWeekCount android:shownWeekCount} The number of weeks to be shown.
{@link #CalendarView_unfocusedMonthDateColor android:unfocusedMonthDateColor} The color for the dates of an unfocused month.
{@link #CalendarView_weekDayTextAppearance android:weekDayTextAppearance} The text appearance for the week day abbreviation of the calendar header.
{@link #CalendarView_weekNumberColor android:weekNumberColor} The color for the week numbers.
{@link #CalendarView_weekSeparatorLineColor android:weekSeparatorLineColor} The color for the separator line between weeks.
+ @see #CalendarView_dateTextAppearance + @see #CalendarView_firstDayOfWeek + @see #CalendarView_focusedMonthDateColor + @see #CalendarView_maxDate + @see #CalendarView_minDate + @see #CalendarView_selectedDateVerticalBar + @see #CalendarView_selectedWeekBackgroundColor + @see #CalendarView_showWeekNumber + @see #CalendarView_shownWeekCount + @see #CalendarView_unfocusedMonthDateColor + @see #CalendarView_weekDayTextAppearance + @see #CalendarView_weekNumberColor + @see #CalendarView_weekSeparatorLineColor + */ + public static final int[] CalendarView = { + 0x0101033d, 0x0101033e, 0x0101033f, 0x01010340, + 0x01010341, 0x01010342, 0x01010343, 0x01010344, + 0x01010345, 0x01010346, 0x01010347, 0x01010348, + 0x01010349 + }; + /** +

+ @attr description + The text appearance for the calendar dates. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dateTextAppearance}. + @attr name android:dateTextAppearance + */ + public static final int CalendarView_dateTextAppearance = 12; + /** +

+ @attr description + The first day of week according to {@link java.util.Calendar}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#firstDayOfWeek}. + @attr name android:firstDayOfWeek + */ + public static final int CalendarView_firstDayOfWeek = 0; + /** +

+ @attr description + The color for the dates of the focused month. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusedMonthDateColor}. + @attr name android:focusedMonthDateColor + */ + public static final int CalendarView_focusedMonthDateColor = 6; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxDate}. + @attr name android:maxDate + */ + public static final int CalendarView_maxDate = 3; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minDate}. + @attr name android:minDate + */ + public static final int CalendarView_minDate = 2; + /** +

+ @attr description + Drawable for the vertical bar shown at the beginning and at the end of the selected date. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectedDateVerticalBar}. + @attr name android:selectedDateVerticalBar + */ + public static final int CalendarView_selectedDateVerticalBar = 10; + /** +

+ @attr description + The background color for the selected week. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectedWeekBackgroundColor}. + @attr name android:selectedWeekBackgroundColor + */ + public static final int CalendarView_selectedWeekBackgroundColor = 5; + /** +

+ @attr description + Whether do show week numbers. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showWeekNumber}. + @attr name android:showWeekNumber + */ + public static final int CalendarView_showWeekNumber = 1; + /** +

+ @attr description + The number of weeks to be shown. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shownWeekCount}. + @attr name android:shownWeekCount + */ + public static final int CalendarView_shownWeekCount = 4; + /** +

+ @attr description + The color for the dates of an unfocused month. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#unfocusedMonthDateColor}. + @attr name android:unfocusedMonthDateColor + */ + public static final int CalendarView_unfocusedMonthDateColor = 7; + /** +

+ @attr description + The text appearance for the week day abbreviation of the calendar header. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekDayTextAppearance}. + @attr name android:weekDayTextAppearance + */ + public static final int CalendarView_weekDayTextAppearance = 11; + /** +

+ @attr description + The color for the week numbers. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekNumberColor}. + @attr name android:weekNumberColor + */ + public static final int CalendarView_weekNumberColor = 8; + /** +

+ @attr description + The color for the separator line between weeks. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weekSeparatorLineColor}. + @attr name android:weekSeparatorLineColor + */ + public static final int CalendarView_weekSeparatorLineColor = 9; + /** Base attributes available to CheckBoxPreference. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #CheckBoxPreference_disableDependentsState android:disableDependentsState} The state (true for on, or false for off) that causes dependents to be disabled.
{@link #CheckBoxPreference_summaryOff android:summaryOff} The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked.
{@link #CheckBoxPreference_summaryOn android:summaryOn} The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked.
+ @see #CheckBoxPreference_disableDependentsState + @see #CheckBoxPreference_summaryOff + @see #CheckBoxPreference_summaryOn + */ + public static final int[] CheckBoxPreference = { + 0x010101ef, 0x010101f0, 0x010101f1 + }; + /** +

+ @attr description + The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disableDependentsState}. + @attr name android:disableDependentsState + */ + public static final int CheckBoxPreference_disableDependentsState = 2; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOff}. + @attr name android:summaryOff + */ + public static final int CheckBoxPreference_summaryOff = 1; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + CheckBoxPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOn}. + @attr name android:summaryOn + */ + public static final int CheckBoxPreference_summaryOn = 0; + /** Attributes that can be used with a CheckedTextView. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #CheckedTextView_checkMark android:checkMark} Drawable used for the check mark graphic.
{@link #CheckedTextView_checked android:checked} Indicates the initial checked state of this text.
+ @see #CheckedTextView_checkMark + @see #CheckedTextView_checked + */ + public static final int[] CheckedTextView = { + 0x01010106, 0x01010108 + }; + /** +

+ @attr description + Drawable used for the check mark graphic. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkMark}. + @attr name android:checkMark + */ + public static final int CheckedTextView_checkMark = 1; + /** +

+ @attr description + Indicates the initial checked state of this text. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int CheckedTextView_checked = 0; + /** Attributes that can be used with a Chronometer. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Chronometer_format android:format} Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form.
+ @see #Chronometer_format + */ + public static final int[] Chronometer = { + 0x01010105 + }; + /** +

+ @attr description + Format string: if specified, the Chronometer will display this + string, with the first "%s" replaced by the current timer value + in "MM:SS" or "H:MM:SS" form. + If no format string is specified, the Chronometer will simply display + "MM:SS" or "H:MM:SS". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format}. + @attr name android:format + */ + public static final int Chronometer_format = 0; + /** Attributes that can be used with a ClipDrawable. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ClipDrawable_clipOrientation android:clipOrientation} The orientation for the clip.
{@link #ClipDrawable_drawable android:drawable} Reference to a drawable resource to draw with the specified scale.
{@link #ClipDrawable_gravity android:gravity} Specifies where to clip within the drawable.
+ @see #ClipDrawable_clipOrientation + @see #ClipDrawable_drawable + @see #ClipDrawable_gravity + */ + public static final int[] ClipDrawable = { + 0x010100af, 0x01010199, 0x0101020a + }; + /** +

+ @attr description + The orientation for the clip. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal1 Clip the drawable horizontally.
vertical2 Clip the drawable vertically.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipOrientation}. + @attr name android:clipOrientation + */ + public static final int ClipDrawable_clipOrientation = 2; + /** +

+ @attr description + Reference to a drawable resource to draw with the specified scale. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int ClipDrawable_drawable = 1; + /** +

+ @attr description + Specifies where to clip within the drawable. The default value is + left. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int ClipDrawable_gravity = 0; + /** Drawable used to draw a single color. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ColorDrawable_color android:color} The color to use.
+ @see #ColorDrawable_color + */ + public static final int[] ColorDrawable = { + 0x010101a5 + }; + /** +

+ @attr description + The color to use. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int ColorDrawable_color = 0; + /** Attributes that can be used with a CompoundButton. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #CompoundButton_button android:button} Drawable used for the button graphic (e.
{@link #CompoundButton_checked android:checked} Indicates the initial checked state of this button.
+ @see #CompoundButton_button + @see #CompoundButton_checked + */ + public static final int[] CompoundButton = { + 0x01010106, 0x01010107 + }; + /** +

+ @attr description + Drawable used for the button graphic (e.g. checkbox, radio button, etc). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#button}. + @attr name android:button + */ + public static final int CompoundButton_button = 1; + /** +

+ @attr description + Indicates the initial checked state of this button. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int CompoundButton_checked = 0; + /** Maps a specific contact data MIME-type to styling information. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #ContactsDataKind_allContactsName android:allContactsName} Resource representing the term "All Contacts" (e.
{@link #ContactsDataKind_detailColumn android:detailColumn} Column in data table that contains details for this data.
{@link #ContactsDataKind_detailSocialSummary android:detailSocialSummary} Flag indicating that detail should be built from SocialProvider.
{@link #ContactsDataKind_icon android:icon} Icon used to represent data of this kind.
{@link #ContactsDataKind_mimeType android:mimeType} Mime-type handled by this mapping.
{@link #ContactsDataKind_summaryColumn android:summaryColumn} Column in data table that summarizes this data.
+ @see #ContactsDataKind_allContactsName + @see #ContactsDataKind_detailColumn + @see #ContactsDataKind_detailSocialSummary + @see #ContactsDataKind_icon + @see #ContactsDataKind_mimeType + @see #ContactsDataKind_summaryColumn + */ + public static final int[] ContactsDataKind = { + 0x01010002, 0x01010026, 0x010102a2, 0x010102a3, + 0x010102a4, 0x010102cc + }; + /** +

+ @attr description + Resource representing the term "All Contacts" (e.g. "All Friends" or + "All connections"). Optional (Default is "All Contacts"). + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allContactsName}. + @attr name android:allContactsName + */ + public static final int ContactsDataKind_allContactsName = 5; + /** +

+ @attr description + Column in data table that contains details for this data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailColumn}. + @attr name android:detailColumn + */ + public static final int ContactsDataKind_detailColumn = 3; + /** +

+ @attr description + Flag indicating that detail should be built from SocialProvider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailSocialSummary}. + @attr name android:detailSocialSummary + */ + public static final int ContactsDataKind_detailSocialSummary = 4; + /** +

+ @attr description + Icon used to represent data of this kind. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int ContactsDataKind_icon = 0; + /** +

+ @attr description + Mime-type handled by this mapping. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int ContactsDataKind_mimeType = 1; + /** +

+ @attr description + Column in data table that summarizes this data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryColumn}. + @attr name android:summaryColumn + */ + public static final int ContactsDataKind_summaryColumn = 2; + /** Attributes that can be used with a CycleInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #CycleInterpolator_cycles android:cycles}
+ @see #CycleInterpolator_cycles + */ + public static final int[] CycleInterpolator = { + 0x010101d4 + }; + /** +

This symbol is the offset where the {@link android.R.attr#cycles} + attribute's value can be found in the {@link #CycleInterpolator} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:cycles + */ + public static final int CycleInterpolator_cycles = 0; + /** Attributes that can be used with a DatePicker. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #DatePicker_calendarViewShown android:calendarViewShown} Whether the calendar view is shown.
{@link #DatePicker_endYear android:endYear} The last year (inclusive), for example "2010".
{@link #DatePicker_internalLayout android:internalLayout} @hide The layout of the date picker.
{@link #DatePicker_maxDate android:maxDate} The maximal date shown by this calendar view in mm/dd/yyyy format.
{@link #DatePicker_minDate android:minDate} The minimal date shown by this calendar view in mm/dd/yyyy format.
{@link #DatePicker_spinnersShown android:spinnersShown} Whether the spinners are shown.
{@link #DatePicker_startYear android:startYear} The first year (inclusive), for example "1940".
+ @see #DatePicker_calendarViewShown + @see #DatePicker_endYear + @see #DatePicker_internalLayout + @see #DatePicker_maxDate + @see #DatePicker_minDate + @see #DatePicker_spinnersShown + @see #DatePicker_startYear + */ + public static final int[] DatePicker = { + 0x0101017c, 0x0101017d, 0x0101033f, 0x01010340, + 0x0101034b, 0x0101034c, 0x0101043c + }; + /** +

+ @attr description + Whether the calendar view is shown. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#calendarViewShown}. + @attr name android:calendarViewShown + */ + public static final int DatePicker_calendarViewShown = 5; + /** +

+ @attr description + The last year (inclusive), for example "2010". + {@deprecated Use maxDate instead.} + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#endYear}. + @attr name android:endYear + */ + @Deprecated + public static final int DatePicker_endYear = 1; + /** +

+ @attr description + @hide The layout of the date picker. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:internalLayout + */ + public static final int DatePicker_internalLayout = 6; + /** +

+ @attr description + The maximal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxDate}. + @attr name android:maxDate + */ + public static final int DatePicker_maxDate = 3; + /** +

+ @attr description + The minimal date shown by this calendar view in mm/dd/yyyy format. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minDate}. + @attr name android:minDate + */ + public static final int DatePicker_minDate = 2; + /** +

+ @attr description + Whether the spinners are shown. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnersShown}. + @attr name android:spinnersShown + */ + public static final int DatePicker_spinnersShown = 4; + /** +

+ @attr description + The first year (inclusive), for example "1940". + {@deprecated Use minDate instead.} + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startYear}. + @attr name android:startYear + */ + @Deprecated + public static final int DatePicker_startYear = 0; + /** Attributes that can be used with a DecelerateInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #DecelerateInterpolator_factor android:factor} This is the amount of acceleration to add when easing out.
+ @see #DecelerateInterpolator_factor + */ + public static final int[] DecelerateInterpolator = { + 0x010101d3 + }; + /** +

+ @attr description + This is the amount of acceleration to add when easing out. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#factor}. + @attr name android:factor + */ + public static final int DecelerateInterpolator_factor = 0; + /** Use device-admin as the root tag of the XML resource that + describes a + {@link android.app.admin.DeviceAdminReceiver}, which is + referenced from its + {@link android.app.admin.DeviceAdminReceiver#DEVICE_ADMIN_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #DeviceAdmin_visible android:visible} Control whether the admin is visible to the user, even when it + is not enabled.
+ @see #DeviceAdmin_visible + */ + public static final int[] DeviceAdmin = { + 0x01010194 + }; + /** +

+ @attr description + Control whether the admin is visible to the user, even when it + is not enabled. This is true by default. You may want to make + it false if your admin does not make sense to be turned on + unless some explicit action happens in your app. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int DeviceAdmin_visible = 0; + /** Base attributes available to DialogPreference. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #DialogPreference_dialogIcon android:dialogIcon} The icon for the dialog.
{@link #DialogPreference_dialogLayout android:dialogLayout} A layout to be used as the content View for the dialog.
{@link #DialogPreference_dialogMessage android:dialogMessage} The message in the dialog.
{@link #DialogPreference_dialogTitle android:dialogTitle} The title in the dialog.
{@link #DialogPreference_negativeButtonText android:negativeButtonText} The negative button text for the dialog.
{@link #DialogPreference_positiveButtonText android:positiveButtonText} The positive button text for the dialog.
+ @see #DialogPreference_dialogIcon + @see #DialogPreference_dialogLayout + @see #DialogPreference_dialogMessage + @see #DialogPreference_dialogTitle + @see #DialogPreference_negativeButtonText + @see #DialogPreference_positiveButtonText + */ + public static final int[] DialogPreference = { + 0x010101f2, 0x010101f3, 0x010101f4, 0x010101f5, + 0x010101f6, 0x010101f7 + }; + /** +

+ @attr description + The icon for the dialog. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogIcon}. + @attr name android:dialogIcon + */ + public static final int DialogPreference_dialogIcon = 2; + /** +

+ @attr description + A layout to be used as the content View for the dialog. By default, this shouldn't + be needed. If a custom DialogPreference is required, this should be set. For example, + the EditTextPreference uses a layout with an EditText as this attribute. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogLayout}. + @attr name android:dialogLayout + */ + public static final int DialogPreference_dialogLayout = 5; + /** +

+ @attr description + The message in the dialog. If a dialogLayout is provided and contains + a TextView with ID android:id/message, this message will be placed in there. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogMessage}. + @attr name android:dialogMessage + */ + public static final int DialogPreference_dialogMessage = 1; + /** +

+ @attr description + The title in the dialog. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogTitle}. + @attr name android:dialogTitle + */ + public static final int DialogPreference_dialogTitle = 0; + /** +

+ @attr description + The negative button text for the dialog. Set to @null to hide the negative button. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#negativeButtonText}. + @attr name android:negativeButtonText + */ + public static final int DialogPreference_negativeButtonText = 4; + /** +

+ @attr description + The positive button text for the dialog. Set to @null to hide the positive button. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#positiveButtonText}. + @attr name android:positiveButtonText + */ + public static final int DialogPreference_positiveButtonText = 3; + /** Base attributes that are available to all Drawable objects. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Drawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #Drawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #Drawable_autoMirrored + @see #Drawable_visible + */ + public static final int[] Drawable = { + 0x01010194, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). See + {@link android.graphics.drawable.Drawable#setAutoMirrored}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int Drawable_autoMirrored = 1; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int Drawable_visible = 0; + /** Describes the corners for the rectangle shape of a GradientDrawable. + This can be used to render rounded corners. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #DrawableCorners_bottomLeftRadius android:bottomLeftRadius} Radius of the bottom left corner.
{@link #DrawableCorners_bottomRightRadius android:bottomRightRadius} Radius of the bottom right corner.
{@link #DrawableCorners_radius android:radius} Defines the radius of the four corners.
{@link #DrawableCorners_topLeftRadius android:topLeftRadius} Radius of the top left corner.
{@link #DrawableCorners_topRightRadius android:topRightRadius} Radius of the top right corner.
+ @see #DrawableCorners_bottomLeftRadius + @see #DrawableCorners_bottomRightRadius + @see #DrawableCorners_radius + @see #DrawableCorners_topLeftRadius + @see #DrawableCorners_topRightRadius + */ + public static final int[] DrawableCorners = { + 0x010101a8, 0x010101a9, 0x010101aa, 0x010101ab, + 0x010101ac + }; + /** +

+ @attr description + Radius of the bottom left corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomLeftRadius}. + @attr name android:bottomLeftRadius + */ + public static final int DrawableCorners_bottomLeftRadius = 3; + /** +

+ @attr description + Radius of the bottom right corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomRightRadius}. + @attr name android:bottomRightRadius + */ + public static final int DrawableCorners_bottomRightRadius = 4; + /** +

+ @attr description + Defines the radius of the four corners. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#radius}. + @attr name android:radius + */ + public static final int DrawableCorners_radius = 0; + /** +

+ @attr description + Radius of the top left corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topLeftRadius}. + @attr name android:topLeftRadius + */ + public static final int DrawableCorners_topLeftRadius = 1; + /** +

+ @attr description + Radius of the top right corner. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topRightRadius}. + @attr name android:topRightRadius + */ + public static final int DrawableCorners_topRightRadius = 2; + /** Drawable states. + The mapping of Drawable states to a particular drawables is specified + in the "state" elements of a Widget's "selector" element. + Possible values: +

    +
  • "state_focused" +
  • "state_window_focused" +
  • "state_enabled" +
  • "state_checked" +
  • "state_selected" +
  • "state_active" +
  • "state_single" +
  • "state_first" +
  • "state_mid" +
  • "state_last" +
  • "state_only" +
  • "state_pressed" +
  • "state_activated" +
  • "state_error" +
  • "state_circle" +
  • "state_rect" +
  • "state_grow" +
  • "state_move" +
  • "state_hovered" +
  • "state_drag_can_accept" +
  • "state_drag_hovered" +
  • "state_accessibility_focused" +
+

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #DrawableStates_state_accelerated android:state_accelerated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated.
{@link #DrawableStates_state_accessibility_focused android:state_accessibility_focused} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a View has accessibility focus.
{@link #DrawableStates_state_activated android:state_activated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest.
{@link #DrawableStates_state_active android:state_active} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #DrawableStates_state_checked android:state_checked} State identifier indicating that the object is currently checked.
{@link #DrawableStates_state_drag_can_accept android:state_drag_can_accept} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation.
{@link #DrawableStates_state_drag_hovered android:state_drag_hovered} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable.
{@link #DrawableStates_state_enabled android:state_enabled} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled.
{@link #DrawableStates_state_first android:state_first} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
{@link #DrawableStates_state_hovered android:state_hovered} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view.
{@link #DrawableStates_state_last android:state_last} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_middle android:state_middle} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_pressed android:state_pressed} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view.
{@link #DrawableStates_state_selected android:state_selected} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected.
{@link #DrawableStates_state_single android:state_single} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.
{@link #DrawableStates_state_window_focused android:state_window_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus.
+ @see #DrawableStates_state_accelerated + @see #DrawableStates_state_accessibility_focused + @see #DrawableStates_state_activated + @see #DrawableStates_state_active + @see #DrawableStates_state_checkable + @see #DrawableStates_state_checked + @see #DrawableStates_state_drag_can_accept + @see #DrawableStates_state_drag_hovered + @see #DrawableStates_state_enabled + @see #DrawableStates_state_first + @see #DrawableStates_state_focused + @see #DrawableStates_state_hovered + @see #DrawableStates_state_last + @see #DrawableStates_state_middle + @see #DrawableStates_state_pressed + @see #DrawableStates_state_selected + @see #DrawableStates_state_single + @see #DrawableStates_state_window_focused + */ + public static final int[] DrawableStates = { + 0x0101009c, 0x0101009d, 0x0101009e, 0x0101009f, + 0x010100a0, 0x010100a1, 0x010100a2, 0x010100a3, + 0x010100a4, 0x010100a5, 0x010100a6, 0x010100a7, + 0x010102fe, 0x0101031b, 0x01010367, 0x01010368, + 0x01010369, 0x0101044c + }; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_accelerated}. + @attr name android:state_accelerated + */ + public static final int DrawableStates_state_accelerated = 13; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a View has accessibility focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:state_accessibility_focused + */ + public static final int DrawableStates_state_accessibility_focused = 17; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_activated}. + @attr name android:state_activated + */ + public static final int DrawableStates_state_activated = 12; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_active}. + @attr name android:state_active + */ + public static final int DrawableStates_state_active = 6; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int DrawableStates_state_checkable = 3; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int DrawableStates_state_checked = 4; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_can_accept}. + @attr name android:state_drag_can_accept + */ + public static final int DrawableStates_state_drag_can_accept = 15; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_hovered}. + @attr name android:state_drag_hovered + */ + public static final int DrawableStates_state_drag_hovered = 16; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_enabled}. + @attr name android:state_enabled + */ + public static final int DrawableStates_state_enabled = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_first}. + @attr name android:state_first + */ + public static final int DrawableStates_state_first = 8; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int DrawableStates_state_focused = 0; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_hovered}. + @attr name android:state_hovered + */ + public static final int DrawableStates_state_hovered = 14; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_last}. + @attr name android:state_last + */ + public static final int DrawableStates_state_last = 10; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_middle}. + @attr name android:state_middle + */ + public static final int DrawableStates_state_middle = 9; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_pressed}. + @attr name android:state_pressed + */ + public static final int DrawableStates_state_pressed = 11; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_selected}. + @attr name android:state_selected + */ + public static final int DrawableStates_state_selected = 5; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_single}. + @attr name android:state_single + */ + public static final int DrawableStates_state_single = 7; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_window_focused}. + @attr name android:state_window_focused + */ + public static final int DrawableStates_state_window_focused = 1; + /** Use dream as the root tag of the XML resource that + describes an + {@link android.service.dreams.DreamService}, which is + referenced from its + {@link android.service.dreams.DreamService#DREAM_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Dream_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this dream.
+ @see #Dream_settingsActivity + */ + public static final int[] Dream = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this dream. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int Dream_settingsActivity = 0; + /** Attributes that can be used with a EditText. + */ + public static final int[] EditText = { + + }; + /** State array representing an expandable list child's indicator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ExpandableListChildIndicatorState_state_last android:state_last} State identifier indicating the child is the last child within its group.
+ @see #ExpandableListChildIndicatorState_state_last + */ + public static final int[] ExpandableListChildIndicatorState = { + 0x010100a6 + }; + /** +

+ @attr description + State identifier indicating the child is the last child within its group. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_last}. + @attr name android:state_last + */ + public static final int ExpandableListChildIndicatorState_state_last = 0; + /** State array representing an expandable list group's indicator. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ExpandableListGroupIndicatorState_state_empty android:state_empty} State identifier indicating the group is empty (has no children).
{@link #ExpandableListGroupIndicatorState_state_expanded android:state_expanded} State identifier indicating the group is expanded.
+ @see #ExpandableListGroupIndicatorState_state_empty + @see #ExpandableListGroupIndicatorState_state_expanded + */ + public static final int[] ExpandableListGroupIndicatorState = { + 0x010100a8, 0x010100a9 + }; + /** +

+ @attr description + State identifier indicating the group is empty (has no children). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_empty}. + @attr name android:state_empty + */ + public static final int ExpandableListGroupIndicatorState_state_empty = 1; + /** +

+ @attr description + State identifier indicating the group is expanded. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_expanded}. + @attr name android:state_expanded + */ + public static final int ExpandableListGroupIndicatorState_state_expanded = 0; + /** Attributes that can be used with a ExpandableListView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #ExpandableListView_childDivider android:childDivider} Drawable or color that is used as a divider for children.
{@link #ExpandableListView_childIndicator android:childIndicator} Indicator shown beside the child View.
{@link #ExpandableListView_childIndicatorEnd android:childIndicatorEnd} The end bound for a child's indicator.
{@link #ExpandableListView_childIndicatorLeft android:childIndicatorLeft} The left bound for a child's indicator.
{@link #ExpandableListView_childIndicatorRight android:childIndicatorRight} The right bound for a child's indicator.
{@link #ExpandableListView_childIndicatorStart android:childIndicatorStart} The start bound for a child's indicator.
{@link #ExpandableListView_groupIndicator android:groupIndicator} Indicator shown beside the group View.
{@link #ExpandableListView_indicatorEnd android:indicatorEnd} The end bound for an item's indicator.
{@link #ExpandableListView_indicatorLeft android:indicatorLeft} The left bound for an item's indicator.
{@link #ExpandableListView_indicatorRight android:indicatorRight} The right bound for an item's indicator.
{@link #ExpandableListView_indicatorStart android:indicatorStart} The start bound for an item's indicator.
+ @see #ExpandableListView_childDivider + @see #ExpandableListView_childIndicator + @see #ExpandableListView_childIndicatorEnd + @see #ExpandableListView_childIndicatorLeft + @see #ExpandableListView_childIndicatorRight + @see #ExpandableListView_childIndicatorStart + @see #ExpandableListView_groupIndicator + @see #ExpandableListView_indicatorEnd + @see #ExpandableListView_indicatorLeft + @see #ExpandableListView_indicatorRight + @see #ExpandableListView_indicatorStart + */ + public static final int[] ExpandableListView = { + 0x0101010b, 0x0101010c, 0x0101010d, 0x0101010e, + 0x0101010f, 0x01010110, 0x01010111, 0x010103d1, + 0x010103d2, 0x010103d3, 0x010103d4 + }; + /** +

+ @attr description + Drawable or color that is used as a divider for children. (It will drawn + below and above child items.) The height of this will be the same as + the height of the normal list item divider. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childDivider}. + @attr name android:childDivider + */ + public static final int ExpandableListView_childDivider = 6; + /** +

+ @attr description + Indicator shown beside the child View. This can be a stateful Drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicator}. + @attr name android:childIndicator + */ + public static final int ExpandableListView_childIndicator = 1; + /** +

+ @attr description + The end bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorEnd}. + @attr name android:childIndicatorEnd + */ + public static final int ExpandableListView_childIndicatorEnd = 10; + /** +

+ @attr description + The left bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorLeft}. + @attr name android:childIndicatorLeft + */ + public static final int ExpandableListView_childIndicatorLeft = 4; + /** +

+ @attr description + The right bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorRight}. + @attr name android:childIndicatorRight + */ + public static final int ExpandableListView_childIndicatorRight = 5; + /** +

+ @attr description + The start bound for a child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#childIndicatorStart}. + @attr name android:childIndicatorStart + */ + public static final int ExpandableListView_childIndicatorStart = 9; + /** +

+ @attr description + Indicator shown beside the group View. This can be a stateful Drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#groupIndicator}. + @attr name android:groupIndicator + */ + public static final int ExpandableListView_groupIndicator = 0; + /** +

+ @attr description + The end bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorEnd. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorEnd}. + @attr name android:indicatorEnd + */ + public static final int ExpandableListView_indicatorEnd = 8; + /** +

+ @attr description + The left bound for an item's indicator. To specify a left bound specific to children, + use childIndicatorLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorLeft}. + @attr name android:indicatorLeft + */ + public static final int ExpandableListView_indicatorLeft = 2; + /** +

+ @attr description + The right bound for an item's indicator. To specify a right bound specific to children, + use childIndicatorRight. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorRight}. + @attr name android:indicatorRight + */ + public static final int ExpandableListView_indicatorRight = 3; + /** +

+ @attr description + The start bound for an item's indicator. To specify a start bound specific to children, + use childIndicatorStart. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indicatorStart}. + @attr name android:indicatorStart + */ + public static final int ExpandableListView_indicatorStart = 7; + /** An extra data value to place into a an extra/name value pair held + in a Bundle, as per {@link android.os.Bundle}. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Extra_name android:name} Required name of the extra data.
{@link #Extra_value android:value} Concrete value to put for this named extra data.
+ @see #Extra_name + @see #Extra_value + */ + public static final int[] Extra = { + 0x01010003, 0x01010024 + }; + /** +

+ @attr description + Required name of the extra data. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int Extra_name = 0; + /** +

+ @attr description + Concrete value to put for this named extra data. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int Extra_value = 1; + /** Use fadeas the root tag of the XML resource that + describes a {@link android.transition.Fade Fade} transition. + The attributes of the {@link android.R.styleable#Transition Transition} + resource are available in addition to the specific attributes of Fade + described here. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #Fade_fadingMode android:fadingMode}
+ @see #Fade_fadingMode + */ + public static final int[] Fade = { + 0x010103e1 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fadingMode} + attribute's value can be found in the {@link #Fade} array. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fade_in1 Fade will only fade appearing items in.
fade_out2 Fade will only fade disappearing items out.
fade_in_out3 Fade will fade appearing items in and disappearing items out.
+ @attr name android:fadingMode + */ + public static final int Fade_fadingMode = 0; + /** Attributes that can be used with <fragment> + tags inside of the layout of an Activity. This instantiates + the given {@link android.app.Fragment} and inserts its content + view into the current location in the layout. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #Fragment_id android:id} Supply an identifier name for the top-level view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}.
{@link #Fragment_name android:name} Supply the name of the fragment class to instantiate.
{@link #Fragment_tag android:tag} Supply a tag for the top-level view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}.
+ @see #Fragment_id + @see #Fragment_name + @see #Fragment_tag + */ + public static final int[] Fragment = { + 0x01010003, 0x010100d0, 0x010100d1 + }; + /** +

+ @attr description + Supply an identifier name for the top-level view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int Fragment_id = 1; + /** +

+ @attr description + Supply the name of the fragment class to instantiate. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int Fragment_name = 0; + /** +

+ @attr description + Supply a tag for the top-level view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tag}. + @attr name android:tag + */ + public static final int Fragment_tag = 2; + /** Fragment animation class attributes. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #FragmentAnimation_fragmentCloseEnterAnimation android:fragmentCloseEnterAnimation}
{@link #FragmentAnimation_fragmentCloseExitAnimation android:fragmentCloseExitAnimation}
{@link #FragmentAnimation_fragmentFadeEnterAnimation android:fragmentFadeEnterAnimation}
{@link #FragmentAnimation_fragmentFadeExitAnimation android:fragmentFadeExitAnimation}
{@link #FragmentAnimation_fragmentOpenEnterAnimation android:fragmentOpenEnterAnimation}
{@link #FragmentAnimation_fragmentOpenExitAnimation android:fragmentOpenExitAnimation}
+ @see #FragmentAnimation_fragmentCloseEnterAnimation + @see #FragmentAnimation_fragmentCloseExitAnimation + @see #FragmentAnimation_fragmentFadeEnterAnimation + @see #FragmentAnimation_fragmentFadeExitAnimation + @see #FragmentAnimation_fragmentOpenEnterAnimation + @see #FragmentAnimation_fragmentOpenExitAnimation + */ + public static final int[] FragmentAnimation = { + 0x010102e5, 0x010102e6, 0x010102e7, 0x010102e8, + 0x010102e9, 0x010102ea + }; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentCloseEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentCloseEnterAnimation + */ + public static final int FragmentAnimation_fragmentCloseEnterAnimation = 2; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentCloseExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentCloseExitAnimation + */ + public static final int FragmentAnimation_fragmentCloseExitAnimation = 3; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentFadeEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentFadeEnterAnimation + */ + public static final int FragmentAnimation_fragmentFadeEnterAnimation = 4; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentFadeExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentFadeExitAnimation + */ + public static final int FragmentAnimation_fragmentFadeExitAnimation = 5; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentOpenEnterAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentOpenEnterAnimation + */ + public static final int FragmentAnimation_fragmentOpenEnterAnimation = 0; + /** +

This symbol is the offset where the {@link android.R.attr#fragmentOpenExitAnimation} + attribute's value can be found in the {@link #FragmentAnimation} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:fragmentOpenExitAnimation + */ + public static final int FragmentAnimation_fragmentOpenExitAnimation = 1; + /** Attributes that can be used with <FragmentBreadCrumbs> + tags. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #FragmentBreadCrumbs_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
+ @see #FragmentBreadCrumbs_gravity + */ + public static final int[] FragmentBreadCrumbs = { + 0x010100af + }; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int FragmentBreadCrumbs_gravity = 0; + /** Attributes that can be used with a FrameLayout. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #FrameLayout_foreground android:foreground} Defines the drawable to draw over the content.
{@link #FrameLayout_foregroundGravity android:foregroundGravity} Defines the gravity to apply to the foreground drawable.
{@link #FrameLayout_foregroundInsidePadding android:foregroundInsidePadding} Defines whether the foreground drawable should be drawn inside the padding.
{@link #FrameLayout_measureAllChildren android:measureAllChildren} Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring.
+ @see #FrameLayout_foreground + @see #FrameLayout_foregroundGravity + @see #FrameLayout_foregroundInsidePadding + @see #FrameLayout_measureAllChildren + */ + public static final int[] FrameLayout = { + 0x01010109, 0x0101010a, 0x01010200, 0x0101042e + }; + /** +

+ @attr description + Defines the drawable to draw over the content. This can be used as an overlay. + The foreground drawable participates in the padding of the content if the gravity + is set to fill. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#foreground}. + @attr name android:foreground + */ + public static final int FrameLayout_foreground = 0; + /** +

+ @attr description + Defines the gravity to apply to the foreground drawable. The gravity defaults + to fill. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#foregroundGravity}. + @attr name android:foregroundGravity + */ + public static final int FrameLayout_foregroundGravity = 2; + /** +

+ @attr description + Defines whether the foreground drawable should be drawn inside the padding. + This property is turned on by default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:foregroundInsidePadding + */ + public static final int FrameLayout_foregroundInsidePadding = 3; + /** +

+ @attr description + Determines whether to measure all children or just those in + the VISIBLE or INVISIBLE state when measuring. Defaults to false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#measureAllChildren}. + @attr name android:measureAllChildren + */ + public static final int FrameLayout_measureAllChildren = 1; + /** Attributes that can be used with a FrameLayout_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #FrameLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
+ @see #FrameLayout_Layout_layout_gravity + */ + public static final int[] FrameLayout_Layout = { + 0x010100b3 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int FrameLayout_Layout_layout_gravity = 0; + /** Attributes that can be used with a Gallery. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Gallery_animationDuration android:animationDuration} Sets how long a transition animation should run (in milliseconds) + when layout has changed.
{@link #Gallery_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #Gallery_spacing android:spacing}
{@link #Gallery_unselectedAlpha android:unselectedAlpha} Sets the alpha on the items that are not selected.
+ @see #Gallery_animationDuration + @see #Gallery_gravity + @see #Gallery_spacing + @see #Gallery_unselectedAlpha + */ + public static final int[] Gallery = { + 0x010100af, 0x01010112, 0x01010113, 0x0101020e + }; + /** +

+ @attr description + Sets how long a transition animation should run (in milliseconds) + when layout has changed. Only relevant if animation is turned on. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationDuration}. + @attr name android:animationDuration + */ + public static final int Gallery_animationDuration = 1; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int Gallery_gravity = 0; + /** +

This symbol is the offset where the {@link android.R.attr#spacing} + attribute's value can be found in the {@link #Gallery} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:spacing + */ + public static final int Gallery_spacing = 2; + /** +

+ @attr description + Sets the alpha on the items that are not selected. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#unselectedAlpha}. + @attr name android:unselectedAlpha + */ + public static final int Gallery_unselectedAlpha = 3; + /** GestureOverlayView specific attributes. These attributes are used to configure + a GestureOverlayView from XML. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #GestureOverlayView_eventsInterceptionEnabled android:eventsInterceptionEnabled} Defines whether the overlay should intercept the motion events when a gesture + is recognized.
{@link #GestureOverlayView_fadeDuration android:fadeDuration} Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture.
{@link #GestureOverlayView_fadeEnabled android:fadeEnabled} Defines whether the gesture will automatically fade out after being recognized.
{@link #GestureOverlayView_fadeOffset android:fadeOffset} Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it.
{@link #GestureOverlayView_gestureColor android:gestureColor} Color used to draw a gesture.
{@link #GestureOverlayView_gestureStrokeAngleThreshold android:gestureStrokeAngleThreshold} Minimum curve angle a stroke must contain before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeLengthThreshold android:gestureStrokeLengthThreshold} Minimum length of a stroke before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeSquarenessThreshold android:gestureStrokeSquarenessThreshold} Squareness threshold of a stroke before it is recognized as a gesture.
{@link #GestureOverlayView_gestureStrokeType android:gestureStrokeType} Defines the type of strokes that define a gesture.
{@link #GestureOverlayView_gestureStrokeWidth android:gestureStrokeWidth} Width of the stroke used to draw the gesture.
{@link #GestureOverlayView_orientation android:orientation} Indicates whether horizontal (when the orientation is vertical) or vertical + (when orientation is horizontal) strokes automatically define a gesture.
{@link #GestureOverlayView_uncertainGestureColor android:uncertainGestureColor} Color used to draw the user's strokes until we are sure it's a gesture.
+ @see #GestureOverlayView_eventsInterceptionEnabled + @see #GestureOverlayView_fadeDuration + @see #GestureOverlayView_fadeEnabled + @see #GestureOverlayView_fadeOffset + @see #GestureOverlayView_gestureColor + @see #GestureOverlayView_gestureStrokeAngleThreshold + @see #GestureOverlayView_gestureStrokeLengthThreshold + @see #GestureOverlayView_gestureStrokeSquarenessThreshold + @see #GestureOverlayView_gestureStrokeType + @see #GestureOverlayView_gestureStrokeWidth + @see #GestureOverlayView_orientation + @see #GestureOverlayView_uncertainGestureColor + */ + public static final int[] GestureOverlayView = { + 0x010100c4, 0x01010274, 0x01010275, 0x01010276, + 0x01010277, 0x01010278, 0x01010279, 0x0101027a, + 0x0101027b, 0x0101027c, 0x0101027d, 0x0101027e + }; + /** +

+ @attr description + Defines whether the overlay should intercept the motion events when a gesture + is recognized. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#eventsInterceptionEnabled}. + @attr name android:eventsInterceptionEnabled + */ + public static final int GestureOverlayView_eventsInterceptionEnabled = 10; + /** +

+ @attr description + Duration, in milliseconds, of the fade out effect after the user is done + drawing a gesture. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeDuration}. + @attr name android:fadeDuration + */ + public static final int GestureOverlayView_fadeDuration = 5; + /** +

+ @attr description + Defines whether the gesture will automatically fade out after being recognized. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeEnabled}. + @attr name android:fadeEnabled + */ + public static final int GestureOverlayView_fadeEnabled = 11; + /** +

+ @attr description + Time, in milliseconds, to wait before the gesture fades out after the user + is done drawing it. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeOffset}. + @attr name android:fadeOffset + */ + public static final int GestureOverlayView_fadeOffset = 4; + /** +

+ @attr description + Color used to draw a gesture. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureColor}. + @attr name android:gestureColor + */ + public static final int GestureOverlayView_gestureColor = 2; + /** +

+ @attr description + Minimum curve angle a stroke must contain before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeAngleThreshold}. + @attr name android:gestureStrokeAngleThreshold + */ + public static final int GestureOverlayView_gestureStrokeAngleThreshold = 9; + /** +

+ @attr description + Minimum length of a stroke before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeLengthThreshold}. + @attr name android:gestureStrokeLengthThreshold + */ + public static final int GestureOverlayView_gestureStrokeLengthThreshold = 7; + /** +

+ @attr description + Squareness threshold of a stroke before it is recognized as a gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeSquarenessThreshold}. + @attr name android:gestureStrokeSquarenessThreshold + */ + public static final int GestureOverlayView_gestureStrokeSquarenessThreshold = 8; + /** +

+ @attr description + Defines the type of strokes that define a gesture. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
single0 A gesture is made of only one stroke.
multiple1 A gesture is made of multiple strokes.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeType}. + @attr name android:gestureStrokeType + */ + public static final int GestureOverlayView_gestureStrokeType = 6; + /** +

+ @attr description + Width of the stroke used to draw the gesture. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gestureStrokeWidth}. + @attr name android:gestureStrokeWidth + */ + public static final int GestureOverlayView_gestureStrokeWidth = 1; + /** +

+ @attr description + Indicates whether horizontal (when the orientation is vertical) or vertical + (when orientation is horizontal) strokes automatically define a gesture. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int GestureOverlayView_orientation = 0; + /** +

+ @attr description + Color used to draw the user's strokes until we are sure it's a gesture. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#uncertainGestureColor}. + @attr name android:uncertainGestureColor + */ + public static final int GestureOverlayView_uncertainGestureColor = 3; + /** Attributes that can be used with a GlowPadView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #GlowPadView_allowScaling android:allowScaling} Determine whether the glow pad is allowed to scale to fit the bounds indicated + by its parent.
{@link #GlowPadView_alwaysTrackFinger android:alwaysTrackFinger} Used when the handle shouldn't wait to be hit before following the finger
{@link #GlowPadView_directionDescriptions android:directionDescriptions} Reference to an array resource that be used to announce the directions with targets around the circle.
{@link #GlowPadView_feedbackCount android:feedbackCount} Number of waves/chevrons to show in animation.
{@link #GlowPadView_firstItemOffset android:firstItemOffset} Location along the circle of the first item, in degrees.
{@link #GlowPadView_glowRadius android:glowRadius} Radius of glow under finger.
{@link #GlowPadView_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #GlowPadView_handleDrawable android:handleDrawable} Sets a drawable as the center.
{@link #GlowPadView_innerRadius android:innerRadius} Inner radius of glow area.
{@link #GlowPadView_magneticTargets android:magneticTargets} Causes targets to snap to the finger location on activation.
{@link #GlowPadView_outerRadius android:outerRadius} Outer radius of glow area.
{@link #GlowPadView_outerRingDrawable android:outerRingDrawable} Drawable to use for wave ripple animation.
{@link #GlowPadView_pointDrawable android:pointDrawable} Drawble used for drawing points
{@link #GlowPadView_snapMargin android:snapMargin} How close we need to be before snapping to a target.
{@link #GlowPadView_targetDescriptions android:targetDescriptions} Reference to an array resource that be used as description for the targets around the circle.
{@link #GlowPadView_targetDrawables android:targetDrawables} Reference to an array resource that be shown as targets around a circle.
{@link #GlowPadView_vibrationDuration android:vibrationDuration} Tactile feedback duration for actions.
+ @see #GlowPadView_allowScaling + @see #GlowPadView_alwaysTrackFinger + @see #GlowPadView_directionDescriptions + @see #GlowPadView_feedbackCount + @see #GlowPadView_firstItemOffset + @see #GlowPadView_glowRadius + @see #GlowPadView_gravity + @see #GlowPadView_handleDrawable + @see #GlowPadView_innerRadius + @see #GlowPadView_magneticTargets + @see #GlowPadView_outerRadius + @see #GlowPadView_outerRingDrawable + @see #GlowPadView_pointDrawable + @see #GlowPadView_snapMargin + @see #GlowPadView_targetDescriptions + @see #GlowPadView_targetDrawables + @see #GlowPadView_vibrationDuration + */ + public static final int[] GlowPadView = { + 0x010100af, 0x0101025f, 0x010103a0, 0x010103a1, + 0x01010450, 0x01010451, 0x01010452, 0x01010453, + 0x01010454, 0x01010455, 0x01010456, 0x01010457, + 0x0101045a, 0x0101045b, 0x0101045c, 0x0101045d, + 0x0101045e + }; + /** +

+ @attr description + Determine whether the glow pad is allowed to scale to fit the bounds indicated + by its parent. If this is set to false, no scaling will occur. If this is set to true + scaling will occur to fit for any axis in which gravity is set to center. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:allowScaling + */ + public static final int GlowPadView_allowScaling = 9; + /** +

+ @attr description + Used when the handle shouldn't wait to be hit before following the finger + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:alwaysTrackFinger + */ + public static final int GlowPadView_alwaysTrackFinger = 16; + /** +

+ @attr description + Reference to an array resource that be used to announce the directions with targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionDescriptions}. + @attr name android:directionDescriptions + */ + public static final int GlowPadView_directionDescriptions = 3; + /** +

+ @attr description + Number of waves/chevrons to show in animation. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:feedbackCount + */ + public static final int GlowPadView_feedbackCount = 15; + /** +

+ @attr description + Location along the circle of the first item, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:firstItemOffset + */ + public static final int GlowPadView_firstItemOffset = 7; + /** +

+ @attr description + Radius of glow under finger. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:glowRadius + */ + public static final int GlowPadView_glowRadius = 6; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int GlowPadView_gravity = 0; + /** +

+ @attr description + Sets a drawable as the center. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:handleDrawable + */ + public static final int GlowPadView_handleDrawable = 11; + /** +

+ @attr description + Inner radius of glow area. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadius}. + @attr name android:innerRadius + */ + public static final int GlowPadView_innerRadius = 1; + /** +

+ @attr description + Causes targets to snap to the finger location on activation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:magneticTargets + */ + public static final int GlowPadView_magneticTargets = 8; + /** +

+ @attr description + Outer radius of glow area. Target icons will be drawn on this circle. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:outerRadius + */ + public static final int GlowPadView_outerRadius = 12; + /** +

+ @attr description + Drawable to use for wave ripple animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:outerRingDrawable + */ + public static final int GlowPadView_outerRingDrawable = 4; + /** +

+ @attr description + Drawble used for drawing points + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointDrawable + */ + public static final int GlowPadView_pointDrawable = 5; + /** +

+ @attr description + How close we need to be before snapping to a target. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:snapMargin + */ + public static final int GlowPadView_snapMargin = 14; + /** +

+ @attr description + Reference to an array resource that be used as description for the targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetDescriptions}. + @attr name android:targetDescriptions + */ + public static final int GlowPadView_targetDescriptions = 2; + /** +

+ @attr description + Reference to an array resource that be shown as targets around a circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:targetDrawables + */ + public static final int GlowPadView_targetDrawables = 10; + /** +

+ @attr description + Tactile feedback duration for actions. Set to '0' for no vibration. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:vibrationDuration + */ + public static final int GlowPadView_vibrationDuration = 13; + /** Drawable used to render a geometric shape, with a gradient or a solid color. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #GradientDrawable_dither android:dither} Enables or disables dithering.
{@link #GradientDrawable_innerRadius android:innerRadius} Inner radius of the ring.
{@link #GradientDrawable_innerRadiusRatio android:innerRadiusRatio} Inner radius of the ring expressed as a ratio of the ring's width.
{@link #GradientDrawable_shape android:shape} Indicates what shape to fill with a gradient.
{@link #GradientDrawable_thickness android:thickness} Thickness of the ring.
{@link #GradientDrawable_thicknessRatio android:thicknessRatio} Thickness of the ring expressed as a ratio of the ring's width.
{@link #GradientDrawable_useLevel android:useLevel} Indicates whether the drawable's level affects the way the gradient is drawn.
{@link #GradientDrawable_visible android:visible} Indicates whether the drawable should intially be visible.
+ @see #GradientDrawable_dither + @see #GradientDrawable_innerRadius + @see #GradientDrawable_innerRadiusRatio + @see #GradientDrawable_shape + @see #GradientDrawable_thickness + @see #GradientDrawable_thicknessRatio + @see #GradientDrawable_useLevel + @see #GradientDrawable_visible + */ + public static final int[] GradientDrawable = { + 0x0101011c, 0x01010194, 0x0101019a, 0x0101019b, + 0x0101019c, 0x0101019f, 0x0101025f, 0x01010260 + }; + /** +

+ @attr description + Enables or disables dithering. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int GradientDrawable_dither = 0; + /** +

+ @attr description + Inner radius of the ring. When defined, innerRadiusRatio is ignored. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadius}. + @attr name android:innerRadius + */ + public static final int GradientDrawable_innerRadius = 6; + /** +

+ @attr description + Inner radius of the ring expressed as a ratio of the ring's width. For instance, + if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9. + This value is ignored if innerRadius is defined. Default value is 9. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#innerRadiusRatio}. + @attr name android:innerRadiusRatio + */ + public static final int GradientDrawable_innerRadiusRatio = 3; + /** +

+ @attr description + Indicates what shape to fill with a gradient. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
rectangle0 Rectangle shape, with optional rounder corners.
oval1 Oval shape.
line2 Line shape.
ring3 Ring shape.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#shape}. + @attr name android:shape + */ + public static final int GradientDrawable_shape = 2; + /** +

+ @attr description + Thickness of the ring. When defined, thicknessRatio is ignored. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thickness}. + @attr name android:thickness + */ + public static final int GradientDrawable_thickness = 7; + /** +

+ @attr description + Thickness of the ring expressed as a ratio of the ring's width. For instance, + if thicknessRatio=3, then the thickness equals the ring's width divided by 3. + This value is ignored if innerRadius is defined. Default value is 3. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thicknessRatio}. + @attr name android:thicknessRatio + */ + public static final int GradientDrawable_thicknessRatio = 4; + /** +

+ @attr description + Indicates whether the drawable's level affects the way the gradient is drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useLevel}. + @attr name android:useLevel + */ + public static final int GradientDrawable_useLevel = 5; + /** +

+ @attr description + Indicates whether the drawable should intially be visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int GradientDrawable_visible = 1; + /** Used to describe the gradient used to fill the shape of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #GradientDrawableGradient_angle android:angle} Angle of the gradient.
{@link #GradientDrawableGradient_centerColor android:centerColor} Optional center color.
{@link #GradientDrawableGradient_centerX android:centerX} X coordinate of the origin of the gradient within the shape.
{@link #GradientDrawableGradient_centerY android:centerY} Y coordinate of the origin of the gradient within the shape.
{@link #GradientDrawableGradient_endColor android:endColor} End color of the gradient.
{@link #GradientDrawableGradient_gradientRadius android:gradientRadius} Radius of the gradient, used only with radial gradient.
{@link #GradientDrawableGradient_startColor android:startColor} Start color of the gradient.
{@link #GradientDrawableGradient_type android:type} Type of gradient.
{@link #GradientDrawableGradient_useLevel android:useLevel}
+ @see #GradientDrawableGradient_angle + @see #GradientDrawableGradient_centerColor + @see #GradientDrawableGradient_centerX + @see #GradientDrawableGradient_centerY + @see #GradientDrawableGradient_endColor + @see #GradientDrawableGradient_gradientRadius + @see #GradientDrawableGradient_startColor + @see #GradientDrawableGradient_type + @see #GradientDrawableGradient_useLevel + */ + public static final int[] GradientDrawableGradient = { + 0x0101019d, 0x0101019e, 0x0101019f, 0x010101a0, + 0x010101a1, 0x010101a2, 0x010101a3, 0x010101a4, + 0x0101020b + }; + /** +

+ @attr description + Angle of the gradient. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#angle}. + @attr name android:angle + */ + public static final int GradientDrawableGradient_angle = 3; + /** +

+ @attr description + Optional center color. For linear gradients, use centerX or centerY + to place the center color. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerColor}. + @attr name android:centerColor + */ + public static final int GradientDrawableGradient_centerColor = 8; + /** +

+ @attr description + X coordinate of the origin of the gradient within the shape. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerX}. + @attr name android:centerX + */ + public static final int GradientDrawableGradient_centerX = 5; + /** +

+ @attr description + Y coordinate of the origin of the gradient within the shape. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#centerY}. + @attr name android:centerY + */ + public static final int GradientDrawableGradient_centerY = 6; + /** +

+ @attr description + End color of the gradient. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#endColor}. + @attr name android:endColor + */ + public static final int GradientDrawableGradient_endColor = 1; + /** +

+ @attr description + Radius of the gradient, used only with radial gradient. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gradientRadius}. + @attr name android:gradientRadius + */ + public static final int GradientDrawableGradient_gradientRadius = 7; + /** +

+ @attr description + Start color of the gradient. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startColor}. + @attr name android:startColor + */ + public static final int GradientDrawableGradient_startColor = 0; + /** +

+ @attr description + Type of gradient. The default type is linear. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
linear0 Linear gradient.
radial1 Radial, or circular, gradient.
sweep2 Sweep, or angled or diamond, gradient.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#type}. + @attr name android:type + */ + public static final int GradientDrawableGradient_type = 4; + /** +

This symbol is the offset where the {@link android.R.attr#useLevel} + attribute's value can be found in the {@link #GradientDrawableGradient} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:useLevel + */ + public static final int GradientDrawableGradient_useLevel = 2; + /** Used to specify the optional padding of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GradientDrawablePadding_bottom android:bottom} Amount of bottom padding inside the gradient shape.
{@link #GradientDrawablePadding_left android:left} Amount of left padding inside the gradient shape.
{@link #GradientDrawablePadding_right android:right} Amount of right padding inside the gradient shape.
{@link #GradientDrawablePadding_top android:top} Amount of top padding inside the gradient shape.
+ @see #GradientDrawablePadding_bottom + @see #GradientDrawablePadding_left + @see #GradientDrawablePadding_right + @see #GradientDrawablePadding_top + */ + public static final int[] GradientDrawablePadding = { + 0x010101ad, 0x010101ae, 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Amount of bottom padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int GradientDrawablePadding_bottom = 3; + /** +

+ @attr description + Amount of left padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int GradientDrawablePadding_left = 0; + /** +

+ @attr description + Amount of right padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int GradientDrawablePadding_right = 2; + /** +

+ @attr description + Amount of top padding inside the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int GradientDrawablePadding_top = 1; + /** Used to specify the size of the shape for GradientDrawable. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #GradientDrawableSize_height android:height} Height of the gradient shape.
{@link #GradientDrawableSize_width android:width} Width of the gradient shape.
+ @see #GradientDrawableSize_height + @see #GradientDrawableSize_width + */ + public static final int[] GradientDrawableSize = { + 0x01010155, 0x01010159 + }; + /** +

+ @attr description + Height of the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int GradientDrawableSize_height = 0; + /** +

+ @attr description + Width of the gradient shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int GradientDrawableSize_width = 1; + /** Used to fill the shape of GradientDrawable with a solid color. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #GradientDrawableSolid_color android:color} Solid color for the gradient shape.
+ @see #GradientDrawableSolid_color + */ + public static final int[] GradientDrawableSolid = { + 0x010101a5 + }; + /** +

+ @attr description + Solid color for the gradient shape. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int GradientDrawableSolid_color = 0; + /** Used to describe the optional stroke of a GradientDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GradientDrawableStroke_color android:color} Color of the gradient shape's stroke.
{@link #GradientDrawableStroke_dashGap android:dashGap} Gap between dashes in the stroke.
{@link #GradientDrawableStroke_dashWidth android:dashWidth} Length of a dash in the stroke.
{@link #GradientDrawableStroke_width android:width} Width of the gradient shape's stroke.
+ @see #GradientDrawableStroke_color + @see #GradientDrawableStroke_dashGap + @see #GradientDrawableStroke_dashWidth + @see #GradientDrawableStroke_width + */ + public static final int[] GradientDrawableStroke = { + 0x01010159, 0x010101a5, 0x010101a6, 0x010101a7 + }; + /** +

+ @attr description + Color of the gradient shape's stroke. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int GradientDrawableStroke_color = 1; + /** +

+ @attr description + Gap between dashes in the stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dashGap}. + @attr name android:dashGap + */ + public static final int GradientDrawableStroke_dashGap = 3; + /** +

+ @attr description + Length of a dash in the stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dashWidth}. + @attr name android:dashWidth + */ + public static final int GradientDrawableStroke_dashWidth = 2; + /** +

+ @attr description + Width of the gradient shape's stroke. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int GradientDrawableStroke_width = 0; + /** Attributes that can be used with a GridLayout. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #GridLayout_alignmentMode android:alignmentMode} When set to alignMargins, causes alignment to take place between the outer + boundary of a view, as defined by its margins.
{@link #GridLayout_columnCount android:columnCount} The maxmimum number of columns to create when automatically positioning children.
{@link #GridLayout_columnOrderPreserved android:columnOrderPreserved} When set to true, forces column boundaries to appear in the same order + as column indices.
{@link #GridLayout_orientation android:orientation} The orientation property is not used during layout.
{@link #GridLayout_rowCount android:rowCount} The maxmimum number of rows to create when automatically positioning children.
{@link #GridLayout_rowOrderPreserved android:rowOrderPreserved} When set to true, forces row boundaries to appear in the same order + as row indices.
{@link #GridLayout_useDefaultMargins android:useDefaultMargins} When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters.
+ @see #GridLayout_alignmentMode + @see #GridLayout_columnCount + @see #GridLayout_columnOrderPreserved + @see #GridLayout_orientation + @see #GridLayout_rowCount + @see #GridLayout_rowOrderPreserved + @see #GridLayout_useDefaultMargins + */ + public static final int[] GridLayout = { + 0x010100c4, 0x01010375, 0x01010376, 0x01010377, + 0x01010378, 0x01010379, 0x0101037a + }; + /** +

+ @attr description + When set to alignMargins, causes alignment to take place between the outer + boundary of a view, as defined by its margins. When set to alignBounds, + causes alignment to take place between the edges of the view. + The default is alignMargins. + See {@link android.widget.GridLayout#setAlignmentMode(int)}. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
alignBounds0 Align the bounds of the children. + See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
alignMargins1 Align the margins of the children. + See {@link android.widget.GridLayout#ALIGN_MARGINS}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#alignmentMode}. + @attr name android:alignmentMode + */ + public static final int GridLayout_alignmentMode = 6; + /** +

+ @attr description + The maxmimum number of columns to create when automatically positioning children. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnCount}. + @attr name android:columnCount + */ + public static final int GridLayout_columnCount = 3; + /** +

+ @attr description + When set to true, forces column boundaries to appear in the same order + as column indices. + The default is true. + See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnOrderPreserved}. + @attr name android:columnOrderPreserved + */ + public static final int GridLayout_columnOrderPreserved = 4; + /** +

+ @attr description + The orientation property is not used during layout. It is only used to + allocate row and column parameters when they are not specified by its children's + layout paramters. GridLayout works like LinearLayout in this case; + putting all the components either in a single row or in a single column - + depending on the value of this flag. In the horizontal case, a columnCount + property may be additionally supplied to force new rows to be created when a + row is full. The rowCount attribute may be used similarly in the vertical case. + The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int GridLayout_orientation = 0; + /** +

+ @attr description + The maxmimum number of rows to create when automatically positioning children. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowCount}. + @attr name android:rowCount + */ + public static final int GridLayout_rowCount = 1; + /** +

+ @attr description + When set to true, forces row boundaries to appear in the same order + as row indices. + The default is true. + See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowOrderPreserved}. + @attr name android:rowOrderPreserved + */ + public static final int GridLayout_rowOrderPreserved = 2; + /** +

+ @attr description + When set to true, tells GridLayout to use default margins when none are specified + in a view's layout parameters. + The default value is false. + See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useDefaultMargins}. + @attr name android:useDefaultMargins + */ + public static final int GridLayout_useDefaultMargins = 5; + /** Attributes that can be used with a GridLayoutAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #GridLayoutAnimation_columnDelay android:columnDelay} Fraction of the animation duration used to delay the beginning of + the animation of each column.
{@link #GridLayoutAnimation_direction android:direction} Direction of the animation in the grid.
{@link #GridLayoutAnimation_directionPriority android:directionPriority} Priority of the rows and columns.
{@link #GridLayoutAnimation_rowDelay android:rowDelay} Fraction of the animation duration used to delay the beginning of + the animation of each row.
+ @see #GridLayoutAnimation_columnDelay + @see #GridLayoutAnimation_direction + @see #GridLayoutAnimation_directionPriority + @see #GridLayoutAnimation_rowDelay + */ + public static final int[] GridLayoutAnimation = { + 0x010101cf, 0x010101d0, 0x010101d1, 0x010101d2 + }; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each column. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnDelay}. + @attr name android:columnDelay + */ + public static final int GridLayoutAnimation_columnDelay = 0; + /** +

+ @attr description + Direction of the animation in the grid. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
left_to_right0x0 Animates columns from left to right.
right_to_left0x1 Animates columns from right to left.
top_to_bottom0x0 Animates rows from top to bottom.
bottom_to_top0x2 Animates rows from bottom to top.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#direction}. + @attr name android:direction + */ + public static final int GridLayoutAnimation_direction = 2; + /** +

+ @attr description + Priority of the rows and columns. When the priority is none, + both rows and columns have the same priority. When the priority is + column, the animations will be applied on the columns first. The same + goes for rows. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Rows and columns are animated at the same time.
column1 Columns are animated first.
row2 Rows are animated first.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionPriority}. + @attr name android:directionPriority + */ + public static final int GridLayoutAnimation_directionPriority = 3; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each row. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowDelay}. + @attr name android:rowDelay + */ + public static final int GridLayoutAnimation_rowDelay = 1; + /** Attributes that can be used with a GridLayout_Layout. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #GridLayout_Layout_layout_column android:layout_column} The column boundary delimiting the left of the group of cells + occupied by this view.
{@link #GridLayout_Layout_layout_columnSpan android:layout_columnSpan} The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view.
{@link #GridLayout_Layout_layout_gravity android:layout_gravity} Gravity specifies how a component should be placed in its group of cells.
{@link #GridLayout_Layout_layout_row android:layout_row} The row boundary delimiting the top of the group of cells + occupied by this view.
{@link #GridLayout_Layout_layout_rowSpan android:layout_rowSpan} The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view.
+ @see #GridLayout_Layout_layout_column + @see #GridLayout_Layout_layout_columnSpan + @see #GridLayout_Layout_layout_gravity + @see #GridLayout_Layout_layout_row + @see #GridLayout_Layout_layout_rowSpan + */ + public static final int[] GridLayout_Layout = { + 0x010100b3, 0x0101014c, 0x0101037b, 0x0101037c, + 0x0101037d + }; + /** +

+ @attr description + The column boundary delimiting the left of the group of cells + occupied by this view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_column}. + @attr name android:layout_column + */ + public static final int GridLayout_Layout_layout_column = 1; + /** +

+ @attr description + The column span: the difference between the right and left + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_columnSpan}. + @attr name android:layout_columnSpan + */ + public static final int GridLayout_Layout_layout_columnSpan = 4; + /** +

+ @attr description + Gravity specifies how a component should be placed in its group of cells. + The default is LEFT | BASELINE. + See {@link android.widget.GridLayout.LayoutParams#setGravity(int)}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int GridLayout_Layout_layout_gravity = 0; + /** +

+ @attr description + The row boundary delimiting the top of the group of cells + occupied by this view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_row}. + @attr name android:layout_row + */ + public static final int GridLayout_Layout_layout_row = 2; + /** +

+ @attr description + The row span: the difference between the bottom and top + boundaries delimiting the group of cells occupied by this view. + The default is one. + See {@link android.widget.GridLayout.Spec}. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_rowSpan}. + @attr name android:layout_rowSpan + */ + public static final int GridLayout_Layout_layout_rowSpan = 3; + /** Attributes that can be used with a GridView. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #GridView_columnWidth android:columnWidth} Specifies the fixed width for each column.
{@link #GridView_gravity android:gravity} Specifies the gravity within each cell.
{@link #GridView_horizontalSpacing android:horizontalSpacing} Defines the default horizontal spacing between columns.
{@link #GridView_numColumns android:numColumns} Defines how many columns to show.
{@link #GridView_stretchMode android:stretchMode} Defines how columns should stretch to fill the available empty space, if any.
{@link #GridView_verticalSpacing android:verticalSpacing} Defines the default vertical spacing between rows.
+ @see #GridView_columnWidth + @see #GridView_gravity + @see #GridView_horizontalSpacing + @see #GridView_numColumns + @see #GridView_stretchMode + @see #GridView_verticalSpacing + */ + public static final int[] GridView = { + 0x010100af, 0x01010114, 0x01010115, 0x01010116, + 0x01010117, 0x01010118 + }; + /** +

+ @attr description + Specifies the fixed width for each column. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#columnWidth}. + @attr name android:columnWidth + */ + public static final int GridView_columnWidth = 4; + /** +

+ @attr description + Specifies the gravity within each cell. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int GridView_gravity = 0; + /** +

+ @attr description + Defines the default horizontal spacing between columns. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalSpacing}. + @attr name android:horizontalSpacing + */ + public static final int GridView_horizontalSpacing = 1; + /** +

+ @attr description + Defines how many columns to show. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
auto_fit-1 Display as many columns as possible to fill the available space.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#numColumns}. + @attr name android:numColumns + */ + public static final int GridView_numColumns = 5; + /** +

+ @attr description + Defines how columns should stretch to fill the available empty space, if any. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Stretching is disabled.
spacingWidth1 The spacing between each column is stretched.
columnWidth2 Each column is stretched equally.
spacingWidthUniform3 The spacing between each column is uniformly stretched..
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#stretchMode}. + @attr name android:stretchMode + */ + public static final int GridView_stretchMode = 3; + /** +

+ @attr description + Defines the default vertical spacing between rows. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalSpacing}. + @attr name android:verticalSpacing + */ + public static final int GridView_verticalSpacing = 2; + /** Attributes that can be used with a HorizontalScrollView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #HorizontalScrollView_fillViewport android:fillViewport} Defines whether the scrollview should stretch its content to fill the viewport.
+ @see #HorizontalScrollView_fillViewport + */ + public static final int[] HorizontalScrollView = { + 0x0101017a + }; + /** +

+ @attr description + Defines whether the scrollview should stretch its content to fill the viewport. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillViewport}. + @attr name android:fillViewport + */ + public static final int HorizontalScrollView_fillViewport = 0; + /** Use host-apdu-service as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.HostApduService} service, which + is referenced from its {@link android.nfc.cardemulation.HostApduService#SERVICE_META_DATA} + entry. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #HostApduService_apduServiceBanner android:apduServiceBanner} A drawable that can be rendered in Android's system UI for representing + the service.
{@link #HostApduService_description android:description} Short description of the functionality the service implements.
{@link #HostApduService_requireDeviceUnlock android:requireDeviceUnlock} Whether the device must be unlocked before routing data to this service.
+ @see #HostApduService_apduServiceBanner + @see #HostApduService_description + @see #HostApduService_requireDeviceUnlock + */ + public static final int[] HostApduService = { + 0x01010020, 0x010103ec, 0x010103ed + }; + /** +

+ @attr description + A drawable that can be rendered in Android's system UI for representing + the service. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apduServiceBanner}. + @attr name android:apduServiceBanner + */ + public static final int HostApduService_apduServiceBanner = 2; + /** +

+ @attr description + Short description of the functionality the service implements. This attribute + is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int HostApduService_description = 0; + /** +

+ @attr description + Whether the device must be unlocked before routing data to this service. + The default is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#requireDeviceUnlock}. + @attr name android:requireDeviceUnlock + */ + public static final int HostApduService_requireDeviceUnlock = 1; + /** Attributes that can be used with a Icon. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Icon_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
{@link #Icon_mimeType android:mimeType} Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}.
+ @see #Icon_icon + @see #Icon_mimeType + */ + public static final int[] Icon = { + 0x01010002, 0x01010026 + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Icon_icon = 0; + /** +

+ @attr description + Specify a MIME type that is handled, as per + {@link android.content.IntentFilter#addDataType + IntentFilter.addDataType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int Icon_mimeType = 1; + /** Attributes that can be used with a IconDefault. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #IconDefault_icon android:icon} A Drawable resource providing a graphical representation of its + associated item.
+ @see #IconDefault_icon + */ + public static final int[] IconDefault = { + 0x01010002 + }; + /** +

+ @attr description + A Drawable resource providing a graphical representation of its + associated item. Use with the + application tag (to supply a default icon for all application + components), or with the activity, receiver, service, or instrumentation + tag (to supply a specific icon for that component). It may also be + used with the intent-filter tag to supply an icon to show to the + user when an activity is being selected based on a particular Intent. + +

The given icon will be used to display to the user a graphical + representation of its associated component; for example, as the icon + for main activity that is displayed in the launcher. This must be + a reference to a Drawable resource containing the image definition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int IconDefault_icon = 0; + /** Attributes that can be used with a IconMenuView. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #IconMenuView_maxItems android:maxItems} Defines the maximum number of items to show.
{@link #IconMenuView_maxItemsPerRow android:maxItemsPerRow} Defines the maximum number of items per row.
{@link #IconMenuView_maxRows android:maxRows} Defines the maximum number of rows displayed.
{@link #IconMenuView_moreIcon android:moreIcon} 'More' icon.
{@link #IconMenuView_rowHeight android:rowHeight} Defines the height of each row.
+ @see #IconMenuView_maxItems + @see #IconMenuView_maxItemsPerRow + @see #IconMenuView_maxRows + @see #IconMenuView_moreIcon + @see #IconMenuView_rowHeight + */ + public static final int[] IconMenuView = { + 0x01010132, 0x01010133, 0x01010134, 0x01010135, + 0x01010436 + }; + /** +

+ @attr description + Defines the maximum number of items to show. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:maxItems + */ + public static final int IconMenuView_maxItems = 4; + /** +

+ @attr description + Defines the maximum number of items per row. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxItemsPerRow}. + @attr name android:maxItemsPerRow + */ + public static final int IconMenuView_maxItemsPerRow = 2; + /** +

+ @attr description + Defines the maximum number of rows displayed. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxRows}. + @attr name android:maxRows + */ + public static final int IconMenuView_maxRows = 1; + /** +

+ @attr description + 'More' icon. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#moreIcon}. + @attr name android:moreIcon + */ + public static final int IconMenuView_moreIcon = 3; + /** +

+ @attr description + Defines the height of each row. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowHeight}. + @attr name android:rowHeight + */ + public static final int IconMenuView_rowHeight = 0; + /** Attributes that can be used with a ImageSwitcher. + */ + public static final int[] ImageSwitcher = { + + }; + /** Attributes that can be used with a ImageView. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #ImageView_adjustViewBounds android:adjustViewBounds} Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable.
{@link #ImageView_baseline android:baseline} The offset of the baseline within this view.
{@link #ImageView_baselineAlignBottom android:baselineAlignBottom} If true, the image view will be baseline aligned with based on its + bottom edge.
{@link #ImageView_cropToPadding android:cropToPadding} If true, the image will be cropped to fit within its padding.
{@link #ImageView_drawableAlpha android:drawableAlpha} @hide The alpha value (0-255) set on the ImageView's drawable.
{@link #ImageView_maxHeight android:maxHeight} An optional argument to supply a maximum height for this view.
{@link #ImageView_maxWidth android:maxWidth} An optional argument to supply a maximum width for this view.
{@link #ImageView_scaleType android:scaleType} Controls how the image should be resized or moved to match the size + of this ImageView.
{@link #ImageView_src android:src} Sets a drawable as the content of this ImageView.
{@link #ImageView_tint android:tint} Set a tinting color for the image.
+ @see #ImageView_adjustViewBounds + @see #ImageView_baseline + @see #ImageView_baselineAlignBottom + @see #ImageView_cropToPadding + @see #ImageView_drawableAlpha + @see #ImageView_maxHeight + @see #ImageView_maxWidth + @see #ImageView_scaleType + @see #ImageView_src + @see #ImageView_tint + */ + public static final int[] ImageView = { + 0x01010119, 0x0101011d, 0x0101011e, 0x0101011f, + 0x01010120, 0x01010121, 0x01010122, 0x01010123, + 0x0101031c, 0x0101042f + }; + /** +

+ @attr description + Set this to true if you want the ImageView to adjust its bounds + to preserve the aspect ratio of its drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#adjustViewBounds}. + @attr name android:adjustViewBounds + */ + public static final int ImageView_adjustViewBounds = 2; + /** +

+ @attr description + The offset of the baseline within this view. See {see android.view.View#getBaseline} + for details + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baseline}. + @attr name android:baseline + */ + public static final int ImageView_baseline = 8; + /** +

+ @attr description + If true, the image view will be baseline aligned with based on its + bottom edge. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAlignBottom}. + @attr name android:baselineAlignBottom + */ + public static final int ImageView_baselineAlignBottom = 6; + /** +

+ @attr description + If true, the image will be cropped to fit within its padding. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cropToPadding}. + @attr name android:cropToPadding + */ + public static final int ImageView_cropToPadding = 7; + /** +

+ @attr description + @hide The alpha value (0-255) set on the ImageView's drawable. Equivalent + to calling ImageView.setAlpha(int), not the same as View.setAlpha(float). + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:drawableAlpha + */ + public static final int ImageView_drawableAlpha = 9; + /** +

+ @attr description + An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int ImageView_maxHeight = 4; + /** +

+ @attr description + An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int ImageView_maxWidth = 3; + /** +

+ @attr description + Controls how the image should be resized or moved to match the size + of this ImageView. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
matrix0
fitXY1
fitStart2
fitCenter3
fitEnd4
center5
centerCrop6
centerInside7
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleType}. + @attr name android:scaleType + */ + public static final int ImageView_scaleType = 1; + /** +

+ @attr description + Sets a drawable as the content of this ImageView. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int ImageView_src = 0; + /** +

+ @attr description + Set a tinting color for the image. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tint}. + @attr name android:tint + */ + public static final int ImageView_tint = 5; + /** An input-extras is a container for extra data to supply to + an input method. Contains + one more more {@link #Extra } tags. + */ + public static final int[] InputExtras = { + + }; + /** Use input-method as the root tag of the XML resource that + describes an + {@link android.view.inputmethod.InputMethod} service, which is + referenced from its + {@link android.view.inputmethod.InputMethod#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #InputMethod_isDefault android:isDefault} Set to true in all of the configurations for which this input + method should be considered an option as the default.
{@link #InputMethod_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
{@link #InputMethod_supportsSwitchingToNextInputMethod android:supportsSwitchingToNextInputMethod} Set to true if this input method supports ways to switch to + a next input method (e.
+ @see #InputMethod_isDefault + @see #InputMethod_settingsActivity + @see #InputMethod_supportsSwitchingToNextInputMethod + */ + public static final int[] InputMethod = { + 0x01010221, 0x01010225, 0x010103eb + }; + /** +

+ @attr description + Set to true in all of the configurations for which this input + method should be considered an option as the default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isDefault}. + @attr name android:isDefault + */ + public static final int InputMethod_isDefault = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int InputMethod_settingsActivity = 1; + /** +

+ @attr description + Set to true if this input method supports ways to switch to + a next input method (e.g. a globe key.). When this is true and + InputMethodManager#shouldOfferSwitchingToNextInputMethod() returns true, + the IME has to offer ways to to invoke InputMethodManager#switchToNextInputMethod() + accordingly. +

Note that the system determines the most appropriate next input method + and subtype in order to provide the consistent user experience in switching + between IMEs and subtypes. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#supportsSwitchingToNextInputMethod}. + @attr name android:supportsSwitchingToNextInputMethod + */ + public static final int InputMethod_supportsSwitchingToNextInputMethod = 2; + /** Attributes that can be used with a InputMethodService. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #InputMethodService_imeExtractEnterAnimation android:imeExtractEnterAnimation} Animation to use when showing the fullscreen extract UI after + it had previously been hidden.
{@link #InputMethodService_imeExtractExitAnimation android:imeExtractExitAnimation} Animation to use when hiding the fullscreen extract UI after + it had previously been shown.
{@link #InputMethodService_imeFullscreenBackground android:imeFullscreenBackground} Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application.
+ @see #InputMethodService_imeExtractEnterAnimation + @see #InputMethodService_imeExtractExitAnimation + @see #InputMethodService_imeFullscreenBackground + */ + public static final int[] InputMethodService = { + 0x0101022c, 0x01010268, 0x01010269 + }; + /** +

+ @attr description + Animation to use when showing the fullscreen extract UI after + it had previously been hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeExtractEnterAnimation}. + @attr name android:imeExtractEnterAnimation + */ + public static final int InputMethodService_imeExtractEnterAnimation = 1; + /** +

+ @attr description + Animation to use when hiding the fullscreen extract UI after + it had previously been shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeExtractExitAnimation}. + @attr name android:imeExtractExitAnimation + */ + public static final int InputMethodService_imeExtractExitAnimation = 2; + /** +

+ @attr description + Background to use for entire input method when it is being + shown in fullscreen mode with the extract view, to ensure + that it completely covers the application. This allows, + for example, the candidate view to be hidden + while in fullscreen mode without having the application show through + behind it. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeFullscreenBackground}. + @attr name android:imeFullscreenBackground + */ + public static final int InputMethodService_imeFullscreenBackground = 0; + /** This is the subtype of InputMethod. Subtype can describe locales (e.g. en_US, fr_FR...) + and modes (e.g. voice, keyboard...), and is used for IME switch. This subtype allows + the system to call the specified subtype of the IME directly. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #InputMethod_Subtype_icon android:icon} The icon of the subtype.
{@link #InputMethod_Subtype_imeSubtypeExtraValue android:imeSubtypeExtraValue} The extra value of the subtype.
{@link #InputMethod_Subtype_imeSubtypeLocale android:imeSubtypeLocale} The locale of the subtype.
{@link #InputMethod_Subtype_imeSubtypeMode android:imeSubtypeMode} The mode of the subtype.
{@link #InputMethod_Subtype_isAsciiCapable android:isAsciiCapable} Set to true if this subtype is ASCII capable.
{@link #InputMethod_Subtype_isAuxiliary android:isAuxiliary} Set true if the subtype is auxiliary.
{@link #InputMethod_Subtype_label android:label} The name of the subtype.
{@link #InputMethod_Subtype_overridesImplicitlyEnabledSubtype android:overridesImplicitlyEnabledSubtype} Set true when this subtype should be selected by default if no other subtypes are + selected explicitly.
{@link #InputMethod_Subtype_subtypeId android:subtypeId} The unique id for the subtype.
+ @see #InputMethod_Subtype_icon + @see #InputMethod_Subtype_imeSubtypeExtraValue + @see #InputMethod_Subtype_imeSubtypeLocale + @see #InputMethod_Subtype_imeSubtypeMode + @see #InputMethod_Subtype_isAsciiCapable + @see #InputMethod_Subtype_isAuxiliary + @see #InputMethod_Subtype_label + @see #InputMethod_Subtype_overridesImplicitlyEnabledSubtype + @see #InputMethod_Subtype_subtypeId + */ + public static final int[] InputMethod_Subtype = { + 0x01010001, 0x01010002, 0x010102ec, 0x010102ed, + 0x010102ee, 0x0101037f, 0x010103a2, 0x010103c1, + 0x010103e9 + }; + /** +

+ @attr description + The icon of the subtype. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int InputMethod_Subtype_icon = 1; + /** +

+ @attr description + The extra value of the subtype. This string can be any string and will be passed to + the IME when the framework calls the IME with the subtype. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeExtraValue}. + @attr name android:imeSubtypeExtraValue + */ + public static final int InputMethod_Subtype_imeSubtypeExtraValue = 4; + /** +

+ @attr description + The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + and will be passed to the IME when the framework calls the IME + with the subtype. This is also used by the framework to know the supported locales + of the IME. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeLocale}. + @attr name android:imeSubtypeLocale + */ + public static final int InputMethod_Subtype_imeSubtypeLocale = 2; + /** +

+ @attr description + The mode of the subtype. This string can be a mode (e.g. voice, keyboard...) and this + string will be passed to the IME when the framework calls the IME with the + subtype. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeSubtypeMode}. + @attr name android:imeSubtypeMode + */ + public static final int InputMethod_Subtype_imeSubtypeMode = 3; + /** +

+ @attr description + Set to true if this subtype is ASCII capable. If the subtype is ASCII + capable, it should guarantee that the user can input ASCII characters with + this subtype. This is important because many password fields only allow + ASCII-characters. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAsciiCapable}. + @attr name android:isAsciiCapable + */ + public static final int InputMethod_Subtype_isAsciiCapable = 8; + /** +

+ @attr description + Set true if the subtype is auxiliary. An auxiliary subtype won't be shown in the + input method selection list in the settings app. + InputMethodManager#switchToLastInputMethod will ignore auxiliary subtypes when it + chooses a target subtype. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAuxiliary}. + @attr name android:isAuxiliary + */ + public static final int InputMethod_Subtype_isAuxiliary = 5; + /** +

+ @attr description + The name of the subtype. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int InputMethod_Subtype_label = 0; + /** +

+ @attr description + Set true when this subtype should be selected by default if no other subtypes are + selected explicitly. Note that a subtype with this parameter being true will + not be shown in the subtypes list. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overridesImplicitlyEnabledSubtype}. + @attr name android:overridesImplicitlyEnabledSubtype + */ + public static final int InputMethod_Subtype_overridesImplicitlyEnabledSubtype = 6; + /** +

+ @attr description + The unique id for the subtype. The input method framework keeps track of enabled + subtypes by ID. When the IME package gets upgraded, enabled IDs will stay enabled even + if other attributes are different. If the ID is unspecified (by calling the other + constructor or 0. Arrays.hashCode(new Object[] {locale, mode, extraValue, + isAuxiliary, overridesImplicitlyEnabledSubtype}) will be used instead. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeId}. + @attr name android:subtypeId + */ + public static final int InputMethod_Subtype_subtypeId = 7; + /** Attributes that can be used with a InsetDrawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #InsetDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #InsetDrawable_insetBottom android:insetBottom}
{@link #InsetDrawable_insetLeft android:insetLeft}
{@link #InsetDrawable_insetRight android:insetRight}
{@link #InsetDrawable_insetTop android:insetTop}
{@link #InsetDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #InsetDrawable_drawable + @see #InsetDrawable_insetBottom + @see #InsetDrawable_insetLeft + @see #InsetDrawable_insetRight + @see #InsetDrawable_insetTop + @see #InsetDrawable_visible + */ + public static final int[] InsetDrawable = { + 0x01010194, 0x01010199, 0x010101b7, 0x010101b8, + 0x010101b9, 0x010101ba + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int InsetDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link android.R.attr#insetBottom} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetBottom + */ + public static final int InsetDrawable_insetBottom = 5; + /** +

This symbol is the offset where the {@link android.R.attr#insetLeft} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetLeft + */ + public static final int InsetDrawable_insetLeft = 2; + /** +

This symbol is the offset where the {@link android.R.attr#insetRight} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetRight + */ + public static final int InsetDrawable_insetRight = 3; + /** +

This symbol is the offset where the {@link android.R.attr#insetTop} + attribute's value can be found in the {@link #InsetDrawable} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:insetTop + */ + public static final int InsetDrawable_insetTop = 4; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int InsetDrawable_visible = 0; + /** Declaration of an {@link android.content.Intent} object in XML. May + also include zero or more {@link #IntentCategory and + {@link #Extra } tags. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #Intent_action android:action} The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}.
{@link #Intent_data android:data} The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}.
{@link #Intent_mimeType android:mimeType} The MIME type name to assign to the Intent, as per + {@link android.content.Intent#setType Intent.setType()}.
{@link #Intent_targetClass android:targetClass} The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}.
{@link #Intent_targetPackage android:targetPackage} The package part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}.
+ @see #Intent_action + @see #Intent_data + @see #Intent_mimeType + @see #Intent_targetClass + @see #Intent_targetPackage + */ + public static final int[] Intent = { + 0x01010021, 0x01010026, 0x0101002d, 0x0101002e, + 0x0101002f + }; + /** +

+ @attr description + The action name to assign to the Intent, as per + {@link android.content.Intent#setAction Intent.setAction()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#action}. + @attr name android:action + */ + public static final int Intent_action = 2; + /** +

+ @attr description + The data URI to assign to the Intent, as per + {@link android.content.Intent#setData Intent.setData()}. +

Note: scheme and host name matching in the Android framework is + case-sensitive, unlike the formal RFC. As a result, + URIs here should always be normalized to use lower case letters + for these elements (as well as other proper Uri normalization).

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#data}. + @attr name android:data + */ + public static final int Intent_data = 3; + /** +

+ @attr description + The MIME type name to assign to the Intent, as per + {@link android.content.Intent#setType Intent.setType()}. +

Note: MIME type matching in the Android framework is + case-sensitive, unlike formal RFC MIME types. As a result, + MIME types here should always use lower case letters.

+ + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mimeType}. + @attr name android:mimeType + */ + public static final int Intent_mimeType = 1; + /** +

+ @attr description + The class part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetClass}. + @attr name android:targetClass + */ + public static final int Intent_targetClass = 4; + /** +

+ @attr description + The package part of the ComponentName to assign to the Intent, as per + {@link android.content.Intent#setComponent Intent.setComponent()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetPackage}. + @attr name android:targetPackage + */ + public static final int Intent_targetPackage = 0; + /** A category to add to an Intent, as per + {@link android.content.Intent#addCategory Intent.addCategory()}. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #IntentCategory_name android:name} Required name of the category.
+ @see #IntentCategory_name + */ + public static final int[] IntentCategory = { + 0x01010003 + }; + /** +

+ @attr description + Required name of the category. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int IntentCategory_name = 0; + /** Attributes that can be used with a KeySet. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #KeySet_name android:name} A unique name for the given item.
+ @see #KeySet_name + */ + public static final int[] KeySet = { + 0x01010003 + }; + /** +

+ @attr description + A unique name for the given item. This must use a Java-style naming + convention to ensure the name is unique, for example + "com.mycompany.MyName". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int KeySet_name = 0; + /** Attributes that can be used with a Keyboard. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Keyboard_horizontalGap android:horizontalGap} Default horizontal gap between keys.
{@link #Keyboard_keyHeight android:keyHeight} Default height of a key, in pixels or percentage of display width.
{@link #Keyboard_keyWidth android:keyWidth} Default width of a key, in pixels or percentage of display width.
{@link #Keyboard_verticalGap android:verticalGap} Default vertical gap between rows of keys.
+ @see #Keyboard_horizontalGap + @see #Keyboard_keyHeight + @see #Keyboard_keyWidth + @see #Keyboard_verticalGap + */ + public static final int[] Keyboard = { + 0x0101023d, 0x0101023e, 0x0101023f, 0x01010240 + }; + /** +

+ @attr description + Default horizontal gap between keys. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalGap}. + @attr name android:horizontalGap + */ + public static final int Keyboard_horizontalGap = 2; + /** +

+ @attr description + Default height of a key, in pixels or percentage of display width. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyHeight}. + @attr name android:keyHeight + */ + public static final int Keyboard_keyHeight = 1; + /** +

+ @attr description + Default width of a key, in pixels or percentage of display width. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyWidth}. + @attr name android:keyWidth + */ + public static final int Keyboard_keyWidth = 0; + /** +

+ @attr description + Default vertical gap between rows of keys. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalGap}. + @attr name android:verticalGap + */ + public static final int Keyboard_verticalGap = 3; + /** Use keyboard-layouts as the root tag of the XML resource that + describes a collection of keyboard layouts provided by an application. + Each keyboard layout is declared by a keyboard-layout tag + with these attributes. + + The XML resource that contains the keyboard layouts must be referenced from its + {@link android.hardware.input.InputManager#META_DATA_KEYBOARD_LAYOUTS} + meta-data entry used with broadcast receivers for + {@link android.hardware.input.InputManager#ACTION_QUERY_KEYBOARD_LAYOUTS}. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #KeyboardLayout_keyboardLayout android:keyboardLayout} The key character map file resource.
{@link #KeyboardLayout_label android:label} The display label of the keyboard layout.
{@link #KeyboardLayout_name android:name} The name of the keyboard layout, must be unique in the receiver.
+ @see #KeyboardLayout_keyboardLayout + @see #KeyboardLayout_label + @see #KeyboardLayout_name + */ + public static final int[] KeyboardLayout = { + 0x01010001, 0x01010003, 0x010103ab + }; + /** +

+ @attr description + The key character map file resource. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardLayout}. + @attr name android:keyboardLayout + */ + public static final int KeyboardLayout_keyboardLayout = 2; + /** +

+ @attr description + The display label of the keyboard layout. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int KeyboardLayout_label = 0; + /** +

+ @attr description + The name of the keyboard layout, must be unique in the receiver. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#name}. + @attr name android:name + */ + public static final int KeyboardLayout_name = 1; + /** Attributes that can be used with a KeyboardView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #KeyboardView_keyBackground android:keyBackground} Image for the key.
{@link #KeyboardView_keyPreviewHeight android:keyPreviewHeight} Height of the key press feedback popup.
{@link #KeyboardView_keyPreviewLayout android:keyPreviewLayout} Layout resource for key press feedback.
{@link #KeyboardView_keyPreviewOffset android:keyPreviewOffset} Vertical offset of the key press feedback from the key.
{@link #KeyboardView_keyTextColor android:keyTextColor} Color to use for the label in a key.
{@link #KeyboardView_keyTextSize android:keyTextSize} Size of the text for character keys.
{@link #KeyboardView_keyboardViewStyle android:keyboardViewStyle} Default KeyboardView style.
{@link #KeyboardView_labelTextSize android:labelTextSize} Size of the text for custom keys with some text and no icon.
{@link #KeyboardView_popupLayout android:popupLayout} Layout resource for popup keyboards.
{@link #KeyboardView_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #KeyboardView_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #KeyboardView_verticalCorrection android:verticalCorrection} Amount to offset the touch Y coordinate by, for bias correction.
+ @see #KeyboardView_keyBackground + @see #KeyboardView_keyPreviewHeight + @see #KeyboardView_keyPreviewLayout + @see #KeyboardView_keyPreviewOffset + @see #KeyboardView_keyTextColor + @see #KeyboardView_keyTextSize + @see #KeyboardView_keyboardViewStyle + @see #KeyboardView_labelTextSize + @see #KeyboardView_popupLayout + @see #KeyboardView_shadowColor + @see #KeyboardView_shadowRadius + @see #KeyboardView_verticalCorrection + */ + public static final int[] KeyboardView = { + 0x01010161, 0x01010164, 0x01010233, 0x01010234, + 0x01010235, 0x01010236, 0x01010237, 0x01010238, + 0x01010239, 0x0101023a, 0x0101023b, 0x0101044f + }; + /** +

+ @attr description + Image for the key. This image needs to be a StateListDrawable, with the following + possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, + checkable+checked+pressed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyBackground}. + @attr name android:keyBackground + */ + public static final int KeyboardView_keyBackground = 2; + /** +

+ @attr description + Height of the key press feedback popup. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewHeight}. + @attr name android:keyPreviewHeight + */ + public static final int KeyboardView_keyPreviewHeight = 8; + /** +

+ @attr description + Layout resource for key press feedback. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewLayout}. + @attr name android:keyPreviewLayout + */ + public static final int KeyboardView_keyPreviewLayout = 6; + /** +

+ @attr description + Vertical offset of the key press feedback from the key. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyPreviewOffset}. + @attr name android:keyPreviewOffset + */ + public static final int KeyboardView_keyPreviewOffset = 7; + /** +

+ @attr description + Color to use for the label in a key. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyTextColor}. + @attr name android:keyTextColor + */ + public static final int KeyboardView_keyTextColor = 5; + /** +

+ @attr description + Size of the text for character keys. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyTextSize}. + @attr name android:keyTextSize + */ + public static final int KeyboardView_keyTextSize = 3; + /** +

+ @attr description + Default KeyboardView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:keyboardViewStyle + */ + public static final int KeyboardView_keyboardViewStyle = 11; + /** +

+ @attr description + Size of the text for custom keys with some text and no icon. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#labelTextSize}. + @attr name android:labelTextSize + */ + public static final int KeyboardView_labelTextSize = 4; + /** +

+ @attr description + Layout resource for popup keyboards. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupLayout}. + @attr name android:popupLayout + */ + public static final int KeyboardView_popupLayout = 10; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int KeyboardView_shadowColor = 0; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int KeyboardView_shadowRadius = 1; + /** +

+ @attr description + Amount to offset the touch Y coordinate by, for bias correction. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalCorrection}. + @attr name android:verticalCorrection + */ + public static final int KeyboardView_verticalCorrection = 9; + /** Attributes that can be used with a KeyboardViewPreviewState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #KeyboardViewPreviewState_state_long_pressable android:state_long_pressable} State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background.
+ @see #KeyboardViewPreviewState_state_long_pressable + */ + public static final int[] KeyboardViewPreviewState = { + 0x0101023c + }; + /** +

+ @attr description + State for {@link android.inputmethodservice.KeyboardView KeyboardView} + key preview background. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_long_pressable}. + @attr name android:state_long_pressable + */ + public static final int KeyboardViewPreviewState_state_long_pressable = 0; + /** Attributes that can be used with a Keyboard_Key. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Keyboard_Key_codes android:codes} The unicode value or comma-separated values that this key outputs.
{@link #Keyboard_Key_iconPreview android:iconPreview} The icon to show in the popup preview.
{@link #Keyboard_Key_isModifier android:isModifier} Whether this is a modifier key such as Alt or Shift.
{@link #Keyboard_Key_isRepeatable android:isRepeatable} Whether long-pressing on this key will make it repeat.
{@link #Keyboard_Key_isSticky android:isSticky} Whether this is a toggle key.
{@link #Keyboard_Key_keyEdgeFlags android:keyEdgeFlags} Key edge flags.
{@link #Keyboard_Key_keyIcon android:keyIcon} The icon to display on the key instead of the label.
{@link #Keyboard_Key_keyLabel android:keyLabel} The label to display on the key.
{@link #Keyboard_Key_keyOutputText android:keyOutputText} The string of characters to output when this key is pressed.
{@link #Keyboard_Key_keyboardMode android:keyboardMode} Mode of the keyboard.
{@link #Keyboard_Key_popupCharacters android:popupCharacters} The characters to display in the popup keyboard.
{@link #Keyboard_Key_popupKeyboard android:popupKeyboard} The XML keyboard layout of any popup keyboard.
+ @see #Keyboard_Key_codes + @see #Keyboard_Key_iconPreview + @see #Keyboard_Key_isModifier + @see #Keyboard_Key_isRepeatable + @see #Keyboard_Key_isSticky + @see #Keyboard_Key_keyEdgeFlags + @see #Keyboard_Key_keyIcon + @see #Keyboard_Key_keyLabel + @see #Keyboard_Key_keyOutputText + @see #Keyboard_Key_keyboardMode + @see #Keyboard_Key_popupCharacters + @see #Keyboard_Key_popupKeyboard + */ + public static final int[] Keyboard_Key = { + 0x01010242, 0x01010243, 0x01010244, 0x01010245, + 0x01010246, 0x01010247, 0x01010248, 0x01010249, + 0x0101024a, 0x0101024b, 0x0101024c, 0x0101024d + }; + /** +

+ @attr description + The unicode value or comma-separated values that this key outputs. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#codes}. + @attr name android:codes + */ + public static final int Keyboard_Key_codes = 0; + /** +

+ @attr description + The icon to show in the popup preview. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#iconPreview}. + @attr name android:iconPreview + */ + public static final int Keyboard_Key_iconPreview = 7; + /** +

+ @attr description + Whether this is a modifier key such as Alt or Shift. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isModifier}. + @attr name android:isModifier + */ + public static final int Keyboard_Key_isModifier = 4; + /** +

+ @attr description + Whether long-pressing on this key will make it repeat. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isRepeatable}. + @attr name android:isRepeatable + */ + public static final int Keyboard_Key_isRepeatable = 6; + /** +

+ @attr description + Whether this is a toggle key. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isSticky}. + @attr name android:isSticky + */ + public static final int Keyboard_Key_isSticky = 5; + /** +

+ @attr description + Key edge flags. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
left1 Key is anchored to the left of the keyboard.
right2 Key is anchored to the right of the keyboard.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyEdgeFlags}. + @attr name android:keyEdgeFlags + */ + public static final int Keyboard_Key_keyEdgeFlags = 3; + /** +

+ @attr description + The icon to display on the key instead of the label. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyIcon}. + @attr name android:keyIcon + */ + public static final int Keyboard_Key_keyIcon = 10; + /** +

+ @attr description + The label to display on the key. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyLabel}. + @attr name android:keyLabel + */ + public static final int Keyboard_Key_keyLabel = 9; + /** +

+ @attr description + The string of characters to output when this key is pressed. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyOutputText}. + @attr name android:keyOutputText + */ + public static final int Keyboard_Key_keyOutputText = 8; + /** +

+ @attr description + Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the key will be skipped. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardMode}. + @attr name android:keyboardMode + */ + public static final int Keyboard_Key_keyboardMode = 11; + /** +

+ @attr description + The characters to display in the popup keyboard. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupCharacters}. + @attr name android:popupCharacters + */ + public static final int Keyboard_Key_popupCharacters = 2; + /** +

+ @attr description + The XML keyboard layout of any popup keyboard. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupKeyboard}. + @attr name android:popupKeyboard + */ + public static final int Keyboard_Key_popupKeyboard = 1; + /** Attributes that can be used with a Keyboard_Row. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #Keyboard_Row_keyboardMode android:keyboardMode} Mode of the keyboard.
{@link #Keyboard_Row_rowEdgeFlags android:rowEdgeFlags} Row edge flags.
+ @see #Keyboard_Row_keyboardMode + @see #Keyboard_Row_rowEdgeFlags + */ + public static final int[] Keyboard_Row = { + 0x01010241, 0x0101024d + }; + /** +

+ @attr description + Mode of the keyboard. If the mode doesn't match the + requested keyboard mode, the row will be skipped. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keyboardMode}. + @attr name android:keyboardMode + */ + public static final int Keyboard_Row_keyboardMode = 1; + /** +

+ @attr description + Row edge flags. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + +
ConstantValueDescription
top4 Row is anchored to the top of the keyboard.
bottom8 Row is anchored to the bottom of the keyboard.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#rowEdgeFlags}. + @attr name android:rowEdgeFlags + */ + public static final int Keyboard_Row_rowEdgeFlags = 0; + /** Attributes that can be used with a KeyguardGlowStripView. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #KeyguardGlowStripView_dotSize android:dotSize}
{@link #KeyguardGlowStripView_glowDot android:glowDot}
{@link #KeyguardGlowStripView_leftToRight android:leftToRight}
{@link #KeyguardGlowStripView_numDots android:numDots}
+ @see #KeyguardGlowStripView_dotSize + @see #KeyguardGlowStripView_glowDot + @see #KeyguardGlowStripView_leftToRight + @see #KeyguardGlowStripView_numDots + */ + public static final int[] KeyguardGlowStripView = { + 0x01010475, 0x01010476, 0x01010477, 0x01010478 + }; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#dotSize} + attribute's value can be found in the {@link #KeyguardGlowStripView} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:dotSize + */ + public static final int KeyguardGlowStripView_dotSize = 0; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#glowDot} + attribute's value can be found in the {@link #KeyguardGlowStripView} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:glowDot + */ + public static final int KeyguardGlowStripView_glowDot = 2; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#leftToRight} + attribute's value can be found in the {@link #KeyguardGlowStripView} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:leftToRight + */ + public static final int KeyguardGlowStripView_leftToRight = 3; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#numDots} + attribute's value can be found in the {@link #KeyguardGlowStripView} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:numDots + */ + public static final int KeyguardGlowStripView_numDots = 1; + /** Attributes that can be used with a KeyguardSecurityViewFlipper_Layout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #KeyguardSecurityViewFlipper_Layout_layout_maxHeight android:layout_maxHeight} The maximum valid height for this item.
{@link #KeyguardSecurityViewFlipper_Layout_layout_maxWidth android:layout_maxWidth}
+ @see #KeyguardSecurityViewFlipper_Layout_layout_maxHeight + @see #KeyguardSecurityViewFlipper_Layout_layout_maxWidth + */ + public static final int[] KeyguardSecurityViewFlipper_Layout = { + 0x0101045f, 0x0101047b + }; + /** +

+ @attr description + The maximum valid height for this item. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
unbounded-1 Indicates that the view may be resized arbitrarily large.
+

This is a private symbol. + @attr name com.android.internal:layout_maxHeight + */ + public static final int KeyguardSecurityViewFlipper_Layout_layout_maxHeight = 0; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#layout_maxWidth} + attribute's value can be found in the {@link #KeyguardSecurityViewFlipper_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:layout_maxWidth + */ + public static final int KeyguardSecurityViewFlipper_Layout_layout_maxWidth = 1; + /** Drawable used to render several drawables stacked on top of each other. + Each child drawable can be controlled individually. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #LayerDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #LayerDrawable_opacity android:opacity} Indicates the opacity of the layer.
+ @see #LayerDrawable_autoMirrored + @see #LayerDrawable_opacity + */ + public static final int[] LayerDrawable = { + 0x0101031e, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int LayerDrawable_autoMirrored = 1; + /** +

+ @attr description + Indicates the opacity of the layer. This can be useful to allow the + system to enable drawing optimizations. The default value is + translucent. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
opaque-1 Indicates that the layer is opaque and contains no transparent + nor translucent pixels.
transparent-2 The layer is completely transparent (no pixel will be drawn.)
translucent-3 The layer has translucent pixels.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#opacity}. + @attr name android:opacity + */ + public static final int LayerDrawable_opacity = 0; + /** Describes an item (or child) of a LayerDrawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #LayerDrawableItem_bottom android:bottom} Bottom coordinate of the layer.
{@link #LayerDrawableItem_drawable android:drawable} Drawable used to render the layer.
{@link #LayerDrawableItem_id android:id} Identifier of the layer.
{@link #LayerDrawableItem_left android:left} Left coordinate of the layer.
{@link #LayerDrawableItem_right android:right} Right coordinate of the layer.
{@link #LayerDrawableItem_top android:top} Top coordinate of the layer.
+ @see #LayerDrawableItem_bottom + @see #LayerDrawableItem_drawable + @see #LayerDrawableItem_id + @see #LayerDrawableItem_left + @see #LayerDrawableItem_right + @see #LayerDrawableItem_top + */ + public static final int[] LayerDrawableItem = { + 0x010100d0, 0x01010199, 0x010101ad, 0x010101ae, + 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Bottom coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int LayerDrawableItem_bottom = 5; + /** +

+ @attr description + Drawable used to render the layer. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int LayerDrawableItem_drawable = 1; + /** +

+ @attr description + Identifier of the layer. This can be used to retrieve the layer + from a drawbable container. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int LayerDrawableItem_id = 0; + /** +

+ @attr description + Left coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int LayerDrawableItem_left = 2; + /** +

+ @attr description + Right coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int LayerDrawableItem_right = 4; + /** +

+ @attr description + Top coordinate of the layer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int LayerDrawableItem_top = 3; + /** Attributes that can be used with a LayoutAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #LayoutAnimation_animation android:animation} Animation to use on each child.
{@link #LayoutAnimation_animationOrder android:animationOrder} The order in which the animations will be started.
{@link #LayoutAnimation_delay android:delay} Fraction of the animation duration used to delay the beginning of + the animation of each child.
{@link #LayoutAnimation_interpolator android:interpolator} Interpolator used to interpolate the delay between the start of + each animation.
+ @see #LayoutAnimation_animation + @see #LayoutAnimation_animationOrder + @see #LayoutAnimation_delay + @see #LayoutAnimation_interpolator + */ + public static final int[] LayoutAnimation = { + 0x01010141, 0x010101cc, 0x010101cd, 0x010101ce + }; + /** +

+ @attr description + Animation to use on each child. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animation}. + @attr name android:animation + */ + public static final int LayoutAnimation_animation = 2; + /** +

+ @attr description + The order in which the animations will be started. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Animations are started in the natural order.
reverse1 Animations are started in the reverse order.
random2 Animations are started randomly.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationOrder}. + @attr name android:animationOrder + */ + public static final int LayoutAnimation_animationOrder = 3; + /** +

+ @attr description + Fraction of the animation duration used to delay the beginning of + the animation of each child. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#delay}. + @attr name android:delay + */ + public static final int LayoutAnimation_delay = 1; + /** +

+ @attr description + Interpolator used to interpolate the delay between the start of + each animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int LayoutAnimation_interpolator = 0; + /** Attributes that can be used with a LevelListDrawableItem. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #LevelListDrawableItem_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #LevelListDrawableItem_maxLevel android:maxLevel} The maximum level allowed for this item.
{@link #LevelListDrawableItem_minLevel android:minLevel} The minimum level allowed for this item.
+ @see #LevelListDrawableItem_drawable + @see #LevelListDrawableItem_maxLevel + @see #LevelListDrawableItem_minLevel + */ + public static final int[] LevelListDrawableItem = { + 0x01010199, 0x010101b1, 0x010101b2 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int LevelListDrawableItem_drawable = 0; + /** +

+ @attr description + The maximum level allowed for this item. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLevel}. + @attr name android:maxLevel + */ + public static final int LevelListDrawableItem_maxLevel = 2; + /** +

+ @attr description + The minimum level allowed for this item. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minLevel}. + @attr name android:minLevel + */ + public static final int LevelListDrawableItem_minLevel = 1; + /** Attributes that can be used with a LinearLayout. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #LinearLayout_baselineAligned android:baselineAligned} When set to false, prevents the layout from aligning its children's + baselines.
{@link #LinearLayout_baselineAlignedChildIndex android:baselineAlignedChildIndex} When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView).
{@link #LinearLayout_divider android:divider} Drawable to use as a vertical divider between buttons.
{@link #LinearLayout_dividerPadding android:dividerPadding} Size of padding on either end of a divider.
{@link #LinearLayout_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #LinearLayout_measureWithLargestChild android:measureWithLargestChild} When set to true, all children with a weight will be considered having + the minimum size of the largest child.
{@link #LinearLayout_orientation android:orientation} Should the layout be a column or a row? Use "horizontal" + for a row, "vertical" for a column.
{@link #LinearLayout_showDividers android:showDividers} Setting for which dividers to show.
{@link #LinearLayout_weightSum android:weightSum} Defines the maximum weight sum.
+ @see #LinearLayout_baselineAligned + @see #LinearLayout_baselineAlignedChildIndex + @see #LinearLayout_divider + @see #LinearLayout_dividerPadding + @see #LinearLayout_gravity + @see #LinearLayout_measureWithLargestChild + @see #LinearLayout_orientation + @see #LinearLayout_showDividers + @see #LinearLayout_weightSum + */ + public static final int[] LinearLayout = { + 0x010100af, 0x010100c4, 0x01010126, 0x01010127, + 0x01010128, 0x01010129, 0x010102d4, 0x01010329, + 0x0101032a + }; + /** +

+ @attr description + When set to false, prevents the layout from aligning its children's + baselines. This attribute is particularly useful when the children + use different values for gravity. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAligned}. + @attr name android:baselineAligned + */ + public static final int LinearLayout_baselineAligned = 2; + /** +

+ @attr description + When a linear layout is part of another layout that is baseline + aligned, it can specify which of its children to baseline align to + (that is, which child TextView). + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#baselineAlignedChildIndex}. + @attr name android:baselineAlignedChildIndex + */ + public static final int LinearLayout_baselineAlignedChildIndex = 3; + /** +

+ @attr description + Drawable to use as a vertical divider between buttons. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int LinearLayout_divider = 5; + /** +

+ @attr description + Size of padding on either end of a divider. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerPadding}. + @attr name android:dividerPadding + */ + public static final int LinearLayout_dividerPadding = 8; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int LinearLayout_gravity = 0; + /** +

+ @attr description + When set to true, all children with a weight will be considered having + the minimum size of the largest child. If false, all children are + measured normally. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#measureWithLargestChild}. + @attr name android:measureWithLargestChild + */ + public static final int LinearLayout_measureWithLargestChild = 6; + /** +

+ @attr description + Should the layout be a column or a row? Use "horizontal" + for a row, "vertical" for a column. The default is + horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int LinearLayout_orientation = 1; + /** +

+ @attr description + Setting for which dividers to show. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0
beginning1
middle2
end4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#showDividers}. + @attr name android:showDividers + */ + public static final int LinearLayout_showDividers = 7; + /** +

+ @attr description + Defines the maximum weight sum. If unspecified, the sum is computed + by adding the layout_weight of all of the children. This can be + used for instance to give a single child 50% of the total available + space by giving it a layout_weight of 0.5 and setting the weightSum + to 1.0. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#weightSum}. + @attr name android:weightSum + */ + public static final int LinearLayout_weightSum = 4; + /** Attributes that can be used with a LinearLayout_Layout. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #LinearLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
{@link #LinearLayout_Layout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #LinearLayout_Layout_layout_weight android:layout_weight}
{@link #LinearLayout_Layout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #LinearLayout_Layout_layout_gravity + @see #LinearLayout_Layout_layout_height + @see #LinearLayout_Layout_layout_weight + @see #LinearLayout_Layout_layout_width + */ + public static final int[] LinearLayout_Layout = { + 0x010100b3, 0x010100f4, 0x010100f5, 0x01010181 + }; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int LinearLayout_Layout_layout_gravity = 0; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int LinearLayout_Layout_layout_height = 2; + /** +

This symbol is the offset where the {@link android.R.attr#layout_weight} + attribute's value can be found in the {@link #LinearLayout_Layout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_weight + */ + public static final int LinearLayout_Layout_layout_weight = 3; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int LinearLayout_Layout_layout_width = 1; + /** Base attributes available to ListPreference. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ListPreference_entries android:entries} The human-readable array to present as a list.
{@link #ListPreference_entryValues android:entryValues} The array to find the value to save for a preference when an entry from + entries is selected.
+ @see #ListPreference_entries + @see #ListPreference_entryValues + */ + public static final int[] ListPreference = { + 0x010100b2, 0x010101f8 + }; + /** +

+ @attr description + The human-readable array to present as a list. Each entry must have a corresponding + index in entryValues. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int ListPreference_entries = 0; + /** +

+ @attr description + The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks on the second item in entries, the + second item in this array will be saved to the preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entryValues}. + @attr name android:entryValues + */ + public static final int ListPreference_entryValues = 1; + /** Attributes that can be used with a ListView. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #ListView_divider android:divider} Drawable or color to draw between list items.
{@link #ListView_dividerHeight android:dividerHeight} Height of the divider.
{@link #ListView_entries android:entries} Reference to an array resource that will populate the ListView.
{@link #ListView_footerDividersEnabled android:footerDividersEnabled} When set to false, the ListView will not draw the divider before each footer view.
{@link #ListView_headerDividersEnabled android:headerDividersEnabled} When set to false, the ListView will not draw the divider after each header view.
{@link #ListView_overScrollFooter android:overScrollFooter} Drawable to draw below list content.
{@link #ListView_overScrollHeader android:overScrollHeader} Drawable to draw above list content.
+ @see #ListView_divider + @see #ListView_dividerHeight + @see #ListView_entries + @see #ListView_footerDividersEnabled + @see #ListView_headerDividersEnabled + @see #ListView_overScrollFooter + @see #ListView_overScrollHeader + */ + public static final int[] ListView = { + 0x010100b2, 0x01010129, 0x0101012a, 0x0101022e, + 0x0101022f, 0x010102c2, 0x010102c3 + }; + /** +

+ @attr description + Drawable or color to draw between list items. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int ListView_divider = 1; + /** +

+ @attr description + Height of the divider. Will use the intrinsic height of the divider if this + is not specified. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerHeight}. + @attr name android:dividerHeight + */ + public static final int ListView_dividerHeight = 2; + /** +

+ @attr description + Reference to an array resource that will populate the ListView. For static content, + this is simpler than populating the ListView programmatically. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int ListView_entries = 0; + /** +

+ @attr description + When set to false, the ListView will not draw the divider before each footer view. + The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#footerDividersEnabled}. + @attr name android:footerDividersEnabled + */ + public static final int ListView_footerDividersEnabled = 4; + /** +

+ @attr description + When set to false, the ListView will not draw the divider after each header view. + The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#headerDividersEnabled}. + @attr name android:headerDividersEnabled + */ + public static final int ListView_headerDividersEnabled = 3; + /** +

+ @attr description + Drawable to draw below list content. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollFooter}. + @attr name android:overScrollFooter + */ + public static final int ListView_overScrollFooter = 6; + /** +

+ @attr description + Drawable to draw above list content. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollHeader}. + @attr name android:overScrollHeader + */ + public static final int ListView_overScrollHeader = 5; + /** Attributes that can be used with a LockPatternView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #LockPatternView_aspect android:aspect} Aspect to use when drawing LockPatternView.
+ @see #LockPatternView_aspect + */ + public static final int[] LockPatternView = { + 0x01010461 + }; + /** +

+ @attr description + Aspect to use when drawing LockPatternView. Choices are "square"(default), "lock_width" + or "lock_height" + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:aspect + */ + public static final int LockPatternView_aspect = 0; + /** The set of attributes for a MapView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MapView_apiKey android:apiKey} Value is a string that specifies the Maps API Key to use.
+ @see #MapView_apiKey + */ + public static final int[] MapView = { + 0x01010211 + }; + /** +

+ @attr description + Value is a string that specifies the Maps API Key to use. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apiKey}. + @attr name android:apiKey + */ + public static final int MapView_apiKey = 0; + /** Attributes that can be used with a MediaRouteButton. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #MediaRouteButton_externalRouteEnabledDrawable android:externalRouteEnabledDrawable} This drawable is a state list where the "activated" state + indicates active media routing.
{@link #MediaRouteButton_mediaRouteTypes android:mediaRouteTypes} The types of media routes the button and its resulting + chooser will filter by.
{@link #MediaRouteButton_minHeight android:minHeight}
{@link #MediaRouteButton_minWidth android:minWidth}
+ @see #MediaRouteButton_externalRouteEnabledDrawable + @see #MediaRouteButton_mediaRouteTypes + @see #MediaRouteButton_minHeight + @see #MediaRouteButton_minWidth + */ + public static final int[] MediaRouteButton = { + 0x0101013f, 0x01010140, 0x010103ae, 0x01010471 + }; + /** +

+ @attr description + This drawable is a state list where the "activated" state + indicates active media routing. Non-activated indicates + that media is playing to the local device only. + @hide + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:externalRouteEnabledDrawable + */ + public static final int MediaRouteButton_externalRouteEnabledDrawable = 3; + /** +

+ @attr description + The types of media routes the button and its resulting + chooser will filter by. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
liveAudio0x1 Allow selection of live audio routes.
user0x800000 Allow selection of user (app-specified) routes.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#mediaRouteTypes}. + @attr name android:mediaRouteTypes + */ + public static final int MediaRouteButton_mediaRouteTypes = 2; + /** +

This symbol is the offset where the {@link android.R.attr#minHeight} + attribute's value can be found in the {@link #MediaRouteButton} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minHeight + */ + public static final int MediaRouteButton_minHeight = 1; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #MediaRouteButton} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int MediaRouteButton_minWidth = 0; + /** Base attributes that are available to all Menu objects. + */ + public static final int[] Menu = { + + }; + /** Base attributes that are available to all groups. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #MenuGroup_checkableBehavior android:checkableBehavior} Whether the items are capable of displaying a check mark.
{@link #MenuGroup_enabled android:enabled} Whether the items are enabled.
{@link #MenuGroup_id android:id} The ID of the group.
{@link #MenuGroup_menuCategory android:menuCategory} The category applied to all items within this group.
{@link #MenuGroup_orderInCategory android:orderInCategory} The order within the category applied to all items within this group.
{@link #MenuGroup_visible android:visible} Whether the items are shown/visible.
+ @see #MenuGroup_checkableBehavior + @see #MenuGroup_enabled + @see #MenuGroup_id + @see #MenuGroup_menuCategory + @see #MenuGroup_orderInCategory + @see #MenuGroup_visible + */ + public static final int[] MenuGroup = { + 0x0101000e, 0x010100d0, 0x01010194, 0x010101de, + 0x010101df, 0x010101e0 + }; + /** +

+ @attr description + Whether the items are capable of displaying a check mark. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 The items are not checkable.
all1 The items are all checkable.
single2 The items are checkable and there will only be a single checked item in + this group.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkableBehavior}. + @attr name android:checkableBehavior + */ + public static final int MenuGroup_checkableBehavior = 5; + /** +

+ @attr description + Whether the items are enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int MenuGroup_enabled = 0; + /** +

+ @attr description + The ID of the group. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int MenuGroup_id = 1; + /** +

+ @attr description + The category applied to all items within this group. + (This will be or'ed with the orderInCategory attribute.) + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#menuCategory}. + @attr name android:menuCategory + */ + public static final int MenuGroup_menuCategory = 3; + /** +

+ @attr description + The order within the category applied to all items within this group. + (This will be or'ed with the category attribute.) + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderInCategory}. + @attr name android:orderInCategory + */ + public static final int MenuGroup_orderInCategory = 4; + /** +

+ @attr description + Whether the items are shown/visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int MenuGroup_visible = 2; + /** Base attributes that are available to all Item objects. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #MenuItem_actionLayout android:actionLayout} An optional layout to be used as an action view.
{@link #MenuItem_actionProviderClass android:actionProviderClass} The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item.
{@link #MenuItem_actionViewClass android:actionViewClass} The name of an optional View class to instantiate and use as an + action view.
{@link #MenuItem_alphabeticShortcut android:alphabeticShortcut} The alphabetic shortcut key.
{@link #MenuItem_checkable android:checkable} Whether the item is capable of displaying a check mark.
{@link #MenuItem_checked android:checked} Whether the item is checked.
{@link #MenuItem_enabled android:enabled} Whether the item is enabled.
{@link #MenuItem_icon android:icon} The icon associated with this item.
{@link #MenuItem_id android:id} The ID of the item.
{@link #MenuItem_menuCategory android:menuCategory} The category applied to the item.
{@link #MenuItem_numericShortcut android:numericShortcut} The numeric shortcut key.
{@link #MenuItem_onClick android:onClick} Name of a method on the Context used to inflate the menu that will be + called when the item is clicked.
{@link #MenuItem_orderInCategory android:orderInCategory} The order within the category applied to the item.
{@link #MenuItem_showAsAction android:showAsAction} How this item should display in the Action Bar, if present.
{@link #MenuItem_title android:title} The title associated with the item.
{@link #MenuItem_titleCondensed android:titleCondensed} The condensed title associated with the item.
{@link #MenuItem_visible android:visible} Whether the item is shown/visible.
+ @see #MenuItem_actionLayout + @see #MenuItem_actionProviderClass + @see #MenuItem_actionViewClass + @see #MenuItem_alphabeticShortcut + @see #MenuItem_checkable + @see #MenuItem_checked + @see #MenuItem_enabled + @see #MenuItem_icon + @see #MenuItem_id + @see #MenuItem_menuCategory + @see #MenuItem_numericShortcut + @see #MenuItem_onClick + @see #MenuItem_orderInCategory + @see #MenuItem_showAsAction + @see #MenuItem_title + @see #MenuItem_titleCondensed + @see #MenuItem_visible + */ + public static final int[] MenuItem = { + 0x01010002, 0x0101000e, 0x010100d0, 0x01010106, + 0x01010194, 0x010101de, 0x010101df, 0x010101e1, + 0x010101e2, 0x010101e3, 0x010101e4, 0x010101e5, + 0x0101026f, 0x010102d9, 0x010102fb, 0x010102fc, + 0x01010389 + }; + /** +

+ @attr description + An optional layout to be used as an action view. + See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionLayout}. + @attr name android:actionLayout + */ + public static final int MenuItem_actionLayout = 14; + /** +

+ @attr description + The name of an optional ActionProvider class to instantiate an action view + and perform operations such as default action for that menu item. + See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)} + for more info. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionProviderClass}. + @attr name android:actionProviderClass + */ + public static final int MenuItem_actionProviderClass = 16; + /** +

+ @attr description + The name of an optional View class to instantiate and use as an + action view. See {@link android.view.MenuItem#setActionView(android.view.View)} + for more info. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionViewClass}. + @attr name android:actionViewClass + */ + public static final int MenuItem_actionViewClass = 15; + /** +

+ @attr description + The alphabetic shortcut key. This is the shortcut when using a keyboard + with alphabetic keys. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alphabeticShortcut}. + @attr name android:alphabeticShortcut + */ + public static final int MenuItem_alphabeticShortcut = 9; + /** +

+ @attr description + Whether the item is capable of displaying a check mark. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkable}. + @attr name android:checkable + */ + public static final int MenuItem_checkable = 11; + /** +

+ @attr description + Whether the item is checked. Note that you must first have enabled checking with + the checkable attribute or else the check mark will not appear. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checked}. + @attr name android:checked + */ + public static final int MenuItem_checked = 3; + /** +

+ @attr description + Whether the item is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int MenuItem_enabled = 1; + /** +

+ @attr description + The icon associated with this item. This icon will not always be shown, so + the title should be sufficient in describing this item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int MenuItem_icon = 0; + /** +

+ @attr description + The ID of the item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int MenuItem_id = 2; + /** +

+ @attr description + The category applied to the item. + (This will be or'ed with the orderInCategory attribute.) + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
container0x00010000 Items are part of a container.
system0x00020000 Items are provided by the system.
secondary0x00030000 Items are user-supplied secondary (infrequently used).
alternative0x00040000 Items are alternative actions.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#menuCategory}. + @attr name android:menuCategory + */ + public static final int MenuItem_menuCategory = 5; + /** +

+ @attr description + The numeric shortcut key. This is the shortcut when using a numeric (e.g., 12-key) + keyboard. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#numericShortcut}. + @attr name android:numericShortcut + */ + public static final int MenuItem_numericShortcut = 10; + /** +

+ @attr description + Name of a method on the Context used to inflate the menu that will be + called when the item is clicked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#onClick}. + @attr name android:onClick + */ + public static final int MenuItem_onClick = 12; + /** +

+ @attr description + The order within the category applied to the item. + (This will be or'ed with the category attribute.) + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderInCategory}. + @attr name android:orderInCategory + */ + public static final int MenuItem_orderInCategory = 6; + /** +

+ @attr description + How this item should display in the Action Bar, if present. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
never0 Never show this item in an action bar, show it in the overflow menu instead. + Mutually exclusive with "ifRoom" and "always".
ifRoom1 Show this item in an action bar if there is room for it as determined + by the system. Favor this option over "always" where possible. + Mutually exclusive with "never" and "always".
always2 Always show this item in an actionbar, even if it would override + the system's limits of how much stuff to put there. This may make + your action bar look bad on some screens. In most cases you should + use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never".
withText4 When this item is shown as an action in the action bar, show a text + label with it even if it has an icon representation.
collapseActionView8 This item's action view collapses to a normal menu + item. When expanded, the action view takes over a + larger segment of its container.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#showAsAction}. + @attr name android:showAsAction + */ + public static final int MenuItem_showAsAction = 13; + /** +

+ @attr description + The title associated with the item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int MenuItem_title = 7; + /** +

+ @attr description + The condensed title associated with the item. This is used in situations where the + normal title may be too long to be displayed. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#titleCondensed}. + @attr name android:titleCondensed + */ + public static final int MenuItem_titleCondensed = 8; + /** +

+ @attr description + Whether the item is shown/visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int MenuItem_visible = 4; + /** State array representing a menu item that is currently focused and checked. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #MenuItemCheckedFocusedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemCheckedFocusedState_state_checked android:state_checked} State identifier indicating that the object is currently checked.
{@link #MenuItemCheckedFocusedState_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
+ @see #MenuItemCheckedFocusedState_state_checkable + @see #MenuItemCheckedFocusedState_state_checked + @see #MenuItemCheckedFocusedState_state_focused + */ + public static final int[] MenuItemCheckedFocusedState = { + 0x0101009c, 0x0101009f, 0x010100a0 + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemCheckedFocusedState_state_checkable = 1; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int MenuItemCheckedFocusedState_state_checked = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int MenuItemCheckedFocusedState_state_focused = 0; + /** State array representing a menu item that is currently checked. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MenuItemCheckedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemCheckedState_state_checked android:state_checked} State identifier indicating that the object is currently checked.
+ @see #MenuItemCheckedState_state_checkable + @see #MenuItemCheckedState_state_checked + */ + public static final int[] MenuItemCheckedState = { + 0x0101009f, 0x010100a0 + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemCheckedState_state_checkable = 0; + /** +

+ @attr description + State identifier indicating that the object is currently checked. See + {@link R.attr#state_checkable} for an additional identifier that can indicate if + any object may ever display a check, regardless of whether state_checked is + currently set. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checked}. + @attr name android:state_checked + */ + public static final int MenuItemCheckedState_state_checked = 1; + /** State array representing a menu item that is focused and checkable but is not currently checked. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MenuItemUncheckedFocusedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
{@link #MenuItemUncheckedFocusedState_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
+ @see #MenuItemUncheckedFocusedState_state_checkable + @see #MenuItemUncheckedFocusedState_state_focused + */ + public static final int[] MenuItemUncheckedFocusedState = { + 0x0101009c, 0x0101009f + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemUncheckedFocusedState_state_checkable = 1; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int MenuItemUncheckedFocusedState_state_focused = 0; + /** State array representing a menu item that is checkable but is not currently checked. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MenuItemUncheckedState_state_checkable android:state_checkable} State identifier indicating that the object may display a check mark.
+ @see #MenuItemUncheckedState_state_checkable + */ + public static final int[] MenuItemUncheckedState = { + 0x0101009f + }; + /** +

+ @attr description + State identifier indicating that the object may display a check mark. + See {@link R.attr#state_checked} for the identifier that indicates whether it is + actually checked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_checkable}. + @attr name android:state_checkable + */ + public static final int MenuItemUncheckedState_state_checkable = 0; + /** Attributes that can be used with a MenuView. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #MenuView_headerBackground android:headerBackground} Default background for the menu header.
{@link #MenuView_horizontalDivider android:horizontalDivider} Default horizontal divider between rows of menu items.
{@link #MenuView_itemBackground android:itemBackground} Default background for each menu item.
{@link #MenuView_itemIconDisabledAlpha android:itemIconDisabledAlpha} Default disabled icon alpha for each menu item that shows an icon.
{@link #MenuView_itemTextAppearance android:itemTextAppearance} Default appearance of menu item text.
{@link #MenuView_preserveIconSpacing android:preserveIconSpacing} Whether space should be reserved in layout when an icon is missing.
{@link #MenuView_verticalDivider android:verticalDivider} Default vertical divider between menu items.
{@link #MenuView_windowAnimationStyle android:windowAnimationStyle} Default animations for the menu.
+ @see #MenuView_headerBackground + @see #MenuView_horizontalDivider + @see #MenuView_itemBackground + @see #MenuView_itemIconDisabledAlpha + @see #MenuView_itemTextAppearance + @see #MenuView_preserveIconSpacing + @see #MenuView_verticalDivider + @see #MenuView_windowAnimationStyle + */ + public static final int[] MenuView = { + 0x010100ae, 0x0101012c, 0x0101012d, 0x0101012e, + 0x0101012f, 0x01010130, 0x01010131, 0x01010435 + }; + /** +

+ @attr description + Default background for the menu header. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#headerBackground}. + @attr name android:headerBackground + */ + public static final int MenuView_headerBackground = 4; + /** +

+ @attr description + Default horizontal divider between rows of menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalDivider}. + @attr name android:horizontalDivider + */ + public static final int MenuView_horizontalDivider = 2; + /** +

+ @attr description + Default background for each menu item. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemBackground}. + @attr name android:itemBackground + */ + public static final int MenuView_itemBackground = 5; + /** +

+ @attr description + Default disabled icon alpha for each menu item that shows an icon. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemIconDisabledAlpha}. + @attr name android:itemIconDisabledAlpha + */ + public static final int MenuView_itemIconDisabledAlpha = 6; + /** +

+ @attr description + Default appearance of menu item text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#itemTextAppearance}. + @attr name android:itemTextAppearance + */ + public static final int MenuView_itemTextAppearance = 1; + /** +

+ @attr description + Whether space should be reserved in layout when an icon is missing. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:preserveIconSpacing + */ + public static final int MenuView_preserveIconSpacing = 7; + /** +

+ @attr description + Default vertical divider between menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalDivider}. + @attr name android:verticalDivider + */ + public static final int MenuView_verticalDivider = 3; + /** +

+ @attr description + Default animations for the menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int MenuView_windowAnimationStyle = 0; + /** Attributes that can be used with a MultiPaneChallengeLayout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #MultiPaneChallengeLayout_orientation android:orientation} Influences how layout_centerWithinArea behaves
+ @see #MultiPaneChallengeLayout_orientation + */ + public static final int[] MultiPaneChallengeLayout = { + 0x010100c4 + }; + /** +

+ @attr description + Influences how layout_centerWithinArea behaves + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int MultiPaneChallengeLayout_orientation = 0; + /** Attributes that can be used with a MultiPaneChallengeLayout_Layout. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #MultiPaneChallengeLayout_Layout_layout_centerWithinArea android:layout_centerWithinArea} Percentage of the screen this child should consume or center within.
{@link #MultiPaneChallengeLayout_Layout_layout_childType android:layout_childType} Some child types have special behavior.
{@link #MultiPaneChallengeLayout_Layout_layout_gravity android:layout_gravity} Standard gravity constant that a child supplies to its parent.
{@link #MultiPaneChallengeLayout_Layout_layout_maxHeight android:layout_maxHeight} The maximum valid height for this item.
{@link #MultiPaneChallengeLayout_Layout_layout_maxWidth android:layout_maxWidth}
+ @see #MultiPaneChallengeLayout_Layout_layout_centerWithinArea + @see #MultiPaneChallengeLayout_Layout_layout_childType + @see #MultiPaneChallengeLayout_Layout_layout_gravity + @see #MultiPaneChallengeLayout_Layout_layout_maxHeight + @see #MultiPaneChallengeLayout_Layout_layout_maxWidth + */ + public static final int[] MultiPaneChallengeLayout_Layout = { + 0x010100b3, 0x0101045f, 0x01010479, 0x0101047a, + 0x0101047b + }; + /** +

+ @attr description + Percentage of the screen this child should consume or center within. + If 0/default, the view will be measured by standard rules + as if this were a FrameLayout. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:layout_centerWithinArea + */ + public static final int MultiPaneChallengeLayout_Layout_layout_centerWithinArea = 3; + /** +

+ @attr description + Some child types have special behavior. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
none0 No special behavior. Layout will proceed as normal.
widget1 Widget container. + This will be resized in response to certain events.
challenge2 Security challenge container. + This will be dismissed/shown in response to certain events, + possibly obscuring widget elements.
userSwitcher3 User switcher. + This will consume space from the total layout area.
scrim4 Scrim. This will block access to child views that + come before it in the child list in bouncer mode.
widgets5 The home for widgets. All widgets will be descendents of this.
expandChallengeHandle6 This is a handle that is used for expanding the + security challenge container when it is collapsed.
pageDeleteDropTarget7 Delete drop target. This will be the drop target to delete pages.
+

This is a private symbol. + @attr name com.android.internal:layout_childType + */ + public static final int MultiPaneChallengeLayout_Layout_layout_childType = 2; + /** +

+ @attr description + Standard gravity constant that a child supplies to its parent. + Defines how the child view should be positioned, on both the X and Y axes, within its enclosing layout. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_gravity}. + @attr name android:layout_gravity + */ + public static final int MultiPaneChallengeLayout_Layout_layout_gravity = 0; + /** +

+ @attr description + The maximum valid height for this item. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
unbounded-1 Indicates that the view may be resized arbitrarily large.
+

This is a private symbol. + @attr name com.android.internal:layout_maxHeight + */ + public static final int MultiPaneChallengeLayout_Layout_layout_maxHeight = 1; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#layout_maxWidth} + attribute's value can be found in the {@link #MultiPaneChallengeLayout_Layout} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:layout_maxWidth + */ + public static final int MultiPaneChallengeLayout_Layout_layout_maxWidth = 4; + /** Attributes that can be used with a MultiSelectListPreference. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #MultiSelectListPreference_entries android:entries} The human-readable array to present as a list.
{@link #MultiSelectListPreference_entryValues android:entryValues} The array to find the value to save for a preference when an entry from + entries is selected.
+ @see #MultiSelectListPreference_entries + @see #MultiSelectListPreference_entryValues + */ + public static final int[] MultiSelectListPreference = { + 0x010100b2, 0x010101f8 + }; + /** +

+ @attr description + The human-readable array to present as a list. Each entry must have a corresponding + index in entryValues. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entries}. + @attr name android:entries + */ + public static final int MultiSelectListPreference_entries = 0; + /** +

+ @attr description + The array to find the value to save for a preference when an entry from + entries is selected. If a user clicks the second item in entries, the + second item in this array will be saved to the preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#entryValues}. + @attr name android:entryValues + */ + public static final int MultiSelectListPreference_entryValues = 1; + /** Attributes that can be used with a MultiWaveView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #MultiWaveView_alwaysTrackFinger android:alwaysTrackFinger} Used when the handle shouldn't wait to be hit before following the finger
{@link #MultiWaveView_chevronDrawables android:chevronDrawables} Drawables to use for chevron animations.
{@link #MultiWaveView_directionDescriptions android:directionDescriptions} Reference to an array resource that be used to announce the directions with targets around the circle.
{@link #MultiWaveView_feedbackCount android:feedbackCount} Number of waves/chevrons to show in animation.
{@link #MultiWaveView_handleDrawable android:handleDrawable} Sets a drawable as the drag center.
{@link #MultiWaveView_outerRadius android:outerRadius} Outer radius of target circle.
{@link #MultiWaveView_snapMargin android:snapMargin} How close we need to be before snapping to a target.
{@link #MultiWaveView_targetDescriptions android:targetDescriptions} Reference to an array resource that be used as description for the targets around the circle.
{@link #MultiWaveView_targetDrawables android:targetDrawables} Reference to an array resource that be shown as targets around a circle.
{@link #MultiWaveView_vibrationDuration android:vibrationDuration} Tactile feedback duration for actions.
{@link #MultiWaveView_waveDrawable android:waveDrawable} Drawable to use for wave ripple animation.
+ @see #MultiWaveView_alwaysTrackFinger + @see #MultiWaveView_chevronDrawables + @see #MultiWaveView_directionDescriptions + @see #MultiWaveView_feedbackCount + @see #MultiWaveView_handleDrawable + @see #MultiWaveView_outerRadius + @see #MultiWaveView_snapMargin + @see #MultiWaveView_targetDescriptions + @see #MultiWaveView_targetDrawables + @see #MultiWaveView_vibrationDuration + @see #MultiWaveView_waveDrawable + */ + public static final int[] MultiWaveView = { + 0x010103a0, 0x010103a1, 0x01010456, 0x01010457, + 0x01010458, 0x01010459, 0x0101045a, 0x0101045b, + 0x0101045c, 0x0101045d, 0x0101045e + }; + /** +

+ @attr description + Used when the handle shouldn't wait to be hit before following the finger + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:alwaysTrackFinger + */ + public static final int MultiWaveView_alwaysTrackFinger = 10; + /** +

+ @attr description + Drawables to use for chevron animations. May be null. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:chevronDrawables + */ + public static final int MultiWaveView_chevronDrawables = 4; + /** +

+ @attr description + Reference to an array resource that be used to announce the directions with targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#directionDescriptions}. + @attr name android:directionDescriptions + */ + public static final int MultiWaveView_directionDescriptions = 1; + /** +

+ @attr description + Number of waves/chevrons to show in animation. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:feedbackCount + */ + public static final int MultiWaveView_feedbackCount = 9; + /** +

+ @attr description + Sets a drawable as the drag center. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:handleDrawable + */ + public static final int MultiWaveView_handleDrawable = 3; + /** +

+ @attr description + Outer radius of target circle. Icons will be drawn on this circle. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:outerRadius + */ + public static final int MultiWaveView_outerRadius = 6; + /** +

+ @attr description + How close we need to be before snapping to a target. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:snapMargin + */ + public static final int MultiWaveView_snapMargin = 8; + /** +

+ @attr description + Reference to an array resource that be used as description for the targets around the circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetDescriptions}. + @attr name android:targetDescriptions + */ + public static final int MultiWaveView_targetDescriptions = 0; + /** +

+ @attr description + Reference to an array resource that be shown as targets around a circle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:targetDrawables + */ + public static final int MultiWaveView_targetDrawables = 2; + /** +

+ @attr description + Tactile feedback duration for actions. Set to '0' for no vibration. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:vibrationDuration + */ + public static final int MultiWaveView_vibrationDuration = 7; + /** +

+ @attr description + Drawable to use for wave ripple animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:waveDrawable + */ + public static final int MultiWaveView_waveDrawable = 5; + /** Drawable used to draw 9-patches. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #NinePatchDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #NinePatchDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #NinePatchDrawable_src android:src} Identifier of the bitmap file.
+ @see #NinePatchDrawable_autoMirrored + @see #NinePatchDrawable_dither + @see #NinePatchDrawable_src + */ + public static final int[] NinePatchDrawable = { + 0x01010119, 0x0101011c, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int NinePatchDrawable_autoMirrored = 2; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int NinePatchDrawable_dither = 1; + /** +

+ @attr description + Identifier of the bitmap file. This attribute is mandatory. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#src}. + @attr name android:src + */ + public static final int NinePatchDrawable_src = 0; + /** Attributes that can be used with a NumPadKey. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #NumPadKey_digit android:digit}
{@link #NumPadKey_textView android:textView}
+ @see #NumPadKey_digit + @see #NumPadKey_textView + */ + public static final int[] NumPadKey = { + 0x0101047c, 0x0101047d + }; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#digit} + attribute's value can be found in the {@link #NumPadKey} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:digit + */ + public static final int NumPadKey_digit = 0; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#textView} + attribute's value can be found in the {@link #NumPadKey} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:textView + */ + public static final int NumPadKey_textView = 1; + /** Attributes that can be used with a NumberPicker. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #NumberPicker_internalLayout android:internalLayout} @hide The layout of the number picker.
{@link #NumberPicker_internalMaxHeight android:internalMaxHeight} @hide The max height of the NumberPicker.
{@link #NumberPicker_internalMaxWidth android:internalMaxWidth} @hide The max width of the NumberPicker.
{@link #NumberPicker_internalMinHeight android:internalMinHeight} @hide The min height of the NumberPicker.
{@link #NumberPicker_internalMinWidth android:internalMinWidth} @hide The min width of the NumberPicker.
{@link #NumberPicker_selectionDivider android:selectionDivider} @hide The divider for making the selection area.
{@link #NumberPicker_selectionDividerHeight android:selectionDividerHeight} @hide The height of the selection divider.
{@link #NumberPicker_selectionDividersDistance android:selectionDividersDistance} @hide The distance between the two selection dividers.
{@link #NumberPicker_solidColor android:solidColor} @hide Color for the solid color background if such for optimized rendering.
{@link #NumberPicker_virtualButtonPressedDrawable android:virtualButtonPressedDrawable} @hide The drawable for pressed virtual (increment/decrement) buttons.
+ @see #NumberPicker_internalLayout + @see #NumberPicker_internalMaxHeight + @see #NumberPicker_internalMaxWidth + @see #NumberPicker_internalMinHeight + @see #NumberPicker_internalMinWidth + @see #NumberPicker_selectionDivider + @see #NumberPicker_selectionDividerHeight + @see #NumberPicker_selectionDividersDistance + @see #NumberPicker_solidColor + @see #NumberPicker_virtualButtonPressedDrawable + */ + public static final int[] NumberPicker = { + 0x0101034a, 0x0101043c, 0x01010442, 0x01010443, + 0x01010444, 0x01010445, 0x01010446, 0x01010447, + 0x01010448, 0x01010449 + }; + /** +

+ @attr description + @hide The layout of the number picker. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:internalLayout + */ + public static final int NumberPicker_internalLayout = 1; + /** +

+ @attr description + @hide The max height of the NumberPicker. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:internalMaxHeight + */ + public static final int NumberPicker_internalMaxHeight = 6; + /** +

+ @attr description + @hide The max width of the NumberPicker. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:internalMaxWidth + */ + public static final int NumberPicker_internalMaxWidth = 8; + /** +

+ @attr description + @hide The min height of the NumberPicker. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:internalMinHeight + */ + public static final int NumberPicker_internalMinHeight = 5; + /** +

+ @attr description + @hide The min width of the NumberPicker. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:internalMinWidth + */ + public static final int NumberPicker_internalMinWidth = 7; + /** +

+ @attr description + @hide The divider for making the selection area. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:selectionDivider + */ + public static final int NumberPicker_selectionDivider = 2; + /** +

+ @attr description + @hide The height of the selection divider. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:selectionDividerHeight + */ + public static final int NumberPicker_selectionDividerHeight = 3; + /** +

+ @attr description + @hide The distance between the two selection dividers. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:selectionDividersDistance + */ + public static final int NumberPicker_selectionDividersDistance = 4; + /** +

+ @attr description + @hide Color for the solid color background if such for optimized rendering. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#solidColor}. + @attr name android:solidColor + */ + public static final int NumberPicker_solidColor = 0; + /** +

+ @attr description + @hide The drawable for pressed virtual (increment/decrement) buttons. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:virtualButtonPressedDrawable + */ + public static final int NumberPicker_virtualButtonPressedDrawable = 9; + /** Use offhost-apdu-service as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.OffHostApduService} + service, which is referenced from its + {@link android.nfc.cardemulation.OffHostApduService#SERVICE_META_DATA} entry. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #OffHostApduService_apduServiceBanner android:apduServiceBanner} A drawable that can be rendered in Android's system UI for representing + the service.
{@link #OffHostApduService_description android:description} Short description of the functionality the service implements.
+ @see #OffHostApduService_apduServiceBanner + @see #OffHostApduService_description + */ + public static final int[] OffHostApduService = { + 0x01010020, 0x010103ed + }; + /** +

+ @attr description + A drawable that can be rendered in Android's system UI for representing + the service. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#apduServiceBanner}. + @attr name android:apduServiceBanner + */ + public static final int OffHostApduService_apduServiceBanner = 1; + /** +

+ @attr description + Short description of the functionality the service implements. This attribute + is mandatory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int OffHostApduService_description = 0; + /** Attributes that can be used with a OvershootInterpolator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #OvershootInterpolator_tension android:tension} This is the amount of tension.
+ @see #OvershootInterpolator_tension + */ + public static final int[] OvershootInterpolator = { + 0x0101026a + }; + /** +

+ @attr description + This is the amount of tension. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tension}. + @attr name android:tension + */ + public static final int OvershootInterpolator_tension = 0; + /** PagedView specific attributes. These attributes are used to customize + a PagedView view in XML files. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #PagedView_pageSpacing android:pageSpacing} The space between adjacent pages of the PagedView.
{@link #PagedView_scrollIndicatorPaddingLeft android:scrollIndicatorPaddingLeft} The padding for the scroll indicator area
{@link #PagedView_scrollIndicatorPaddingRight android:scrollIndicatorPaddingRight}
+ @see #PagedView_pageSpacing + @see #PagedView_scrollIndicatorPaddingLeft + @see #PagedView_scrollIndicatorPaddingRight + */ + public static final int[] PagedView = { + 0x01010472, 0x01010473, 0x01010474 + }; + /** +

+ @attr description + The space between adjacent pages of the PagedView. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:pageSpacing + */ + public static final int PagedView_pageSpacing = 0; + /** +

+ @attr description + The padding for the scroll indicator area + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:scrollIndicatorPaddingLeft + */ + public static final int PagedView_scrollIndicatorPaddingLeft = 1; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#scrollIndicatorPaddingRight} + attribute's value can be found in the {@link #PagedView} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:scrollIndicatorPaddingRight + */ + public static final int PagedView_scrollIndicatorPaddingRight = 2; + /** Attributes that can be used with a Pointer. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Pointer_pointerIconArrow android:pointerIconArrow} Reference to a pointer icon drawable with STYLE_ARROW
{@link #Pointer_pointerIconSpotAnchor android:pointerIconSpotAnchor} Reference to a pointer icon drawable with STYLE_SPOT_ANCHOR
{@link #Pointer_pointerIconSpotHover android:pointerIconSpotHover} Reference to a pointer icon drawable with STYLE_SPOT_HOVER
{@link #Pointer_pointerIconSpotTouch android:pointerIconSpotTouch} Reference to a pointer icon drawable with STYLE_SPOT_TOUCH
+ @see #Pointer_pointerIconArrow + @see #Pointer_pointerIconSpotAnchor + @see #Pointer_pointerIconSpotHover + @see #Pointer_pointerIconSpotTouch + */ + public static final int[] Pointer = { + 0x01010462, 0x01010463, 0x01010464, 0x01010465 + }; + /** +

+ @attr description + Reference to a pointer icon drawable with STYLE_ARROW + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointerIconArrow + */ + public static final int Pointer_pointerIconArrow = 0; + /** +

+ @attr description + Reference to a pointer icon drawable with STYLE_SPOT_ANCHOR + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointerIconSpotAnchor + */ + public static final int Pointer_pointerIconSpotAnchor = 3; + /** +

+ @attr description + Reference to a pointer icon drawable with STYLE_SPOT_HOVER + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointerIconSpotHover + */ + public static final int Pointer_pointerIconSpotHover = 1; + /** +

+ @attr description + Reference to a pointer icon drawable with STYLE_SPOT_TOUCH + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointerIconSpotTouch + */ + public static final int Pointer_pointerIconSpotTouch = 2; + /** Attributes that can be used with a PointerIcon. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #PointerIcon_bitmap android:bitmap} Drawable to use as the icon bitmap.
{@link #PointerIcon_hotSpotX android:hotSpotX} X coordinate of the icon hot spot.
{@link #PointerIcon_hotSpotY android:hotSpotY} Y coordinate of the icon hot spot.
+ @see #PointerIcon_bitmap + @see #PointerIcon_hotSpotX + @see #PointerIcon_hotSpotY + */ + public static final int[] PointerIcon = { + 0x01010466, 0x01010467, 0x01010468 + }; + /** +

+ @attr description + Drawable to use as the icon bitmap. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:bitmap + */ + public static final int PointerIcon_bitmap = 0; + /** +

+ @attr description + X coordinate of the icon hot spot. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:hotSpotX + */ + public static final int PointerIcon_hotSpotX = 1; + /** +

+ @attr description + Y coordinate of the icon hot spot. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:hotSpotY + */ + public static final int PointerIcon_hotSpotY = 2; + /** Attributes that can be used with a PopupWindow. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #PopupWindow_popupAnimationStyle android:popupAnimationStyle}
{@link #PopupWindow_popupBackground android:popupBackground}
+ @see #PopupWindow_popupAnimationStyle + @see #PopupWindow_popupBackground + */ + public static final int[] PopupWindow = { + 0x01010176, 0x010102c9 + }; + /** +

This symbol is the offset where the {@link android.R.attr#popupAnimationStyle} + attribute's value can be found in the {@link #PopupWindow} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:popupAnimationStyle + */ + public static final int PopupWindow_popupAnimationStyle = 1; + /** +

This symbol is the offset where the {@link android.R.attr#popupBackground} + attribute's value can be found in the {@link #PopupWindow} array. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". + @attr name android:popupBackground + */ + public static final int PopupWindow_popupBackground = 0; + /** Attributes that can be used with a PopupWindowBackgroundState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PopupWindowBackgroundState_state_above_anchor android:state_above_anchor} State identifier indicating the popup will be above the anchor.
+ @see #PopupWindowBackgroundState_state_above_anchor + */ + public static final int[] PopupWindowBackgroundState = { + 0x010100aa + }; + /** +

+ @attr description + State identifier indicating the popup will be above the anchor. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_above_anchor}. + @attr name android:state_above_anchor + */ + public static final int PopupWindowBackgroundState_state_above_anchor = 0; + /** Base attributes available to Preference. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Preference_defaultValue android:defaultValue} The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage.
{@link #Preference_dependency android:dependency} The key of another Preference that this Preference will depend on.
{@link #Preference_enabled android:enabled} Whether the Preference is enabled.
{@link #Preference_fragment android:fragment} When used inside of a modern PreferenceActivity, this declares + a new PreferenceFragment to be shown when the user selects this item.
{@link #Preference_icon android:icon} The optional icon for the preference
{@link #Preference_key android:key} The key to store the Preference value.
{@link #Preference_layout android:layout} The layout for the Preference in a PreferenceActivity screen.
{@link #Preference_order android:order} The order for the Preference (lower values are to be ordered first).
{@link #Preference_persistent android:persistent} Whether the Preference stores its value to the shared preferences.
{@link #Preference_selectable android:selectable} Whether the Preference is selectable.
{@link #Preference_shouldDisableView android:shouldDisableView} Whether the view of this Preference should be disabled when + this Preference is disabled.
{@link #Preference_summary android:summary} The summary for the Preference in a PreferenceActivity screen.
{@link #Preference_title android:title} The title for the Preference in a PreferenceActivity screen.
{@link #Preference_widgetLayout android:widgetLayout} The layout for the controllable widget portion of a Preference.
+ @see #Preference_defaultValue + @see #Preference_dependency + @see #Preference_enabled + @see #Preference_fragment + @see #Preference_icon + @see #Preference_key + @see #Preference_layout + @see #Preference_order + @see #Preference_persistent + @see #Preference_selectable + @see #Preference_shouldDisableView + @see #Preference_summary + @see #Preference_title + @see #Preference_widgetLayout + */ + public static final int[] Preference = { + 0x01010002, 0x0101000d, 0x0101000e, 0x010100f2, + 0x010101e1, 0x010101e6, 0x010101e8, 0x010101e9, + 0x010101ea, 0x010101eb, 0x010101ec, 0x010101ed, + 0x010101ee, 0x010102e3 + }; + /** +

+ @attr description + The default value for the preference, which will be set either if persistence + is off or persistence is on and the preference is not found in the persistent + storage. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a floating point value, such as "1.2". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#defaultValue}. + @attr name android:defaultValue + */ + public static final int Preference_defaultValue = 11; + /** +

+ @attr description + The key of another Preference that this Preference will depend on. If the other + Preference is not set or is off, this Preference will be disabled. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dependency}. + @attr name android:dependency + */ + public static final int Preference_dependency = 10; + /** +

+ @attr description + Whether the Preference is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int Preference_enabled = 2; + /** +

+ @attr description + When used inside of a modern PreferenceActivity, this declares + a new PreferenceFragment to be shown when the user selects this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fragment}. + @attr name android:fragment + */ + public static final int Preference_fragment = 13; + /** +

+ @attr description + The optional icon for the preference + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Preference_icon = 0; + /** +

+ @attr description + The key to store the Preference value. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#key}. + @attr name android:key + */ + public static final int Preference_key = 6; + /** +

+ @attr description + The layout for the Preference in a PreferenceActivity screen. This should + rarely need to be changed, look at widgetLayout instead. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int Preference_layout = 3; + /** +

+ @attr description + The order for the Preference (lower values are to be ordered first). If this is not + specified, the default orderin will be alphabetic. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#order}. + @attr name android:order + */ + public static final int Preference_order = 8; + /** +

+ @attr description + Whether the Preference stores its value to the shared preferences. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistent}. + @attr name android:persistent + */ + public static final int Preference_persistent = 1; + /** +

+ @attr description + Whether the Preference is selectable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectable}. + @attr name android:selectable + */ + public static final int Preference_selectable = 5; + /** +

+ @attr description + Whether the view of this Preference should be disabled when + this Preference is disabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shouldDisableView}. + @attr name android:shouldDisableView + */ + public static final int Preference_shouldDisableView = 12; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summary}. + @attr name android:summary + */ + public static final int Preference_summary = 7; + /** +

+ @attr description + The title for the Preference in a PreferenceActivity screen. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int Preference_title = 4; + /** +

+ @attr description + The layout for the controllable widget portion of a Preference. This is inflated + into the layout for a Preference and should be used more frequently than + the layout attribute. For example, a checkbox preference would specify + a custom layout (consisting of just the CheckBox) here. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#widgetLayout}. + @attr name android:widgetLayout + */ + public static final int Preference_widgetLayout = 9; + /** Attributes that can be used with a PreferenceFrameLayout. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #PreferenceFrameLayout_borderBottom android:borderBottom} Padding to use at the bottom of the prefs content.
{@link #PreferenceFrameLayout_borderLeft android:borderLeft} Padding to use at the left of the prefs content.
{@link #PreferenceFrameLayout_borderRight android:borderRight} Padding to use at the right of the prefs content.
{@link #PreferenceFrameLayout_borderTop android:borderTop} Padding to use at the top of the prefs content.
+ @see #PreferenceFrameLayout_borderBottom + @see #PreferenceFrameLayout_borderLeft + @see #PreferenceFrameLayout_borderRight + @see #PreferenceFrameLayout_borderTop + */ + public static final int[] PreferenceFrameLayout = { + 0x01010430, 0x01010431, 0x01010432, 0x01010433 + }; + /** +

+ @attr description + Padding to use at the bottom of the prefs content. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:borderBottom + */ + public static final int PreferenceFrameLayout_borderBottom = 1; + /** +

+ @attr description + Padding to use at the left of the prefs content. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:borderLeft + */ + public static final int PreferenceFrameLayout_borderLeft = 2; + /** +

+ @attr description + Padding to use at the right of the prefs content. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:borderRight + */ + public static final int PreferenceFrameLayout_borderRight = 3; + /** +

+ @attr description + Padding to use at the top of the prefs content. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:borderTop + */ + public static final int PreferenceFrameLayout_borderTop = 0; + /** Attributes that can be used with a PreferenceFrameLayout_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PreferenceFrameLayout_Layout_layout_removeBorders android:layout_removeBorders} Padding to use at the top of the prefs content.
+ @see #PreferenceFrameLayout_Layout_layout_removeBorders + */ + public static final int[] PreferenceFrameLayout_Layout = { + 0x01010434 + }; + /** +

+ @attr description + Padding to use at the top of the prefs content. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:layout_removeBorders + */ + public static final int PreferenceFrameLayout_Layout_layout_removeBorders = 0; + /** Base attributes available to PreferenceGroup. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PreferenceGroup_orderingFromXml android:orderingFromXml} Whether to order the Preference under this group as they appear in the XML file.
+ @see #PreferenceGroup_orderingFromXml + */ + public static final int[] PreferenceGroup = { + 0x010101e7 + }; + /** +

+ @attr description + Whether to order the Preference under this group as they appear in the XML file. + If this is false, the ordering will follow the Preference order attribute and + default to alphabetic for those without the order attribute. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#orderingFromXml}. + @attr name android:orderingFromXml + */ + public static final int PreferenceGroup_orderingFromXml = 0; + /** Attribute for a header describing the item shown in the top-level list + from which the selects the set of preference to dig in to. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #PreferenceHeader_breadCrumbShortTitle android:breadCrumbShortTitle} The short title for the bread crumb of this item.
{@link #PreferenceHeader_breadCrumbTitle android:breadCrumbTitle} The title for the bread crumb of this item.
{@link #PreferenceHeader_fragment android:fragment} The fragment that is displayed when the user selects this item.
{@link #PreferenceHeader_icon android:icon} An icon for the item.
{@link #PreferenceHeader_id android:id} Identifier value for the header.
{@link #PreferenceHeader_summary android:summary} The summary for the item.
{@link #PreferenceHeader_title android:title} The title of the item that is shown to the user.
+ @see #PreferenceHeader_breadCrumbShortTitle + @see #PreferenceHeader_breadCrumbTitle + @see #PreferenceHeader_fragment + @see #PreferenceHeader_icon + @see #PreferenceHeader_id + @see #PreferenceHeader_summary + @see #PreferenceHeader_title + */ + public static final int[] PreferenceHeader = { + 0x01010002, 0x010100d0, 0x010101e1, 0x010101e9, + 0x010102e3, 0x01010303, 0x01010304 + }; + /** +

+ @attr description + The short title for the bread crumb of this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#breadCrumbShortTitle}. + @attr name android:breadCrumbShortTitle + */ + public static final int PreferenceHeader_breadCrumbShortTitle = 6; + /** +

+ @attr description + The title for the bread crumb of this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#breadCrumbTitle}. + @attr name android:breadCrumbTitle + */ + public static final int PreferenceHeader_breadCrumbTitle = 5; + /** +

+ @attr description + The fragment that is displayed when the user selects this item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fragment}. + @attr name android:fragment + */ + public static final int PreferenceHeader_fragment = 4; + /** +

+ @attr description + An icon for the item. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int PreferenceHeader_icon = 0; + /** +

+ @attr description + Identifier value for the header. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int PreferenceHeader_id = 1; + /** +

+ @attr description + The summary for the item. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summary}. + @attr name android:summary + */ + public static final int PreferenceHeader_summary = 3; + /** +

+ @attr description + The title of the item that is shown to the user. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int PreferenceHeader_title = 2; + /** Use print-service as the root tag of the XML resource that + describes an {@link android.printservice.PrintService} service, which is + referenced from its {@link android.printservice.PrintService#SERVICE_META_DATA} + meta-data entry. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #PrintService_addPrintersActivity android:addPrintersActivity} Fully qualified class name of an activity that allows the user to manually + add printers to this print service.
{@link #PrintService_advancedPrintOptionsActivity android:advancedPrintOptionsActivity} Fully qualified class name of an activity with advanced print options + specific to this print service.
{@link #PrintService_settingsActivity android:settingsActivity} Fully qualified class name of an activity that allows the user to modify + the settings for this service.
{@link #PrintService_vendor android:vendor} The vendor name if this print service is vendor specific.
+ @see #PrintService_addPrintersActivity + @see #PrintService_advancedPrintOptionsActivity + @see #PrintService_settingsActivity + @see #PrintService_vendor + */ + public static final int[] PrintService = { + 0x01010225, 0x010103e6, 0x010103e7, 0x010103f1 + }; + /** +

+ @attr description + Fully qualified class name of an activity that allows the user to manually + add printers to this print service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#addPrintersActivity}. + @attr name android:addPrintersActivity + */ + public static final int PrintService_addPrintersActivity = 1; + /** +

+ @attr description + Fully qualified class name of an activity with advanced print options + specific to this print service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#advancedPrintOptionsActivity}. + @attr name android:advancedPrintOptionsActivity + */ + public static final int PrintService_advancedPrintOptionsActivity = 3; + /** +

+ @attr description + Fully qualified class name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int PrintService_settingsActivity = 0; + /** +

+ @attr description + The vendor name if this print service is vendor specific. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#vendor}. + @attr name android:vendor + */ + public static final int PrintService_vendor = 2; + /** Attributes that can be used with a ProgressBar. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #ProgressBar_animationResolution android:animationResolution} Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.}
{@link #ProgressBar_indeterminate android:indeterminate} Allows to enable the indeterminate mode.
{@link #ProgressBar_indeterminateBehavior android:indeterminateBehavior} Defines how the indeterminate mode should behave when the progress + reaches max.
{@link #ProgressBar_indeterminateDrawable android:indeterminateDrawable} Drawable used for the indeterminate mode.
{@link #ProgressBar_indeterminateDuration android:indeterminateDuration} Duration of the indeterminate animation.
{@link #ProgressBar_indeterminateOnly android:indeterminateOnly} Restricts to ONLY indeterminate mode (state-keeping progress mode will not work).
{@link #ProgressBar_interpolator android:interpolator}
{@link #ProgressBar_max android:max} Defines the maximum value the progress can take.
{@link #ProgressBar_maxHeight android:maxHeight} An optional argument to supply a maximum height for this view.
{@link #ProgressBar_maxWidth android:maxWidth} An optional argument to supply a maximum width for this view.
{@link #ProgressBar_minHeight android:minHeight}
{@link #ProgressBar_minWidth android:minWidth}
{@link #ProgressBar_mirrorForRtl android:mirrorForRtl} Defines if the associated drawables need to be mirrored when in RTL mode.
{@link #ProgressBar_progress android:progress} Defines the default progress value, between 0 and max.
{@link #ProgressBar_progressDrawable android:progressDrawable} Drawable used for the progress mode.
{@link #ProgressBar_secondaryProgress android:secondaryProgress} Defines the secondary progress value, between 0 and max.
+ @see #ProgressBar_animationResolution + @see #ProgressBar_indeterminate + @see #ProgressBar_indeterminateBehavior + @see #ProgressBar_indeterminateDrawable + @see #ProgressBar_indeterminateDuration + @see #ProgressBar_indeterminateOnly + @see #ProgressBar_interpolator + @see #ProgressBar_max + @see #ProgressBar_maxHeight + @see #ProgressBar_maxWidth + @see #ProgressBar_minHeight + @see #ProgressBar_minWidth + @see #ProgressBar_mirrorForRtl + @see #ProgressBar_progress + @see #ProgressBar_progressDrawable + @see #ProgressBar_secondaryProgress + */ + public static final int[] ProgressBar = { + 0x0101011f, 0x01010120, 0x01010136, 0x01010137, + 0x01010138, 0x01010139, 0x0101013a, 0x0101013b, + 0x0101013c, 0x0101013d, 0x0101013e, 0x0101013f, + 0x01010140, 0x01010141, 0x0101031a, 0x010103ce + }; + /** +

+ @attr description + Timeout between frames of animation in milliseconds + {@deprecated Not used by the framework.} + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationResolution}. + @attr name android:animationResolution + */ + @Deprecated + public static final int ProgressBar_animationResolution = 14; + /** +

+ @attr description + Allows to enable the indeterminate mode. In this mode the progress + bar plays an infinite looping animation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminate}. + @attr name android:indeterminate + */ + public static final int ProgressBar_indeterminate = 5; + /** +

+ @attr description + Defines how the indeterminate mode should behave when the progress + reaches max. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
repeat1 Progress starts over from 0.
cycle2 Progress keeps the current value and goes back to 0.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateBehavior}. + @attr name android:indeterminateBehavior + */ + public static final int ProgressBar_indeterminateBehavior = 10; + /** +

+ @attr description + Drawable used for the indeterminate mode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateDrawable}. + @attr name android:indeterminateDrawable + */ + public static final int ProgressBar_indeterminateDrawable = 7; + /** +

+ @attr description + Duration of the indeterminate animation. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateDuration}. + @attr name android:indeterminateDuration + */ + public static final int ProgressBar_indeterminateDuration = 9; + /** +

+ @attr description + Restricts to ONLY indeterminate mode (state-keeping progress mode will not work). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#indeterminateOnly}. + @attr name android:indeterminateOnly + */ + public static final int ProgressBar_indeterminateOnly = 6; + /** +

This symbol is the offset where the {@link android.R.attr#interpolator} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:interpolator + */ + public static final int ProgressBar_interpolator = 13; + /** +

+ @attr description + Defines the maximum value the progress can take. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#max}. + @attr name android:max + */ + public static final int ProgressBar_max = 2; + /** +

+ @attr description + An optional argument to supply a maximum height for this view. + See {see android.widget.ImageView#setMaxHeight} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int ProgressBar_maxHeight = 1; + /** +

+ @attr description + An optional argument to supply a maximum width for this view. + See {see android.widget.ImageView#setMaxWidth} for details. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int ProgressBar_maxWidth = 0; + /** +

This symbol is the offset where the {@link android.R.attr#minHeight} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minHeight + */ + public static final int ProgressBar_minHeight = 12; + /** +

This symbol is the offset where the {@link android.R.attr#minWidth} + attribute's value can be found in the {@link #ProgressBar} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:minWidth + */ + public static final int ProgressBar_minWidth = 11; + /** +

+ @attr description + Defines if the associated drawables need to be mirrored when in RTL mode. + Default is false + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mirrorForRtl}. + @attr name android:mirrorForRtl + */ + public static final int ProgressBar_mirrorForRtl = 15; + /** +

+ @attr description + Defines the default progress value, between 0 and max. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progress}. + @attr name android:progress + */ + public static final int ProgressBar_progress = 3; + /** +

+ @attr description + Drawable used for the progress mode. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressDrawable}. + @attr name android:progressDrawable + */ + public static final int ProgressBar_progressDrawable = 8; + /** +

+ @attr description + Defines the secondary progress value, between 0 and max. This progress is drawn between + the primary progress and the background. It can be ideal for media scenarios such as + showing the buffering progress while the default progress shows the play progress. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#secondaryProgress}. + @attr name android:secondaryProgress + */ + public static final int ProgressBar_secondaryProgress = 4; + /** Attributes that can be used with a PropertyAnimator. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PropertyAnimator_propertyName android:propertyName} Name of the property being animated.
+ @see #PropertyAnimator_propertyName + */ + public static final int[] PropertyAnimator = { + 0x010102e1 + }; + /** +

+ @attr description + Name of the property being animated. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#propertyName}. + @attr name android:propertyName + */ + public static final int PropertyAnimator_propertyName = 0; + /** Attributes that can be used with a PublicKey. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #PublicKey_value android:value} Concrete value to assign to this piece of named meta-data.
+ @see #PublicKey_value + */ + public static final int[] PublicKey = { + 0x01010024 + }; + /** +

+ @attr description + Concrete value to assign to this piece of named meta-data. + The data can later be retrieved from the meta data Bundle + through {@link android.os.Bundle#getString Bundle.getString}, + {@link android.os.Bundle#getInt Bundle.getInt}, + {@link android.os.Bundle#getBoolean Bundle.getBoolean}, + or {@link android.os.Bundle#getFloat Bundle.getFloat} depending + on the type used here. + + +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

May be an integer value, such as "100". +

May be a boolean value, either "true" or "false". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

May be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#value}. + @attr name android:value + */ + public static final int PublicKey_value = 0; + /** Attributes that can be used with a QuickContactBadge. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #QuickContactBadge_quickContactWindowSize android:quickContactWindowSize}
+ @see #QuickContactBadge_quickContactWindowSize + */ + public static final int[] QuickContactBadge = { + 0x0101043d + }; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#quickContactWindowSize} + attribute's value can be found in the {@link #QuickContactBadge} array. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
modeSmall1
modeMedium2
modeLarge3
+ @attr name com.android.internal:quickContactWindowSize + */ + public static final int QuickContactBadge_quickContactWindowSize = 0; + /** Attributes that can be used with a RadioGroup. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #RadioGroup_checkedButton android:checkedButton} The id of the child radio button that should be checked by default + within this radio group.
{@link #RadioGroup_orientation android:orientation} Should the radio group be a column or a row? Use "horizontal" + for a row, "vertical" for a column.
+ @see #RadioGroup_checkedButton + @see #RadioGroup_orientation + */ + public static final int[] RadioGroup = { + 0x010100c4, 0x01010148 + }; + /** +

+ @attr description + The id of the child radio button that should be checked by default + within this radio group. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkedButton}. + @attr name android:checkedButton + */ + public static final int RadioGroup_checkedButton = 1; + /** +

+ @attr description + Should the radio group be a column or a row? Use "horizontal" + for a row, "vertical" for a column. The default is + vertical. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int RadioGroup_orientation = 0; + /** Attributes that can be used with a RatingBar. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #RatingBar_isIndicator android:isIndicator} Whether this rating bar is an indicator (and non-changeable by the user).
{@link #RatingBar_numStars android:numStars} The number of stars (or rating items) to show.
{@link #RatingBar_rating android:rating} The rating to set by default.
{@link #RatingBar_stepSize android:stepSize} The step size of the rating.
+ @see #RatingBar_isIndicator + @see #RatingBar_numStars + @see #RatingBar_rating + @see #RatingBar_stepSize + */ + public static final int[] RatingBar = { + 0x01010144, 0x01010145, 0x01010146, 0x01010147 + }; + /** +

+ @attr description + Whether this rating bar is an indicator (and non-changeable by the user). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isIndicator}. + @attr name android:isIndicator + */ + public static final int RatingBar_isIndicator = 3; + /** +

+ @attr description + The number of stars (or rating items) to show. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#numStars}. + @attr name android:numStars + */ + public static final int RatingBar_numStars = 0; + /** +

+ @attr description + The rating to set by default. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rating}. + @attr name android:rating + */ + public static final int RatingBar_rating = 1; + /** +

+ @attr description + The step size of the rating. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stepSize}. + @attr name android:stepSize + */ + public static final int RatingBar_stepSize = 2; + /** Use recognition-service as the root tag of the XML resource that + describes a {@link android.speech.RecognitionService}, which is reference from + its {@link android.speech.RecognitionService#SERVICE_META_DATA} meta-data entry. + Described here are the attributes that can be included in that tag. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #RecognitionService_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #RecognitionService_settingsActivity + */ + public static final int[] RecognitionService = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int RecognitionService_settingsActivity = 0; + /** Attributes that can be used with a RelativeLayout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #RelativeLayout_gravity android:gravity} Specifies how an object should position its content, on both the X and Y axes, + within its own bounds.
{@link #RelativeLayout_ignoreGravity android:ignoreGravity} Indicates what view should not be affected by gravity.
+ @see #RelativeLayout_gravity + @see #RelativeLayout_ignoreGravity + */ + public static final int[] RelativeLayout = { + 0x010100af, 0x010101ff + }; + /** +

+ @attr description + Specifies how an object should position its content, on both the X and Y axes, + within its own bounds. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int RelativeLayout_gravity = 0; + /** +

+ @attr description + Indicates what view should not be affected by gravity. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ignoreGravity}. + @attr name android:ignoreGravity + */ + public static final int RelativeLayout_ignoreGravity = 1; + /** Attributes that can be used with a RelativeLayout_Layout. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #RelativeLayout_Layout_layout_above android:layout_above} Positions the bottom edge of this view above the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignBaseline android:layout_alignBaseline} Positions the baseline of this view on the baseline of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignBottom android:layout_alignBottom} Makes the bottom edge of this view match the bottom edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignEnd android:layout_alignEnd} Makes the end edge of this view match the end edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignLeft android:layout_alignLeft} Makes the left edge of this view match the left edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignParentBottom android:layout_alignParentBottom} If true, makes the bottom edge of this view match the bottom edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentEnd android:layout_alignParentEnd} If true, makes the end edge of this view match the end edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentLeft android:layout_alignParentLeft} If true, makes the left edge of this view match the left edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentRight android:layout_alignParentRight} If true, makes the right edge of this view match the right edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentStart android:layout_alignParentStart} If true, makes the start edge of this view match the start edge of the parent.
{@link #RelativeLayout_Layout_layout_alignParentTop android:layout_alignParentTop} If true, makes the top edge of this view match the top edge of the parent.
{@link #RelativeLayout_Layout_layout_alignRight android:layout_alignRight} Makes the right edge of this view match the right edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignStart android:layout_alignStart} Makes the start edge of this view match the start edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignTop android:layout_alignTop} Makes the top edge of this view match the top edge of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_alignWithParentIfMissing android:layout_alignWithParentIfMissing} If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc.
{@link #RelativeLayout_Layout_layout_below android:layout_below} Positions the top edge of this view below the given anchor view ID.
{@link #RelativeLayout_Layout_layout_centerHorizontal android:layout_centerHorizontal} If true, centers this child horizontally within its parent.
{@link #RelativeLayout_Layout_layout_centerInParent android:layout_centerInParent} If true, centers this child horizontally and vertically within its parent.
{@link #RelativeLayout_Layout_layout_centerVertical android:layout_centerVertical} If true, centers this child vertically within its parent.
{@link #RelativeLayout_Layout_layout_toEndOf android:layout_toEndOf} Positions the start edge of this view to the end of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toLeftOf android:layout_toLeftOf} Positions the right edge of this view to the left of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toRightOf android:layout_toRightOf} Positions the left edge of this view to the right of the given anchor view ID.
{@link #RelativeLayout_Layout_layout_toStartOf android:layout_toStartOf} Positions the end edge of this view to the start of the given anchor view ID.
+ @see #RelativeLayout_Layout_layout_above + @see #RelativeLayout_Layout_layout_alignBaseline + @see #RelativeLayout_Layout_layout_alignBottom + @see #RelativeLayout_Layout_layout_alignEnd + @see #RelativeLayout_Layout_layout_alignLeft + @see #RelativeLayout_Layout_layout_alignParentBottom + @see #RelativeLayout_Layout_layout_alignParentEnd + @see #RelativeLayout_Layout_layout_alignParentLeft + @see #RelativeLayout_Layout_layout_alignParentRight + @see #RelativeLayout_Layout_layout_alignParentStart + @see #RelativeLayout_Layout_layout_alignParentTop + @see #RelativeLayout_Layout_layout_alignRight + @see #RelativeLayout_Layout_layout_alignStart + @see #RelativeLayout_Layout_layout_alignTop + @see #RelativeLayout_Layout_layout_alignWithParentIfMissing + @see #RelativeLayout_Layout_layout_below + @see #RelativeLayout_Layout_layout_centerHorizontal + @see #RelativeLayout_Layout_layout_centerInParent + @see #RelativeLayout_Layout_layout_centerVertical + @see #RelativeLayout_Layout_layout_toEndOf + @see #RelativeLayout_Layout_layout_toLeftOf + @see #RelativeLayout_Layout_layout_toRightOf + @see #RelativeLayout_Layout_layout_toStartOf + */ + public static final int[] RelativeLayout_Layout = { + 0x01010182, 0x01010183, 0x01010184, 0x01010185, + 0x01010186, 0x01010187, 0x01010188, 0x01010189, + 0x0101018a, 0x0101018b, 0x0101018c, 0x0101018d, + 0x0101018e, 0x0101018f, 0x01010190, 0x01010191, + 0x01010192, 0x010103b7, 0x010103b8, 0x010103b9, + 0x010103ba, 0x010103bb, 0x010103bc + }; + /** +

+ @attr description + Positions the bottom edge of this view above the given anchor view ID. + Accommodates bottom margin of this view and top margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_above}. + @attr name android:layout_above + */ + public static final int RelativeLayout_Layout_layout_above = 2; + /** +

+ @attr description + Positions the baseline of this view on the baseline of the given anchor view ID. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignBaseline}. + @attr name android:layout_alignBaseline + */ + public static final int RelativeLayout_Layout_layout_alignBaseline = 4; + /** +

+ @attr description + Makes the bottom edge of this view match the bottom edge of the given anchor view ID. + Accommodates bottom margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignBottom}. + @attr name android:layout_alignBottom + */ + public static final int RelativeLayout_Layout_layout_alignBottom = 8; + /** +

+ @attr description + Makes the end edge of this view match the end edge of the given anchor view ID. + Accommodates end margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignEnd}. + @attr name android:layout_alignEnd + */ + public static final int RelativeLayout_Layout_layout_alignEnd = 20; + /** +

+ @attr description + Makes the left edge of this view match the left edge of the given anchor view ID. + Accommodates left margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignLeft}. + @attr name android:layout_alignLeft + */ + public static final int RelativeLayout_Layout_layout_alignLeft = 5; + /** +

+ @attr description + If true, makes the bottom edge of this view match the bottom edge of the parent. + Accommodates bottom margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentBottom}. + @attr name android:layout_alignParentBottom + */ + public static final int RelativeLayout_Layout_layout_alignParentBottom = 12; + /** +

+ @attr description + If true, makes the end edge of this view match the end edge of the parent. + Accommodates end margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentEnd}. + @attr name android:layout_alignParentEnd + */ + public static final int RelativeLayout_Layout_layout_alignParentEnd = 22; + /** +

+ @attr description + If true, makes the left edge of this view match the left edge of the parent. + Accommodates left margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentLeft}. + @attr name android:layout_alignParentLeft + */ + public static final int RelativeLayout_Layout_layout_alignParentLeft = 9; + /** +

+ @attr description + If true, makes the right edge of this view match the right edge of the parent. + Accommodates right margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentRight}. + @attr name android:layout_alignParentRight + */ + public static final int RelativeLayout_Layout_layout_alignParentRight = 11; + /** +

+ @attr description + If true, makes the start edge of this view match the start edge of the parent. + Accommodates start margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentStart}. + @attr name android:layout_alignParentStart + */ + public static final int RelativeLayout_Layout_layout_alignParentStart = 21; + /** +

+ @attr description + If true, makes the top edge of this view match the top edge of the parent. + Accommodates top margin. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignParentTop}. + @attr name android:layout_alignParentTop + */ + public static final int RelativeLayout_Layout_layout_alignParentTop = 10; + /** +

+ @attr description + Makes the right edge of this view match the right edge of the given anchor view ID. + Accommodates right margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignRight}. + @attr name android:layout_alignRight + */ + public static final int RelativeLayout_Layout_layout_alignRight = 7; + /** +

+ @attr description + Makes the start edge of this view match the start edge of the given anchor view ID. + Accommodates start margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignStart}. + @attr name android:layout_alignStart + */ + public static final int RelativeLayout_Layout_layout_alignStart = 19; + /** +

+ @attr description + Makes the top edge of this view match the top edge of the given anchor view ID. + Accommodates top margin. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignTop}. + @attr name android:layout_alignTop + */ + public static final int RelativeLayout_Layout_layout_alignTop = 6; + /** +

+ @attr description + If set to true, the parent will be used as the anchor when the anchor cannot be + be found for layout_toLeftOf, layout_toRightOf, etc. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_alignWithParentIfMissing}. + @attr name android:layout_alignWithParentIfMissing + */ + public static final int RelativeLayout_Layout_layout_alignWithParentIfMissing = 16; + /** +

+ @attr description + Positions the top edge of this view below the given anchor view ID. + Accommodates top margin of this view and bottom margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_below}. + @attr name android:layout_below + */ + public static final int RelativeLayout_Layout_layout_below = 3; + /** +

+ @attr description + If true, centers this child horizontally within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerHorizontal}. + @attr name android:layout_centerHorizontal + */ + public static final int RelativeLayout_Layout_layout_centerHorizontal = 14; + /** +

+ @attr description + If true, centers this child horizontally and vertically within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerInParent}. + @attr name android:layout_centerInParent + */ + public static final int RelativeLayout_Layout_layout_centerInParent = 13; + /** +

+ @attr description + If true, centers this child vertically within its parent. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_centerVertical}. + @attr name android:layout_centerVertical + */ + public static final int RelativeLayout_Layout_layout_centerVertical = 15; + /** +

+ @attr description + Positions the start edge of this view to the end of the given anchor view ID. + Accommodates start margin of this view and end margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toEndOf}. + @attr name android:layout_toEndOf + */ + public static final int RelativeLayout_Layout_layout_toEndOf = 18; + /** +

+ @attr description + Positions the right edge of this view to the left of the given anchor view ID. + Accommodates right margin of this view and left margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toLeftOf}. + @attr name android:layout_toLeftOf + */ + public static final int RelativeLayout_Layout_layout_toLeftOf = 0; + /** +

+ @attr description + Positions the left edge of this view to the right of the given anchor view ID. + Accommodates left margin of this view and right margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toRightOf}. + @attr name android:layout_toRightOf + */ + public static final int RelativeLayout_Layout_layout_toRightOf = 1; + /** +

+ @attr description + Positions the end edge of this view to the start of the given anchor view ID. + Accommodates end margin of this view and start margin of anchor view. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_toStartOf}. + @attr name android:layout_toStartOf + */ + public static final int RelativeLayout_Layout_layout_toStartOf = 17; + /** Base attributes available to RingtonePreference. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #RingtonePreference_ringtoneType android:ringtoneType} Which ringtone type(s) to show in the picker.
{@link #RingtonePreference_showDefault android:showDefault} Whether to show an item for a default sound.
{@link #RingtonePreference_showSilent android:showSilent} Whether to show an item for 'Silent'.
+ @see #RingtonePreference_ringtoneType + @see #RingtonePreference_showDefault + @see #RingtonePreference_showSilent + */ + public static final int[] RingtonePreference = { + 0x010101f9, 0x010101fa, 0x010101fb + }; + /** +

+ @attr description + Which ringtone type(s) to show in the picker. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ringtone1 Ringtones.
notification2 Notification sounds.
alarm4 Alarm sounds.
all7 All available ringtone sounds.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ringtoneType}. + @attr name android:ringtoneType + */ + public static final int RingtonePreference_ringtoneType = 0; + /** +

+ @attr description + Whether to show an item for a default sound. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showDefault}. + @attr name android:showDefault + */ + public static final int RingtonePreference_showDefault = 1; + /** +

+ @attr description + Whether to show an item for 'Silent'. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#showSilent}. + @attr name android:showSilent + */ + public static final int RingtonePreference_showSilent = 2; + /** attributes for internal rotary widget used in lock screen and phone app + @hide +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #RotarySelector_orientation android:orientation} Use "horizontal" or "vertical".
+ @see #RotarySelector_orientation + */ + public static final int[] RotarySelector = { + 0x010100c4 + }; + /** +

+ @attr description + Use "horizontal" or "vertical". The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int RotarySelector_orientation = 0; + /** Attributes that can be used with a RotateAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #RotateAnimation_fromDegrees android:fromDegrees}
{@link #RotateAnimation_pivotX android:pivotX}
{@link #RotateAnimation_pivotY android:pivotY}
{@link #RotateAnimation_toDegrees android:toDegrees}
+ @see #RotateAnimation_fromDegrees + @see #RotateAnimation_pivotX + @see #RotateAnimation_pivotY + @see #RotateAnimation_toDegrees + */ + public static final int[] RotateAnimation = { + 0x010101b3, 0x010101b4, 0x010101b5, 0x010101b6 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromDegrees} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromDegrees + */ + public static final int RotateAnimation_fromDegrees = 0; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int RotateAnimation_pivotX = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int RotateAnimation_pivotY = 3; + /** +

This symbol is the offset where the {@link android.R.attr#toDegrees} + attribute's value can be found in the {@link #RotateAnimation} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toDegrees + */ + public static final int RotateAnimation_toDegrees = 1; + /** Drawable used to rotate another drawable. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #RotateDrawable_drawable android:drawable} Reference to a drawable resource to use for the frame.
{@link #RotateDrawable_fromDegrees android:fromDegrees}
{@link #RotateDrawable_pivotX android:pivotX}
{@link #RotateDrawable_pivotY android:pivotY}
{@link #RotateDrawable_toDegrees android:toDegrees}
{@link #RotateDrawable_visible android:visible} Provides initial visibility state of the drawable; the default + value is false.
+ @see #RotateDrawable_drawable + @see #RotateDrawable_fromDegrees + @see #RotateDrawable_pivotX + @see #RotateDrawable_pivotY + @see #RotateDrawable_toDegrees + @see #RotateDrawable_visible + */ + public static final int[] RotateDrawable = { + 0x01010194, 0x01010199, 0x010101b3, 0x010101b4, + 0x010101b5, 0x010101b6 + }; + /** +

+ @attr description + Reference to a drawable resource to use for the frame. If not + given, the drawable must be defined by the first child tag. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int RotateDrawable_drawable = 1; + /** +

This symbol is the offset where the {@link android.R.attr#fromDegrees} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromDegrees + */ + public static final int RotateDrawable_fromDegrees = 2; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int RotateDrawable_pivotX = 4; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int RotateDrawable_pivotY = 5; + /** +

This symbol is the offset where the {@link android.R.attr#toDegrees} + attribute's value can be found in the {@link #RotateDrawable} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toDegrees + */ + public static final int RotateDrawable_toDegrees = 3; + /** +

+ @attr description + Provides initial visibility state of the drawable; the default + value is false. See + {@link android.graphics.drawable.Drawable#setVisible}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int RotateDrawable_visible = 0; + /** Attributes that can be used with a ScaleAnimation. +

Includes the following attributes:

+ + + + + + + + + + +
AttributeDescription
{@link #ScaleAnimation_fromXScale android:fromXScale}
{@link #ScaleAnimation_fromYScale android:fromYScale}
{@link #ScaleAnimation_pivotX android:pivotX}
{@link #ScaleAnimation_pivotY android:pivotY}
{@link #ScaleAnimation_toXScale android:toXScale}
{@link #ScaleAnimation_toYScale android:toYScale}
+ @see #ScaleAnimation_fromXScale + @see #ScaleAnimation_fromYScale + @see #ScaleAnimation_pivotX + @see #ScaleAnimation_pivotY + @see #ScaleAnimation_toXScale + @see #ScaleAnimation_toYScale + */ + public static final int[] ScaleAnimation = { + 0x010101b5, 0x010101b6, 0x010101c2, 0x010101c3, + 0x010101c4, 0x010101c5 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromXScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromXScale + */ + public static final int ScaleAnimation_fromXScale = 2; + /** +

This symbol is the offset where the {@link android.R.attr#fromYScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromYScale + */ + public static final int ScaleAnimation_fromYScale = 4; + /** +

This symbol is the offset where the {@link android.R.attr#pivotX} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotX + */ + public static final int ScaleAnimation_pivotX = 0; + /** +

This symbol is the offset where the {@link android.R.attr#pivotY} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:pivotY + */ + public static final int ScaleAnimation_pivotY = 1; + /** +

This symbol is the offset where the {@link android.R.attr#toXScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toXScale + */ + public static final int ScaleAnimation_toXScale = 3; + /** +

This symbol is the offset where the {@link android.R.attr#toYScale} + attribute's value can be found in the {@link #ScaleAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toYScale + */ + public static final int ScaleAnimation_toYScale = 5; + /** Attributes that can be used with a ScaleDrawable. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #ScaleDrawable_drawable android:drawable} Reference to a drawable resource to draw with the specified scale.
{@link #ScaleDrawable_scaleGravity android:scaleGravity} Specifies where the drawable is positioned after scaling.
{@link #ScaleDrawable_scaleHeight android:scaleHeight} Scale height, expressed as a percentage of the drawable's bound.
{@link #ScaleDrawable_scaleWidth android:scaleWidth} Scale width, expressed as a percentage of the drawable's bound.
{@link #ScaleDrawable_useIntrinsicSizeAsMinimum android:useIntrinsicSizeAsMinimum} Use the drawable's intrinsic width and height as minimum size values.
+ @see #ScaleDrawable_drawable + @see #ScaleDrawable_scaleGravity + @see #ScaleDrawable_scaleHeight + @see #ScaleDrawable_scaleWidth + @see #ScaleDrawable_useIntrinsicSizeAsMinimum + */ + public static final int[] ScaleDrawable = { + 0x01010199, 0x010101fc, 0x010101fd, 0x010101fe, + 0x01010310 + }; + /** +

+ @attr description + Reference to a drawable resource to draw with the specified scale. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawable}. + @attr name android:drawable + */ + public static final int ScaleDrawable_drawable = 0; + /** +

+ @attr description + Specifies where the drawable is positioned after scaling. The default value is + left. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleGravity}. + @attr name android:scaleGravity + */ + public static final int ScaleDrawable_scaleGravity = 3; + /** +

+ @attr description + Scale height, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleHeight}. + @attr name android:scaleHeight + */ + public static final int ScaleDrawable_scaleHeight = 2; + /** +

+ @attr description + Scale width, expressed as a percentage of the drawable's bound. The value's + format is XX%. For instance: 100%, 12.5%, etc. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleWidth}. + @attr name android:scaleWidth + */ + public static final int ScaleDrawable_scaleWidth = 1; + /** +

+ @attr description + Use the drawable's intrinsic width and height as minimum size values. + Useful if the target drawable is a 9-patch or otherwise should not be scaled + down beyond a minimum size. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#useIntrinsicSizeAsMinimum}. + @attr name android:useIntrinsicSizeAsMinimum + */ + public static final int ScaleDrawable_useIntrinsicSizeAsMinimum = 4; + /** Attributes that can be used with a ScrollView. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #ScrollView_fillViewport android:fillViewport} Defines whether the scrollview should stretch its content to fill the viewport.
+ @see #ScrollView_fillViewport + */ + public static final int[] ScrollView = { + 0x0101017a + }; + /** +

+ @attr description + Defines whether the scrollview should stretch its content to fill the viewport. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fillViewport}. + @attr name android:fillViewport + */ + public static final int ScrollView_fillViewport = 0; + /** Attributes that can be used with a SearchView. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #SearchView_iconifiedByDefault android:iconifiedByDefault} The default state of the SearchView.
{@link #SearchView_imeOptions android:imeOptions} The IME options to set on the query text field.
{@link #SearchView_inputType android:inputType} The input type to set on the query text field.
{@link #SearchView_maxWidth android:maxWidth} An optional maximum width of the SearchView.
{@link #SearchView_queryHint android:queryHint} An optional query hint string to be displayed in the empty query field.
+ @see #SearchView_iconifiedByDefault + @see #SearchView_imeOptions + @see #SearchView_inputType + @see #SearchView_maxWidth + @see #SearchView_queryHint + */ + public static final int[] SearchView = { + 0x0101011f, 0x01010220, 0x01010264, 0x010102fa, + 0x01010358 + }; + /** +

+ @attr description + The default state of the SearchView. If true, it will be iconified when not in + use and expanded when clicked. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#iconifiedByDefault}. + @attr name android:iconifiedByDefault + */ + public static final int SearchView_iconifiedByDefault = 3; + /** +

+ @attr description + The IME options to set on the query text field. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int SearchView_imeOptions = 2; + /** +

+ @attr description + The input type to set on the query text field. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int SearchView_inputType = 1; + /** +

+ @attr description + An optional maximum width of the SearchView. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int SearchView_maxWidth = 0; + /** +

+ @attr description + An optional query hint string to be displayed in the empty query field. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryHint}. + @attr name android:queryHint + */ + public static final int SearchView_queryHint = 4; + /** Searchable activities and applications must provide search configuration information + in an XML file, typically called searchable.xml. This file is referenced in your manifest. + For a more in-depth discussion of search configuration, please refer to + {@link android.app.SearchManager}. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Searchable_autoUrlDetect android:autoUrlDetect} If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity).
{@link #Searchable_hint android:hint} If supplied, this string will be displayed as a hint to the user.
{@link #Searchable_icon android:icon}This is deprecated.
{@link #Searchable_imeOptions android:imeOptions} Additional features you can enable in an IME associated with an editor + to improve the integration with your application.
{@link #Searchable_includeInGlobalSearch android:includeInGlobalSearch} If provided and true, this searchable activity will be + included in any global lists of search targets.
{@link #Searchable_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
{@link #Searchable_label android:label} This is the user-displayed name of the searchable activity.
{@link #Searchable_queryAfterZeroResults android:queryAfterZeroResults} If provided and true, this searchable activity will be invoked for all + queries in a particular session.
{@link #Searchable_searchButtonText android:searchButtonText} If supplied, this string will be displayed as the text of the "Search" button.
{@link #Searchable_searchMode android:searchMode} Additional features are controlled by mode bits in this field.
{@link #Searchable_searchSettingsDescription android:searchSettingsDescription} If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings.
{@link #Searchable_searchSuggestAuthority android:searchSuggestAuthority} If provided, this is the trigger indicating that the searchable activity + provides suggestions as well.
{@link #Searchable_searchSuggestIntentAction android:searchSuggestIntentAction} If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion.
{@link #Searchable_searchSuggestIntentData android:searchSuggestIntentData} If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion.
{@link #Searchable_searchSuggestPath android:searchSuggestPath} If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path.
{@link #Searchable_searchSuggestSelection android:searchSuggestSelection} If provided, suggestion queries will be passed into your query function + as the selection parameter.
{@link #Searchable_searchSuggestThreshold android:searchSuggestThreshold} If provided, this is the minimum number of characters needed to trigger + search suggestions.
{@link #Searchable_voiceLanguage android:voiceLanguage} If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}.
{@link #Searchable_voiceLanguageModel android:voiceLanguageModel} If provided, this specifies the language model that should be used by the + voice recognition system.
{@link #Searchable_voiceMaxResults android:voiceMaxResults} If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query.
{@link #Searchable_voicePromptText android:voicePromptText} If provided, this specifies a prompt that will be displayed during voice input.
{@link #Searchable_voiceSearchMode android:voiceSearchMode} Voice search features are controlled by mode bits in this field.
+ @see #Searchable_autoUrlDetect + @see #Searchable_hint + @see #Searchable_icon + @see #Searchable_imeOptions + @see #Searchable_includeInGlobalSearch + @see #Searchable_inputType + @see #Searchable_label + @see #Searchable_queryAfterZeroResults + @see #Searchable_searchButtonText + @see #Searchable_searchMode + @see #Searchable_searchSettingsDescription + @see #Searchable_searchSuggestAuthority + @see #Searchable_searchSuggestIntentAction + @see #Searchable_searchSuggestIntentData + @see #Searchable_searchSuggestPath + @see #Searchable_searchSuggestSelection + @see #Searchable_searchSuggestThreshold + @see #Searchable_voiceLanguage + @see #Searchable_voiceLanguageModel + @see #Searchable_voiceMaxResults + @see #Searchable_voicePromptText + @see #Searchable_voiceSearchMode + */ + public static final int[] Searchable = { + 0x01010001, 0x01010002, 0x01010150, 0x010101d5, + 0x010101d6, 0x010101d7, 0x010101d8, 0x010101d9, + 0x010101da, 0x01010205, 0x01010220, 0x01010252, + 0x01010253, 0x01010254, 0x01010255, 0x01010256, + 0x01010264, 0x0101026d, 0x0101026e, 0x01010282, + 0x0101028a, 0x0101028c + }; + /** +

+ @attr description + If provided and true, URLs entered in the search dialog while searching + within this activity would be detected and treated as URLs (show a 'go' button in the + keyboard and invoke the browser directly when user launches the URL instead of passing + the URL to the activity). If set to false any URLs entered are treated as + normal query text. + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoUrlDetect}. + @attr name android:autoUrlDetect + */ + public static final int Searchable_autoUrlDetect = 21; + /** +

+ @attr description + If supplied, this string will be displayed as a hint to the user. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hint}. + @attr name android:hint + */ + public static final int Searchable_hint = 2; + /** +

+ @attr description + This is deprecated.
The default + application icon is now always used, so this attribute is + obsolete. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int Searchable_icon = 1; + /** +

+ @attr description + Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int Searchable_imeOptions = 16; + /** +

+ @attr description + If provided and true, this searchable activity will be + included in any global lists of search targets. + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#includeInGlobalSearch}. + @attr name android:includeInGlobalSearch + */ + public static final int Searchable_includeInGlobalSearch = 18; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int Searchable_inputType = 10; + /** +

+ @attr description + This is the user-displayed name of the searchable activity. Required + attribute. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int Searchable_label = 0; + /** +

+ @attr description + If provided and true, this searchable activity will be invoked for all + queries in a particular session. If set to false and the activity + returned zero results for a query, it will not be invoked again in that session for + supersets of that zero-results query. For example, if the activity returned zero + results for "bo", it would not be queried again for "bob". + The default value is false. Optional attribute.. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryAfterZeroResults}. + @attr name android:queryAfterZeroResults + */ + public static final int Searchable_queryAfterZeroResults = 19; + /** +

+ @attr description + If supplied, this string will be displayed as the text of the "Search" button. + Optional attribute. + {@deprecated This will create a non-standard UI appearance, because the search bar UI is + changing to use only icons for its buttons.} + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchButtonText}. + @attr name android:searchButtonText + */ + @Deprecated + public static final int Searchable_searchButtonText = 9; + /** +

+ @attr description + Additional features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. Optional attribute. + + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
showSearchLabelAsBadge0x04 If set, this flag enables the display of the search target (label) within the + search bar. If neither bad mode is selected, no badge will be shown.
showSearchIconAsBadge0x08This is deprecated.
The default + application icon is now always used, so this option is + obsolete.
queryRewriteFromData0x10 If set, this flag causes the suggestion column SUGGEST_COLUMN_INTENT_DATA to + be considered as the text for suggestion query rewriting. This should only + be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user + inspection and editing - typically, HTTP/HTTPS Uri's.
queryRewriteFromText0x20 If set, this flag causes the suggestion column SUGGEST_COLUMN_TEXT_1 to + be considered as the text for suggestion query rewriting. This should be used + for suggestions in which no query text is provided and the SUGGEST_COLUMN_INTENT_DATA + values are not suitable for user inspection and editing.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchMode}. + @attr name android:searchMode + */ + public static final int Searchable_searchMode = 3; + /** +

+ @attr description + If provided, this string will be used to describe the searchable item in the + searchable items settings within system search settings. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSettingsDescription}. + @attr name android:searchSettingsDescription + */ + public static final int Searchable_searchSettingsDescription = 20; + /** +

+ @attr description + If provided, this is the trigger indicating that the searchable activity + provides suggestions as well. The value must be a fully-qualified content provider + authority (e.g. "com.example.android.apis.SuggestionProvider") and should match the + "android:authorities" tag in your content provider's manifest entry. Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestAuthority}. + @attr name android:searchSuggestAuthority + */ + public static final int Searchable_searchSuggestAuthority = 4; + /** +

+ @attr description + If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the action field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestIntentAction}. + @attr name android:searchSuggestIntentAction + */ + public static final int Searchable_searchSuggestIntentAction = 7; + /** +

+ @attr description + If provided, and not overridden by an action in the selected suggestion, this + string will be placed in the data field of the {@link android.content.Intent Intent} + when the user clicks a suggestion. Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestIntentData}. + @attr name android:searchSuggestIntentData + */ + public static final int Searchable_searchSuggestIntentData = 8; + /** +

+ @attr description + If provided, this will be inserted in the suggestions query Uri, after the authority + you have provide but before the standard suggestions path. Optional attribute. + + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestPath}. + @attr name android:searchSuggestPath + */ + public static final int Searchable_searchSuggestPath = 5; + /** +

+ @attr description + If provided, suggestion queries will be passed into your query function + as the selection parameter. Typically this will be a WHERE clause for your + database, and will contain a single question mark, which represents the actual query + string that has been typed by the user. If not provided, then the user query text + will be appended to the query Uri (after an additional "/".) Optional + attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestSelection}. + @attr name android:searchSuggestSelection + */ + public static final int Searchable_searchSuggestSelection = 6; + /** +

+ @attr description + If provided, this is the minimum number of characters needed to trigger + search suggestions. The default value is 0. Optional attribute. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#searchSuggestThreshold}. + @attr name android:searchSuggestThreshold + */ + public static final int Searchable_searchSuggestThreshold = 17; + /** +

+ @attr description + If provided, this specifies the spoken language to be expected, and that it will be + different than the one set in the {@link java.util.Locale#getDefault()}. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceLanguage}. + @attr name android:voiceLanguage + */ + public static final int Searchable_voiceLanguage = 14; + /** +

+ @attr description + If provided, this specifies the language model that should be used by the + voice recognition system. See + {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL } for more information. + If not provided, the default value + {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM } will be used. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceLanguageModel}. + @attr name android:voiceLanguageModel + */ + public static final int Searchable_voiceLanguageModel = 12; + /** +

+ @attr description + If provided, enforces the maximum number of results to return, including the "best" + result which will always be provided as the SEARCH intent's primary query. Must be one + or greater. If not provided, the recognizer will choose how many results to return. + + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceMaxResults}. + @attr name android:voiceMaxResults + */ + public static final int Searchable_voiceMaxResults = 15; + /** +

+ @attr description + If provided, this specifies a prompt that will be displayed during voice input. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#voicePromptText}. + @attr name android:voicePromptText + */ + public static final int Searchable_voicePromptText = 13; + /** +

+ @attr description + Voice search features are controlled by mode bits in this field. Omitting + this field, or setting to zero, provides default behavior. + If showVoiceSearchButton is set, then launchWebSearch or launchRecognizer must + also be set. Optional attribute. + + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
showVoiceSearchButton0x01 If set, display a voice search button. This only takes effect if voice search is + available on the device.
launchWebSearch0x02 If set, the voice search button will take the user directly to a built-in + voice web search activity. Most applications will not use this flag, as it + will take the user away from the activity in which search was invoked.
launchRecognizer0x04 If set, the voice search button will take the user directly to a built-in + voice recording activity. This activity will prompt the user to speak, + transcribe the spoken text, and forward the resulting query + text to the searchable activity, just as if the user had typed it into + the search UI and clicked the search button.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#voiceSearchMode}. + @attr name android:voiceSearchMode + */ + public static final int Searchable_voiceSearchMode = 11; + /** In order to process special action keys during search, you must define them using + one or more "ActionKey" elements in your Searchable metadata. For a more in-depth + discussion of action code handling, please refer to {@link android.app.SearchManager}. + +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #SearchableActionKey_keycode android:keycode} This attribute denotes the action key you wish to respond to.
{@link #SearchableActionKey_queryActionMsg android:queryActionMsg} If you wish to handle an action key during normal search query entry, you + must define an action string here.
{@link #SearchableActionKey_suggestActionMsg android:suggestActionMsg} If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this.
{@link #SearchableActionKey_suggestActionMsgColumn android:suggestActionMsgColumn} If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis.
+ @see #SearchableActionKey_keycode + @see #SearchableActionKey_queryActionMsg + @see #SearchableActionKey_suggestActionMsg + @see #SearchableActionKey_suggestActionMsgColumn + */ + public static final int[] SearchableActionKey = { + 0x010100c5, 0x010101db, 0x010101dc, 0x010101dd + }; + /** +

+ @attr description + This attribute denotes the action key you wish to respond to. Note that not + all action keys are actually supported using this mechanism, as many of them are + used for typing, navigation, or system functions. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the key code, use + {@link android.content.Intent#getIntExtra getIntExtra(SearchManager.ACTION_KEY)}. +

Note, in addition to the keycode, you must also provide one or more of the action + specifier attributes. Required attribute. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
KEYCODE_UNKNOWN0
KEYCODE_SOFT_LEFT1
KEYCODE_SOFT_RIGHT2
KEYCODE_HOME3
KEYCODE_BACK4
KEYCODE_CALL5
KEYCODE_ENDCALL6
KEYCODE_07
KEYCODE_18
KEYCODE_29
KEYCODE_310
KEYCODE_411
KEYCODE_512
KEYCODE_613
KEYCODE_714
KEYCODE_815
KEYCODE_916
KEYCODE_STAR17
KEYCODE_POUND18
KEYCODE_DPAD_UP19
KEYCODE_DPAD_DOWN20
KEYCODE_DPAD_LEFT21
KEYCODE_DPAD_RIGHT22
KEYCODE_DPAD_CENTER23
KEYCODE_VOLUME_UP24
KEYCODE_VOLUME_DOWN25
KEYCODE_POWER26
KEYCODE_CAMERA27
KEYCODE_CLEAR28
KEYCODE_A29
KEYCODE_B30
KEYCODE_C31
KEYCODE_D32
KEYCODE_E33
KEYCODE_F34
KEYCODE_G35
KEYCODE_H36
KEYCODE_I37
KEYCODE_J38
KEYCODE_K39
KEYCODE_L40
KEYCODE_M41
KEYCODE_N42
KEYCODE_O43
KEYCODE_P44
KEYCODE_Q45
KEYCODE_R46
KEYCODE_S47
KEYCODE_T48
KEYCODE_U49
KEYCODE_V50
KEYCODE_W51
KEYCODE_X52
KEYCODE_Y53
KEYCODE_Z54
KEYCODE_COMMA55
KEYCODE_PERIOD56
KEYCODE_ALT_LEFT57
KEYCODE_ALT_RIGHT58
KEYCODE_SHIFT_LEFT59
KEYCODE_SHIFT_RIGHT60
KEYCODE_TAB61
KEYCODE_SPACE62
KEYCODE_SYM63
KEYCODE_EXPLORER64
KEYCODE_ENVELOPE65
KEYCODE_ENTER66
KEYCODE_DEL67
KEYCODE_GRAVE68
KEYCODE_MINUS69
KEYCODE_EQUALS70
KEYCODE_LEFT_BRACKET71
KEYCODE_RIGHT_BRACKET72
KEYCODE_BACKSLASH73
KEYCODE_SEMICOLON74
KEYCODE_APOSTROPHE75
KEYCODE_SLASH76
KEYCODE_AT77
KEYCODE_NUM78
KEYCODE_HEADSETHOOK79
KEYCODE_FOCUS80
KEYCODE_PLUS81
KEYCODE_MENU82
KEYCODE_NOTIFICATION83
KEYCODE_SEARCH84
KEYCODE_MEDIA_PLAY_PAUSE85
KEYCODE_MEDIA_STOP86
KEYCODE_MEDIA_NEXT87
KEYCODE_MEDIA_PREVIOUS88
KEYCODE_MEDIA_REWIND89
KEYCODE_MEDIA_FAST_FORWARD90
KEYCODE_MUTE91
KEYCODE_PAGE_UP92
KEYCODE_PAGE_DOWN93
KEYCODE_PICTSYMBOLS94
KEYCODE_SWITCH_CHARSET95
KEYCODE_BUTTON_A96
KEYCODE_BUTTON_B97
KEYCODE_BUTTON_C98
KEYCODE_BUTTON_X99
KEYCODE_BUTTON_Y100
KEYCODE_BUTTON_Z101
KEYCODE_BUTTON_L1102
KEYCODE_BUTTON_R1103
KEYCODE_BUTTON_L2104
KEYCODE_BUTTON_R2105
KEYCODE_BUTTON_THUMBL106
KEYCODE_BUTTON_THUMBR107
KEYCODE_BUTTON_START108
KEYCODE_BUTTON_SELECT109
KEYCODE_BUTTON_MODE110
KEYCODE_ESCAPE111
KEYCODE_FORWARD_DEL112
KEYCODE_CTRL_LEFT113
KEYCODE_CTRL_RIGHT114
KEYCODE_CAPS_LOCK115
KEYCODE_SCROLL_LOCK116
KEYCODE_META_LEFT117
KEYCODE_META_RIGHT118
KEYCODE_FUNCTION119
KEYCODE_SYSRQ120
KEYCODE_BREAK121
KEYCODE_MOVE_HOME122
KEYCODE_MOVE_END123
KEYCODE_INSERT124
KEYCODE_FORWARD125
KEYCODE_MEDIA_PLAY126
KEYCODE_MEDIA_PAUSE127
KEYCODE_MEDIA_CLOSE128
KEYCODE_MEDIA_EJECT129
KEYCODE_MEDIA_RECORD130
KEYCODE_F1131
KEYCODE_F2132
KEYCODE_F3133
KEYCODE_F4134
KEYCODE_F5135
KEYCODE_F6136
KEYCODE_F7137
KEYCODE_F8138
KEYCODE_F9139
KEYCODE_F10140
KEYCODE_F11141
KEYCODE_F12142
KEYCODE_NUM_LOCK143
KEYCODE_NUMPAD_0144
KEYCODE_NUMPAD_1145
KEYCODE_NUMPAD_2146
KEYCODE_NUMPAD_3147
KEYCODE_NUMPAD_4148
KEYCODE_NUMPAD_5149
KEYCODE_NUMPAD_6150
KEYCODE_NUMPAD_7151
KEYCODE_NUMPAD_8152
KEYCODE_NUMPAD_9153
KEYCODE_NUMPAD_DIVIDE154
KEYCODE_NUMPAD_MULTIPLY155
KEYCODE_NUMPAD_SUBTRACT156
KEYCODE_NUMPAD_ADD157
KEYCODE_NUMPAD_DOT158
KEYCODE_NUMPAD_COMMA159
KEYCODE_NUMPAD_ENTER160
KEYCODE_NUMPAD_EQUALS161
KEYCODE_NUMPAD_LEFT_PAREN162
KEYCODE_NUMPAD_RIGHT_PAREN163
KEYCODE_VOLUME_MUTE164
KEYCODE_INFO165
KEYCODE_CHANNEL_UP166
KEYCODE_CHANNEL_DOWN167
KEYCODE_ZOOM_IN168
KEYCODE_ZOOM_OUT169
KEYCODE_TV170
KEYCODE_WINDOW171
KEYCODE_GUIDE172
KEYCODE_DVR173
KEYCODE_BOOKMARK174
KEYCODE_CAPTIONS175
KEYCODE_SETTINGS176
KEYCODE_TV_POWER177
KEYCODE_TV_INPUT178
KEYCODE_STB_POWER179
KEYCODE_STB_INPUT180
KEYCODE_AVR_POWER181
KEYCODE_AVR_INPUT182
KEYCODE_PROG_GRED183
KEYCODE_PROG_GREEN184
KEYCODE_PROG_YELLOW185
KEYCODE_PROG_BLUE186
KEYCODE_APP_SWITCH187
KEYCODE_BUTTON_1188
KEYCODE_BUTTON_2189
KEYCODE_BUTTON_3190
KEYCODE_BUTTON_4191
KEYCODE_BUTTON_5192
KEYCODE_BUTTON_6193
KEYCODE_BUTTON_7194
KEYCODE_BUTTON_8195
KEYCODE_BUTTON_9196
KEYCODE_BUTTON_10197
KEYCODE_BUTTON_11198
KEYCODE_BUTTON_12199
KEYCODE_BUTTON_13200
KEYCODE_BUTTON_14201
KEYCODE_BUTTON_15202
KEYCODE_BUTTON_16203
KEYCODE_LANGUAGE_SWITCH204
KEYCODE_MANNER_MODE205
KEYCODE_3D_MODE206
KEYCODE_CONTACTS207
KEYCODE_CALENDAR208
KEYCODE_MUSIC209
KEYCODE_CALCULATOR210
KEYCODE_ZENKAKU_HANKAKU211
KEYCODE_EISU212
KEYCODE_MUHENKAN213
KEYCODE_HENKAN214
KEYCODE_KATAKANA_HIRAGANA215
KEYCODE_YEN216
KEYCODE_RO217
KEYCODE_KANA218
KEYCODE_ASSIST219
KEYCODE_BRIGHTNESS_DOWN220
KEYCODE_BRIGHTNESS_UP221
KEYCODE_MEDIA_AUDIO_TRACK222
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#keycode}. + @attr name android:keycode + */ + public static final int SearchableActionKey_keycode = 0; + /** +

+ @attr description + If you wish to handle an action key during normal search query entry, you + must define an action string here. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#queryActionMsg}. + @attr name android:queryActionMsg + */ + public static final int SearchableActionKey_queryActionMsg = 1; + /** +

+ @attr description + If you wish to handle an action key while a suggestion is being displayed and + selected, there are two ways to handle this. If all of your suggestions + can handle the action key, you can simply define the action message using this + attribute. This will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your + searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}. + Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#suggestActionMsg}. + @attr name android:suggestActionMsg + */ + public static final int SearchableActionKey_suggestActionMsg = 2; + /** +

+ @attr description + If you wish to handle an action key while a suggestion is being displayed and + selected, but you do not wish to enable this action key for every suggestion, + then you can use this attribute to control it on a suggestion-by-suggestion basis. + First, you must define a column (and name it here) where your suggestions will include + the action string. Then, in your content provider, you must provide this column, and + when desired, provide data in this column. + The search manager will look at your suggestion cursor, using the string + provided here in order to select a column, and will use that to select a string from + the cursor. That string will be added to the + {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to + your searchable activity. To examine the string, use + {@link android.content.Intent#getStringExtra + getStringExtra(SearchManager.ACTION_MSG)}. If the data does not exist for the + selection suggestion, the action key will be ignored.Optional attribute. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#suggestActionMsgColumn}. + @attr name android:suggestActionMsgColumn + */ + public static final int SearchableActionKey_suggestActionMsgColumn = 3; + /** Attributes that can be used with a SeekBar. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SeekBar_thumb android:thumb} Draws the thumb on a seekbar.
{@link #SeekBar_thumbOffset android:thumbOffset} An offset for the thumb that allows it to extend out of the range of the track.
+ @see #SeekBar_thumb + @see #SeekBar_thumbOffset + */ + public static final int[] SeekBar = { + 0x01010142, 0x01010143 + }; + /** +

+ @attr description + Draws the thumb on a seekbar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumb}. + @attr name android:thumb + */ + public static final int SeekBar_thumb = 0; + /** +

+ @attr description + An offset for the thumb that allows it to extend out of the range of the track. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbOffset}. + @attr name android:thumbOffset + */ + public static final int SeekBar_thumbOffset = 1; + /** Attributes that can be used with a SelectionModeDrawables. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #SelectionModeDrawables_actionModeCopyDrawable android:actionModeCopyDrawable} Drawable to use for the Copy action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModeCutDrawable android:actionModeCutDrawable} Drawable to use for the Cut action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModePasteDrawable android:actionModePasteDrawable} Drawable to use for the Paste action button in Contextual Action Bar
{@link #SelectionModeDrawables_actionModeSelectAllDrawable android:actionModeSelectAllDrawable} Drawable to use for the Select all action button in Contextual Action Bar
+ @see #SelectionModeDrawables_actionModeCopyDrawable + @see #SelectionModeDrawables_actionModeCutDrawable + @see #SelectionModeDrawables_actionModePasteDrawable + @see #SelectionModeDrawables_actionModeSelectAllDrawable + */ + public static final int[] SelectionModeDrawables = { + 0x01010311, 0x01010312, 0x01010313, 0x0101037e + }; + /** +

+ @attr description + Drawable to use for the Copy action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCopyDrawable}. + @attr name android:actionModeCopyDrawable + */ + public static final int SelectionModeDrawables_actionModeCopyDrawable = 1; + /** +

+ @attr description + Drawable to use for the Cut action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCutDrawable}. + @attr name android:actionModeCutDrawable + */ + public static final int SelectionModeDrawables_actionModeCutDrawable = 0; + /** +

+ @attr description + Drawable to use for the Paste action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModePasteDrawable}. + @attr name android:actionModePasteDrawable + */ + public static final int SelectionModeDrawables_actionModePasteDrawable = 2; + /** +

+ @attr description + Drawable to use for the Select all action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSelectAllDrawable}. + @attr name android:actionModeSelectAllDrawable + */ + public static final int SelectionModeDrawables_actionModeSelectAllDrawable = 3; + /** Use injected-location-setting as the root tag of the XML resource that + describes an injected "Location services" setting. Note that the status value (subtitle) + for the setting is specified dynamically by a subclass of SettingInjectorService. + +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #SettingInjectorService_icon android:icon} The icon for the preference, should refer to all apps covered by the setting.
{@link #SettingInjectorService_settingsActivity android:settingsActivity} The activity to launch when the setting is clicked on.
{@link #SettingInjectorService_title android:title} The title for the preference.
+ @see #SettingInjectorService_icon + @see #SettingInjectorService_settingsActivity + @see #SettingInjectorService_title + */ + public static final int[] SettingInjectorService = { + 0x01010002, 0x010101e1, 0x01010225 + }; + /** +

+ @attr description + The icon for the preference, should refer to all apps covered by the setting. Typically + a generic icon for the developer. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#icon}. + @attr name android:icon + */ + public static final int SettingInjectorService_icon = 0; + /** +

+ @attr description + The activity to launch when the setting is clicked on. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SettingInjectorService_settingsActivity = 2; + /** +

+ @attr description + The title for the preference. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#title}. + @attr name android:title + */ + public static final int SettingInjectorService_title = 1; + /** Drawable used to draw shapes. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #ShapeDrawable_color android:color} Defines the color of the shape.
{@link #ShapeDrawable_dither android:dither} Enables or disables dithering.
{@link #ShapeDrawable_height android:height} Defines the height of the shape.
{@link #ShapeDrawable_width android:width} Defines the width of the shape.
+ @see #ShapeDrawable_color + @see #ShapeDrawable_dither + @see #ShapeDrawable_height + @see #ShapeDrawable_width + */ + public static final int[] ShapeDrawable = { + 0x0101011c, 0x01010155, 0x01010159, 0x010101a5 + }; + /** +

+ @attr description + Defines the color of the shape. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#color}. + @attr name android:color + */ + public static final int ShapeDrawable_color = 3; + /** +

+ @attr description + Enables or disables dithering. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int ShapeDrawable_dither = 0; + /** +

+ @attr description + Defines the height of the shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int ShapeDrawable_height = 1; + /** +

+ @attr description + Defines the width of the shape. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int ShapeDrawable_width = 2; + /** Defines the padding of a ShapeDrawable. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #ShapeDrawablePadding_bottom android:bottom} Bottom padding.
{@link #ShapeDrawablePadding_left android:left} Left padding.
{@link #ShapeDrawablePadding_right android:right} Right padding.
{@link #ShapeDrawablePadding_top android:top} Top padding.
+ @see #ShapeDrawablePadding_bottom + @see #ShapeDrawablePadding_left + @see #ShapeDrawablePadding_right + @see #ShapeDrawablePadding_top + */ + public static final int[] ShapeDrawablePadding = { + 0x010101ad, 0x010101ae, 0x010101af, 0x010101b0 + }; + /** +

+ @attr description + Bottom padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottom}. + @attr name android:bottom + */ + public static final int ShapeDrawablePadding_bottom = 3; + /** +

+ @attr description + Left padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#left}. + @attr name android:left + */ + public static final int ShapeDrawablePadding_left = 0; + /** +

+ @attr description + Right padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#right}. + @attr name android:right + */ + public static final int ShapeDrawablePadding_right = 2; + /** +

+ @attr description + Top padding. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#top}. + @attr name android:top + */ + public static final int ShapeDrawablePadding_top = 1; + /** Attributes that can be used with a SizeAdaptiveLayout. + */ + public static final int[] SizeAdaptiveLayout = { + + }; + /** Attributes that can be used with a SizeAdaptiveLayout_Layout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SizeAdaptiveLayout_Layout_layout_maxHeight android:layout_maxHeight} The maximum valid height for this item.
{@link #SizeAdaptiveLayout_Layout_layout_minHeight android:layout_minHeight} The minimum valid height for this item.
+ @see #SizeAdaptiveLayout_Layout_layout_maxHeight + @see #SizeAdaptiveLayout_Layout_layout_minHeight + */ + public static final int[] SizeAdaptiveLayout_Layout = { + 0x0101045f, 0x01010460 + }; + /** +

+ @attr description + The maximum valid height for this item. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
unbounded-1 Indicates that the view may be resized arbitrarily large.
+

This is a private symbol. + @attr name com.android.internal:layout_maxHeight + */ + public static final int SizeAdaptiveLayout_Layout_layout_maxHeight = 0; + /** +

+ @attr description + The minimum valid height for this item. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:layout_minHeight + */ + public static final int SizeAdaptiveLayout_Layout_layout_minHeight = 1; + /** Attributes that can be used with a SlidingChallengeLayout_Layout. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SlidingChallengeLayout_Layout_layout_childType android:layout_childType} Some child types have special behavior.
{@link #SlidingChallengeLayout_Layout_layout_maxHeight android:layout_maxHeight} The maximum valid height for this item.
+ @see #SlidingChallengeLayout_Layout_layout_childType + @see #SlidingChallengeLayout_Layout_layout_maxHeight + */ + public static final int[] SlidingChallengeLayout_Layout = { + 0x0101045f, 0x01010479 + }; + /** +

+ @attr description + Some child types have special behavior. + + +

Must be one of the following constant values.

+ ++++ + + + + + + + + +
ConstantValueDescription
none0 No special behavior. Layout will proceed as normal.
widget1 Widget container. + This will be resized in response to certain events.
challenge2 Security challenge container. + This will be dismissed/shown in response to certain events, + possibly obscuring widget elements.
userSwitcher3 User switcher. + This will consume space from the total layout area.
scrim4 Scrim. This will block access to child views that + come before it in the child list in bouncer mode.
widgets5 The home for widgets. All widgets will be descendents of this.
expandChallengeHandle6 This is a handle that is used for expanding the + security challenge container when it is collapsed.
pageDeleteDropTarget7 Delete drop target. This will be the drop target to delete pages.
+

This is a private symbol. + @attr name com.android.internal:layout_childType + */ + public static final int SlidingChallengeLayout_Layout_layout_childType = 1; + /** +

+ @attr description + The maximum valid height for this item. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
unbounded-1 Indicates that the view may be resized arbitrarily large.
+

This is a private symbol. + @attr name com.android.internal:layout_maxHeight + */ + public static final int SlidingChallengeLayout_Layout_layout_maxHeight = 0; + /** SlidingDrawer specific attributes. These attributes are used to configure + a SlidingDrawer from XML. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #SlidingDrawer_allowSingleTap android:allowSingleTap} Indicates whether the drawer can be opened/closed by a single tap + on the handle.
{@link #SlidingDrawer_animateOnClick android:animateOnClick} Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle.
{@link #SlidingDrawer_bottomOffset android:bottomOffset} Extra offset for the handle at the bottom of the SlidingDrawer.
{@link #SlidingDrawer_content android:content} Identifier for the child that represents the drawer's content.
{@link #SlidingDrawer_handle android:handle} Identifier for the child that represents the drawer's handle.
{@link #SlidingDrawer_orientation android:orientation} Orientation of the SlidingDrawer.
{@link #SlidingDrawer_topOffset android:topOffset} Extra offset for the handle at the top of the SlidingDrawer.
+ @see #SlidingDrawer_allowSingleTap + @see #SlidingDrawer_animateOnClick + @see #SlidingDrawer_bottomOffset + @see #SlidingDrawer_content + @see #SlidingDrawer_handle + @see #SlidingDrawer_orientation + @see #SlidingDrawer_topOffset + */ + public static final int[] SlidingDrawer = { + 0x010100c4, 0x01010257, 0x01010258, 0x01010259, + 0x0101025a, 0x0101025b, 0x0101025c + }; + /** +

+ @attr description + Indicates whether the drawer can be opened/closed by a single tap + on the handle. (If false, the user must drag or fling, or click + using the trackball, to open/close the drawer.) Default is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowSingleTap}. + @attr name android:allowSingleTap + */ + public static final int SlidingDrawer_allowSingleTap = 3; + /** +

+ @attr description + Indicates whether the drawer should be opened/closed with an animation + when the user clicks the handle. Default is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateOnClick}. + @attr name android:animateOnClick + */ + public static final int SlidingDrawer_animateOnClick = 6; + /** +

+ @attr description + Extra offset for the handle at the bottom of the SlidingDrawer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#bottomOffset}. + @attr name android:bottomOffset + */ + public static final int SlidingDrawer_bottomOffset = 1; + /** +

+ @attr description + Identifier for the child that represents the drawer's content. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#content}. + @attr name android:content + */ + public static final int SlidingDrawer_content = 5; + /** +

+ @attr description + Identifier for the child that represents the drawer's handle. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#handle}. + @attr name android:handle + */ + public static final int SlidingDrawer_handle = 4; + /** +

+ @attr description + Orientation of the SlidingDrawer. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int SlidingDrawer_orientation = 0; + /** +

+ @attr description + Extra offset for the handle at the top of the SlidingDrawer. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#topOffset}. + @attr name android:topOffset + */ + public static final int SlidingDrawer_topOffset = 2; + /** Attributes that can be used with a SlidingTab. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #SlidingTab_orientation android:orientation} Use "horizontal" for a row, "vertical" for a column.
+ @see #SlidingTab_orientation + */ + public static final int[] SlidingTab = { + 0x010100c4 + }; + /** +

+ @attr description + Use "horizontal" for a row, "vertical" for a column. The default is horizontal. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
horizontal0 Defines an horizontal widget.
vertical1 Defines a vertical widget.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#orientation}. + @attr name android:orientation + */ + public static final int SlidingTab_orientation = 0; + /** Use spell-checker as the root tag of the XML resource that + describes an + {@link android.service.textservice.SpellCheckerService} service, which is + referenced from its + {@link android.view.textservice.SpellCheckerSession#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SpellChecker_label android:label} The name of the spell checker.
{@link #SpellChecker_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #SpellChecker_label + @see #SpellChecker_settingsActivity + */ + public static final int[] SpellChecker = { + 0x01010001, 0x01010225 + }; + /** +

+ @attr description + The name of the spell checker. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int SpellChecker_label = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SpellChecker_settingsActivity = 1; + /** This is the subtype of the spell checker. Subtype can describe locales (e.g. en_US, fr_FR...) +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #SpellChecker_Subtype_label android:label} The name of the subtype.
{@link #SpellChecker_Subtype_subtypeExtraValue android:subtypeExtraValue} The extra value of the subtype.
{@link #SpellChecker_Subtype_subtypeLocale android:subtypeLocale} The locale of the subtype.
+ @see #SpellChecker_Subtype_label + @see #SpellChecker_Subtype_subtypeExtraValue + @see #SpellChecker_Subtype_subtypeLocale + */ + public static final int[] SpellChecker_Subtype = { + 0x01010001, 0x01010399, 0x0101039a + }; + /** +

+ @attr description + The name of the subtype. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#label}. + @attr name android:label + */ + public static final int SpellChecker_Subtype_label = 0; + /** +

+ @attr description + The extra value of the subtype. This string can be any string and will be passed to + the SpellChecker. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeExtraValue}. + @attr name android:subtypeExtraValue + */ + public static final int SpellChecker_Subtype_subtypeExtraValue = 2; + /** +

+ @attr description + The locale of the subtype. This string should be a locale (e.g. en_US, fr_FR...) + This is also used by the framework to know the supported locales + of the spell checker. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#subtypeLocale}. + @attr name android:subtypeLocale + */ + public static final int SpellChecker_Subtype_subtypeLocale = 1; + /** Attributes that can be used with a Spinner. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #Spinner_disableChildrenWhenDisabled android:disableChildrenWhenDisabled} Whether this spinner should mark child views as enabled/disabled when + the spinner itself is enabled/disabled.
{@link #Spinner_dropDownHorizontalOffset android:dropDownHorizontalOffset} Horizontal offset from the spinner widget for positioning the dropdown + in spinnerMode="dropdown".
{@link #Spinner_dropDownSelector android:dropDownSelector} List selector to use for spinnerMode="dropdown" display.
{@link #Spinner_dropDownVerticalOffset android:dropDownVerticalOffset} Vertical offset from the spinner widget for positioning the dropdown in + spinnerMode="dropdown".
{@link #Spinner_dropDownWidth android:dropDownWidth} Width of the dropdown in spinnerMode="dropdown".
{@link #Spinner_gravity android:gravity} Gravity setting for positioning the currently selected item.
{@link #Spinner_popupBackground android:popupBackground} Background drawable to use for the dropdown in spinnerMode="dropdown".
{@link #Spinner_popupPromptView android:popupPromptView} Reference to a layout to use for displaying a prompt in the dropdown for + spinnerMode="dropdown".
{@link #Spinner_prompt android:prompt} The prompt to display when the spinner's dialog is shown.
{@link #Spinner_spinnerMode android:spinnerMode} Display mode for spinner options.
+ @see #Spinner_disableChildrenWhenDisabled + @see #Spinner_dropDownHorizontalOffset + @see #Spinner_dropDownSelector + @see #Spinner_dropDownVerticalOffset + @see #Spinner_dropDownWidth + @see #Spinner_gravity + @see #Spinner_popupBackground + @see #Spinner_popupPromptView + @see #Spinner_prompt + @see #Spinner_spinnerMode + */ + public static final int[] Spinner = { + 0x010100af, 0x01010175, 0x01010176, 0x0101017b, + 0x01010262, 0x010102ac, 0x010102ad, 0x010102f1, + 0x0101043a, 0x0101043b + }; + /** +

+ @attr description + Whether this spinner should mark child views as enabled/disabled when + the spinner itself is enabled/disabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:disableChildrenWhenDisabled + */ + public static final int Spinner_disableChildrenWhenDisabled = 9; + /** +

+ @attr description + Horizontal offset from the spinner widget for positioning the dropdown + in spinnerMode="dropdown". + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHorizontalOffset}. + @attr name android:dropDownHorizontalOffset + */ + public static final int Spinner_dropDownHorizontalOffset = 5; + /** +

+ @attr description + List selector to use for spinnerMode="dropdown" display. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSelector}. + @attr name android:dropDownSelector + */ + public static final int Spinner_dropDownSelector = 1; + /** +

+ @attr description + Vertical offset from the spinner widget for positioning the dropdown in + spinnerMode="dropdown". + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownVerticalOffset}. + @attr name android:dropDownVerticalOffset + */ + public static final int Spinner_dropDownVerticalOffset = 6; + /** +

+ @attr description + Width of the dropdown in spinnerMode="dropdown". + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The dropdown should fill the width of the screen. + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The dropdown should fit the width of the screen. + Introduced in API Level 8.
wrap_content-2 The dropdown should fit the width of its anchor.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownWidth}. + @attr name android:dropDownWidth + */ + public static final int Spinner_dropDownWidth = 4; + /** +

+ @attr description + Gravity setting for positioning the currently selected item. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int Spinner_gravity = 0; + /** +

+ @attr description + Background drawable to use for the dropdown in spinnerMode="dropdown". + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupBackground}. + @attr name android:popupBackground + */ + public static final int Spinner_popupBackground = 2; + /** +

+ @attr description + Reference to a layout to use for displaying a prompt in the dropdown for + spinnerMode="dropdown". This layout must contain a TextView with the id + {@code @android:id/text1} to be populated with the prompt text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:popupPromptView + */ + public static final int Spinner_popupPromptView = 8; + /** +

+ @attr description + The prompt to display when the spinner's dialog is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#prompt}. + @attr name android:prompt + */ + public static final int Spinner_prompt = 3; + /** +

+ @attr description + Display mode for spinner options. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
dialog0 Spinner options will be presented to the user as a dialog window.
dropdown1 Spinner options will be presented to the user as an inline dropdown + anchored to the spinner widget itself.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerMode}. + @attr name android:spinnerMode + */ + public static final int Spinner_spinnerMode = 7; + /** Attributes that can be used with a StackView. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #StackView_clickColor android:clickColor} Color of the outline of click feedback.
{@link #StackView_resOutColor android:resOutColor} Color of the res-out outline.
+ @see #StackView_clickColor + @see #StackView_resOutColor + */ + public static final int[] StackView = { + 0x01010437, 0x01010438 + }; + /** +

+ @attr description + Color of the outline of click feedback. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:clickColor + */ + public static final int StackView_clickColor = 1; + /** +

+ @attr description + Color of the res-out outline. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:resOutColor + */ + public static final int StackView_resOutColor = 0; + /** Drawable used to render several states. Each state is represented by + a child drawable. +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #StateListDrawable_autoMirrored android:autoMirrored} Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left).
{@link #StateListDrawable_constantSize android:constantSize} If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states.
{@link #StateListDrawable_dither android:dither} Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen).
{@link #StateListDrawable_enterFadeDuration android:enterFadeDuration} Amount of time (in milliseconds) to fade in a new state drawable.
{@link #StateListDrawable_exitFadeDuration android:exitFadeDuration} Amount of time (in milliseconds) to fade out an old state drawable.
{@link #StateListDrawable_variablePadding android:variablePadding} If true, allows the drawable's padding to change based on the + current state that is selected.
{@link #StateListDrawable_visible android:visible} Indicates whether the drawable should be initially visible.
+ @see #StateListDrawable_autoMirrored + @see #StateListDrawable_constantSize + @see #StateListDrawable_dither + @see #StateListDrawable_enterFadeDuration + @see #StateListDrawable_exitFadeDuration + @see #StateListDrawable_variablePadding + @see #StateListDrawable_visible + */ + public static final int[] StateListDrawable = { + 0x0101011c, 0x01010194, 0x01010195, 0x01010196, + 0x0101030c, 0x0101030d, 0x010103ea + }; + /** +

+ @attr description + Indicates if the drawable needs to be mirrored when its layout direction is + RTL (right-to-left). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoMirrored}. + @attr name android:autoMirrored + */ + public static final int StateListDrawable_autoMirrored = 6; + /** +

+ @attr description + If true, the drawable's reported internal size will remain + constant as the state changes; the size is the maximum of all + of the states. If false, the size will vary based on the + current state. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#constantSize}. + @attr name android:constantSize + */ + public static final int StateListDrawable_constantSize = 3; + /** +

+ @attr description + Enables or disables dithering of the bitmap if the bitmap does not have the + same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with + an RGB 565 screen). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dither}. + @attr name android:dither + */ + public static final int StateListDrawable_dither = 0; + /** +

+ @attr description + Amount of time (in milliseconds) to fade in a new state drawable. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enterFadeDuration}. + @attr name android:enterFadeDuration + */ + public static final int StateListDrawable_enterFadeDuration = 4; + /** +

+ @attr description + Amount of time (in milliseconds) to fade out an old state drawable. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#exitFadeDuration}. + @attr name android:exitFadeDuration + */ + public static final int StateListDrawable_exitFadeDuration = 5; + /** +

+ @attr description + If true, allows the drawable's padding to change based on the + current state that is selected. If false, the padding will + stay the same (based on the maximum padding of all the states). + Enabling this feature requires that the owner of the drawable + deal with performing layout when the state changes, which is + often not supported. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#variablePadding}. + @attr name android:variablePadding + */ + public static final int StateListDrawable_variablePadding = 2; + /** +

+ @attr description + Indicates whether the drawable should be initially visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#visible}. + @attr name android:visible + */ + public static final int StateListDrawable_visible = 1; + /** Attributes that can be used with a Storage. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Storage_allowMassStorage android:allowMassStorage} true if the storage can be shared via USB mass storage
{@link #Storage_emulated android:emulated} true if the storage is emulated via the FUSE sdcard daemon
{@link #Storage_maxFileSize android:maxFileSize} maximum file size for the volume in megabytes, zero or unspecified if it is unbounded
{@link #Storage_mountPoint android:mountPoint} path to mount point for the storage
{@link #Storage_mtpReserve android:mtpReserve} number of megabytes of storage MTP should reserve for free storage + (used for emulated storage that is shared with system's data partition)
{@link #Storage_primary android:primary} true if the storage is the primary external storage
{@link #Storage_removable android:removable} true if the storage is removable
{@link #Storage_storageDescription android:storageDescription} user visible description of the storage
+ @see #Storage_allowMassStorage + @see #Storage_emulated + @see #Storage_maxFileSize + @see #Storage_mountPoint + @see #Storage_mtpReserve + @see #Storage_primary + @see #Storage_removable + @see #Storage_storageDescription + */ + public static final int[] Storage = { + 0x01010469, 0x0101046a, 0x0101046b, 0x0101046c, + 0x0101046d, 0x0101046e, 0x0101046f, 0x01010470 + }; + /** +

+ @attr description + true if the storage can be shared via USB mass storage + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:allowMassStorage + */ + public static final int Storage_allowMassStorage = 6; + /** +

+ @attr description + true if the storage is emulated via the FUSE sdcard daemon + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:emulated + */ + public static final int Storage_emulated = 4; + /** +

+ @attr description + maximum file size for the volume in megabytes, zero or unspecified if it is unbounded + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:maxFileSize + */ + public static final int Storage_maxFileSize = 7; + /** +

+ @attr description + path to mount point for the storage + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:mountPoint + */ + public static final int Storage_mountPoint = 0; + /** +

+ @attr description + number of megabytes of storage MTP should reserve for free storage + (used for emulated storage that is shared with system's data partition) + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:mtpReserve + */ + public static final int Storage_mtpReserve = 5; + /** +

+ @attr description + true if the storage is the primary external storage + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:primary + */ + public static final int Storage_primary = 2; + /** +

+ @attr description + true if the storage is removable + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:removable + */ + public static final int Storage_removable = 3; + /** +

+ @attr description + user visible description of the storage + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:storageDescription + */ + public static final int Storage_storageDescription = 1; + /** Attributes that can be used with a SuggestionSpan. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #SuggestionSpan_textUnderlineColor android:textUnderlineColor} The underline color
{@link #SuggestionSpan_textUnderlineThickness android:textUnderlineThickness} The underline thickness
+ @see #SuggestionSpan_textUnderlineColor + @see #SuggestionSpan_textUnderlineThickness + */ + public static final int[] SuggestionSpan = { + 0x010103f4, 0x010103f5 + }; + /** +

+ @attr description + The underline color + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This is a private symbol. + @attr name com.android.internal:textUnderlineColor + */ + public static final int SuggestionSpan_textUnderlineColor = 0; + /** +

+ @attr description + The underline thickness + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This is a private symbol. + @attr name com.android.internal:textUnderlineThickness + */ + public static final int SuggestionSpan_textUnderlineThickness = 1; + /** Attributes that can be used with a Switch. +

Includes the following attributes:

+ + + + + + + + + + + + +
AttributeDescription
{@link #Switch_switchMinWidth android:switchMinWidth} Minimum width for the switch component
{@link #Switch_switchPadding android:switchPadding} Minimum space between the switch and caption text
{@link #Switch_switchTextAppearance android:switchTextAppearance} TextAppearance style for text displayed on the switch thumb.
{@link #Switch_textOff android:textOff} Text to use when the switch is in the unchecked/"off" state.
{@link #Switch_textOn android:textOn} Text to use when the switch is in the checked/"on" state.
{@link #Switch_thumb android:thumb} Drawable to use as the "thumb" that switches back and forth.
{@link #Switch_thumbTextPadding android:thumbTextPadding} Amount of padding on either side of text within the switch thumb.
{@link #Switch_track android:track} Drawable to use as the "track" that the switch thumb slides within.
+ @see #Switch_switchMinWidth + @see #Switch_switchPadding + @see #Switch_switchTextAppearance + @see #Switch_textOff + @see #Switch_textOn + @see #Switch_thumb + @see #Switch_thumbTextPadding + @see #Switch_track + */ + public static final int[] Switch = { + 0x01010124, 0x01010125, 0x01010142, 0x0101036e, + 0x0101036f, 0x01010370, 0x01010371, 0x01010372 + }; + /** +

+ @attr description + Minimum width for the switch component + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchMinWidth}. + @attr name android:switchMinWidth + */ + public static final int Switch_switchMinWidth = 5; + /** +

+ @attr description + Minimum space between the switch and caption text + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchPadding}. + @attr name android:switchPadding + */ + public static final int Switch_switchPadding = 6; + /** +

+ @attr description + TextAppearance style for text displayed on the switch thumb. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextAppearance}. + @attr name android:switchTextAppearance + */ + public static final int Switch_switchTextAppearance = 3; + /** +

+ @attr description + Text to use when the switch is in the unchecked/"off" state. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOff}. + @attr name android:textOff + */ + public static final int Switch_textOff = 1; + /** +

+ @attr description + Text to use when the switch is in the checked/"on" state. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOn}. + @attr name android:textOn + */ + public static final int Switch_textOn = 0; + /** +

+ @attr description + Drawable to use as the "thumb" that switches back and forth. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumb}. + @attr name android:thumb + */ + public static final int Switch_thumb = 2; + /** +

+ @attr description + Amount of padding on either side of text within the switch thumb. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbTextPadding}. + @attr name android:thumbTextPadding + */ + public static final int Switch_thumbTextPadding = 7; + /** +

+ @attr description + Drawable to use as the "track" that the switch thumb slides within. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#track}. + @attr name android:track + */ + public static final int Switch_track = 4; + /** Attributes that can be used with a SwitchPreference. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #SwitchPreference_disableDependentsState android:disableDependentsState} The state (true for on, or false for off) that causes dependents to be disabled.
{@link #SwitchPreference_summaryOff android:summaryOff} The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is unchecked.
{@link #SwitchPreference_summaryOn android:summaryOn} The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is checked.
{@link #SwitchPreference_switchTextOff android:switchTextOff} The text used on the switch itself when in the "off" state.
{@link #SwitchPreference_switchTextOn android:switchTextOn} The text used on the switch itself when in the "on" state.
+ @see #SwitchPreference_disableDependentsState + @see #SwitchPreference_summaryOff + @see #SwitchPreference_summaryOn + @see #SwitchPreference_switchTextOff + @see #SwitchPreference_switchTextOn + */ + public static final int[] SwitchPreference = { + 0x010101ef, 0x010101f0, 0x010101f1, 0x0101036b, + 0x0101036c + }; + /** +

+ @attr description + The state (true for on, or false for off) that causes dependents to be disabled. By default, + dependents will be disabled when this is unchecked, so the value of this preference is false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disableDependentsState}. + @attr name android:disableDependentsState + */ + public static final int SwitchPreference_disableDependentsState = 2; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is unchecked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOff}. + @attr name android:summaryOff + */ + public static final int SwitchPreference_summaryOff = 1; + /** +

+ @attr description + The summary for the Preference in a PreferenceActivity screen when the + SwitchPreference is checked. If separate on/off summaries are not + needed, the summary attribute can be used instead. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#summaryOn}. + @attr name android:summaryOn + */ + public static final int SwitchPreference_summaryOn = 0; + /** +

+ @attr description + The text used on the switch itself when in the "off" state. + This should be a very SHORT string, as it appears in a small space. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextOff}. + @attr name android:switchTextOff + */ + public static final int SwitchPreference_switchTextOff = 4; + /** +

+ @attr description + The text used on the switch itself when in the "on" state. + This should be a very SHORT string, as it appears in a small space. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchTextOn}. + @attr name android:switchTextOn + */ + public static final int SwitchPreference_switchTextOn = 3; + /** Use account-authenticator as the root tag of the XML resource that + describes an account authenticator. + +

Includes the following attributes:

+ + + + + + + + + + + +
AttributeDescription
{@link #SyncAdapter_accountType android:accountType} The account type this authenticator handles.
{@link #SyncAdapter_allowParallelSyncs android:allowParallelSyncs} Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority.
{@link #SyncAdapter_contentAuthority android:contentAuthority} the authority of a content provider.
{@link #SyncAdapter_isAlwaysSyncable android:isAlwaysSyncable} Set to true to tell the SyncManager to automatically call setIsSyncable(.
{@link #SyncAdapter_settingsActivity android:settingsActivity} If provided, specifies the action of the settings + activity for this SyncAdapter.
{@link #SyncAdapter_supportsUploading android:supportsUploading}
{@link #SyncAdapter_userVisible android:userVisible}
+ @see #SyncAdapter_accountType + @see #SyncAdapter_allowParallelSyncs + @see #SyncAdapter_contentAuthority + @see #SyncAdapter_isAlwaysSyncable + @see #SyncAdapter_settingsActivity + @see #SyncAdapter_supportsUploading + @see #SyncAdapter_userVisible + */ + public static final int[] SyncAdapter = { + 0x01010225, 0x0101028f, 0x01010290, 0x01010291, + 0x0101029b, 0x01010332, 0x01010333 + }; + /** +

+ @attr description + The account type this authenticator handles. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#accountType}. + @attr name android:accountType + */ + public static final int SyncAdapter_accountType = 1; + /** +

+ @attr description + Set to true to tell the SyncManager that this SyncAdapter supports + multiple simultaneous syncs for the same account type and authority. + Otherwise the SyncManager will be sure not to issue a start sync request + to this SyncAdapter if the SyncAdapter is already syncing another account. + Defaults to false. + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#allowParallelSyncs}. + @attr name android:allowParallelSyncs + */ + public static final int SyncAdapter_allowParallelSyncs = 5; + /** +

+ @attr description + the authority of a content provider. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#contentAuthority}. + @attr name android:contentAuthority + */ + public static final int SyncAdapter_contentAuthority = 2; + /** +

+ @attr description + Set to true to tell the SyncManager to automatically call setIsSyncable(..., ..., 1) + for the SyncAdapter instead of issuaing an initialization sync to the SyncAdapter. + Defaults to false. + + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isAlwaysSyncable}. + @attr name android:isAlwaysSyncable + */ + public static final int SyncAdapter_isAlwaysSyncable = 6; + /** +

+ @attr description + If provided, specifies the action of the settings + activity for this SyncAdapter. + + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int SyncAdapter_settingsActivity = 0; + /** +

This symbol is the offset where the {@link android.R.attr#supportsUploading} + attribute's value can be found in the {@link #SyncAdapter} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:supportsUploading + */ + public static final int SyncAdapter_supportsUploading = 4; + /** +

This symbol is the offset where the {@link android.R.attr#userVisible} + attribute's value can be found in the {@link #SyncAdapter} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:userVisible + */ + public static final int SyncAdapter_userVisible = 3; + /** Attributes that can be used with a TabWidget. +

Includes the following attributes:

+ + + + + + + + + +
AttributeDescription
{@link #TabWidget_divider android:divider} Drawable used to draw the divider between tabs.
{@link #TabWidget_tabLayout android:tabLayout} Layout used to organize each tab's content.
{@link #TabWidget_tabStripEnabled android:tabStripEnabled} Determines whether the strip under the tab indicators is drawn or not.
{@link #TabWidget_tabStripLeft android:tabStripLeft} Drawable used to draw the left part of the strip underneath the tabs.
{@link #TabWidget_tabStripRight android:tabStripRight} Drawable used to draw the right part of the strip underneath the tabs.
+ @see #TabWidget_divider + @see #TabWidget_tabLayout + @see #TabWidget_tabStripEnabled + @see #TabWidget_tabStripLeft + @see #TabWidget_tabStripRight + */ + public static final int[] TabWidget = { + 0x01010129, 0x010102bb, 0x010102bc, 0x010102bd, + 0x01010439 + }; + /** +

+ @attr description + Drawable used to draw the divider between tabs. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#divider}. + @attr name android:divider + */ + public static final int TabWidget_divider = 0; + /** +

+ @attr description + Layout used to organize each tab's content. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:tabLayout + */ + public static final int TabWidget_tabLayout = 4; + /** +

+ @attr description + Determines whether the strip under the tab indicators is drawn or not. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripEnabled}. + @attr name android:tabStripEnabled + */ + public static final int TabWidget_tabStripEnabled = 3; + /** +

+ @attr description + Drawable used to draw the left part of the strip underneath the tabs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripLeft}. + @attr name android:tabStripLeft + */ + public static final int TabWidget_tabStripLeft = 1; + /** +

+ @attr description + Drawable used to draw the right part of the strip underneath the tabs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabStripRight}. + @attr name android:tabStripRight + */ + public static final int TabWidget_tabStripRight = 2; + /** Attributes that can be used with a TableLayout. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TableLayout_collapseColumns android:collapseColumns} The zero-based index of the columns to collapse.
{@link #TableLayout_shrinkColumns android:shrinkColumns} The zero-based index of the columns to shrink.
{@link #TableLayout_stretchColumns android:stretchColumns} The zero-based index of the columns to stretch.
+ @see #TableLayout_collapseColumns + @see #TableLayout_shrinkColumns + @see #TableLayout_stretchColumns + */ + public static final int[] TableLayout = { + 0x01010149, 0x0101014a, 0x0101014b + }; + /** +

+ @attr description + The zero-based index of the columns to collapse. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#collapseColumns}. + @attr name android:collapseColumns + */ + public static final int TableLayout_collapseColumns = 2; + /** +

+ @attr description + The zero-based index of the columns to shrink. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can shrink all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shrinkColumns}. + @attr name android:shrinkColumns + */ + public static final int TableLayout_shrinkColumns = 1; + /** +

+ @attr description + The zero-based index of the columns to stretch. The column indices + must be separated by a comma: 1, 2, 5. Illegal and duplicate + indices are ignored. You can stretch all columns by using the + value "*" instead. Note that a column can be marked stretchable + and shrinkable at the same time. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#stretchColumns}. + @attr name android:stretchColumns + */ + public static final int TableLayout_stretchColumns = 0; + /** Attributes that can be used with a TableRow. + */ + public static final int[] TableRow = { + + }; + /** Attributes that can be used with a TableRow_Cell. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #TableRow_Cell_layout_column android:layout_column} The index of the column in which this child should be.
{@link #TableRow_Cell_layout_span android:layout_span} Defines how many columns this child should span.
+ @see #TableRow_Cell_layout_column + @see #TableRow_Cell_layout_span + */ + public static final int[] TableRow_Cell = { + 0x0101014c, 0x0101014d + }; + /** +

+ @attr description + The index of the column in which this child should be. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_column}. + @attr name android:layout_column + */ + public static final int TableRow_Cell_layout_column = 0; + /** +

+ @attr description + Defines how many columns this child should span. Must be >= 1. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_span}. + @attr name android:layout_span + */ + public static final int TableRow_Cell_layout_span = 1; + /** Attributes that can be used with a TextAppearance. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #TextAppearance_fontFamily android:fontFamily} Font family (named by string) for the text.
{@link #TextAppearance_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #TextAppearance_shadowDx android:shadowDx} Horizontal offset of the shadow.
{@link #TextAppearance_shadowDy android:shadowDy} Vertical offset of the shadow.
{@link #TextAppearance_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #TextAppearance_textAllCaps android:textAllCaps} Present the text in ALL CAPS.
{@link #TextAppearance_textColor android:textColor} Text color.
{@link #TextAppearance_textColorHighlight android:textColorHighlight} Color of the text selection highlight.
{@link #TextAppearance_textColorHint android:textColorHint} Color of the hint text.
{@link #TextAppearance_textColorLink android:textColorLink} Color of the links.
{@link #TextAppearance_textSize android:textSize} Size of the text.
{@link #TextAppearance_textStyle android:textStyle} Style (bold, italic, bolditalic) for the text.
{@link #TextAppearance_typeface android:typeface} Typeface (normal, sans, serif, monospace) for the text.
+ @see #TextAppearance_fontFamily + @see #TextAppearance_shadowColor + @see #TextAppearance_shadowDx + @see #TextAppearance_shadowDy + @see #TextAppearance_shadowRadius + @see #TextAppearance_textAllCaps + @see #TextAppearance_textColor + @see #TextAppearance_textColorHighlight + @see #TextAppearance_textColorHint + @see #TextAppearance_textColorLink + @see #TextAppearance_textSize + @see #TextAppearance_textStyle + @see #TextAppearance_typeface + */ + public static final int[] TextAppearance = { + 0x01010095, 0x01010096, 0x01010097, 0x01010098, + 0x01010099, 0x0101009a, 0x0101009b, 0x01010161, + 0x01010162, 0x01010163, 0x01010164, 0x0101038c, + 0x010103ac + }; + /** +

+ @attr description + Font family (named by string) for the text. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fontFamily}. + @attr name android:fontFamily + */ + public static final int TextAppearance_fontFamily = 12; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int TextAppearance_shadowColor = 7; + /** +

+ @attr description + Horizontal offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDx}. + @attr name android:shadowDx + */ + public static final int TextAppearance_shadowDx = 8; + /** +

+ @attr description + Vertical offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDy}. + @attr name android:shadowDy + */ + public static final int TextAppearance_shadowDy = 9; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int TextAppearance_shadowRadius = 10; + /** +

+ @attr description + Present the text in ALL CAPS. This may use a small-caps form when available. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAllCaps}. + @attr name android:textAllCaps + */ + public static final int TextAppearance_textAllCaps = 11; + /** +

+ @attr description + Text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int TextAppearance_textColor = 3; + /** +

+ @attr description + Color of the text selection highlight. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlight}. + @attr name android:textColorHighlight + */ + public static final int TextAppearance_textColorHighlight = 4; + /** +

+ @attr description + Color of the hint text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHint}. + @attr name android:textColorHint + */ + public static final int TextAppearance_textColorHint = 5; + /** +

+ @attr description + Color of the links. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLink}. + @attr name android:textColorLink + */ + public static final int TextAppearance_textColorLink = 6; + /** +

+ @attr description + Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSize}. + @attr name android:textSize + */ + public static final int TextAppearance_textSize = 0; + /** +

+ @attr description + Style (bold, italic, bolditalic) for the text. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textStyle}. + @attr name android:textStyle + */ + public static final int TextAppearance_textStyle = 2; + /** +

+ @attr description + Typeface (normal, sans, serif, monospace) for the text. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#typeface}. + @attr name android:typeface + */ + public static final int TextAppearance_typeface = 1; + /** Attributes that can be used with a TextClock. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TextClock_format12Hour android:format12Hour} Specifies the formatting pattern used to show the time and/or date + in 12-hour mode.
{@link #TextClock_format24Hour android:format24Hour} Specifies the formatting pattern used to show the time and/or date + in 24-hour mode.
{@link #TextClock_timeZone android:timeZone} Specifies the time zone to use.
+ @see #TextClock_format12Hour + @see #TextClock_format24Hour + @see #TextClock_timeZone + */ + public static final int[] TextClock = { + 0x010103ca, 0x010103cb, 0x010103cc + }; + /** +

+ @attr description + Specifies the formatting pattern used to show the time and/or date + in 12-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "h:mm a". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format12Hour}. + @attr name android:format12Hour + */ + public static final int TextClock_format12Hour = 0; + /** +

+ @attr description + Specifies the formatting pattern used to show the time and/or date + in 24-hour mode. Please refer to {@link android.text.format.DateFormat} + for a complete description of accepted formatting patterns. + The default pattern is a locale-appropriate equivalent of "H:mm". + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#format24Hour}. + @attr name android:format24Hour + */ + public static final int TextClock_format24Hour = 1; + /** +

+ @attr description + Specifies the time zone to use. When this attribute is specified, the + TextClock will ignore the time zone of the system. To use the user's + time zone, do not specify this attribute. The default value is the + user's time zone. Please refer to {@link java.util.TimeZone} for more + information about time zone ids. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#timeZone}. + @attr name android:timeZone + */ + public static final int TextClock_timeZone = 2; + /** Attributes that can be used with a TextSwitcher. + */ + public static final int[] TextSwitcher = { + + }; + /** Use tts-engine as the root tag of the XML resource that + describes a text to speech engine implemented as a subclass of + {@link android.speech.tts.TextToSpeechService}. + + The XML resource must be referenced from its + {@link android.speech.tts.TextToSpeech.Engine#SERVICE_META_DATA} meta-data + entry. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextToSpeechEngine_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
+ @see #TextToSpeechEngine_settingsActivity + */ + public static final int[] TextToSpeechEngine = { + 0x01010225 + }; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int TextToSpeechEngine_settingsActivity = 0; + /** Attributes that can be used with a TextView. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #TextView_autoLink android:autoLink} Controls whether links such as urls and email addresses are + automatically found and converted to clickable links.
{@link #TextView_autoText android:autoText} If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors.
{@link #TextView_bufferType android:bufferType} Determines the minimum type that getText() will return.
{@link #TextView_capitalize android:capitalize} If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types.
{@link #TextView_cursorVisible android:cursorVisible} Makes the cursor visible (the default) or invisible.
{@link #TextView_digits android:digits} If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept.
{@link #TextView_drawableBottom android:drawableBottom} The drawable to be drawn below the text.
{@link #TextView_drawableEnd android:drawableEnd} The drawable to be drawn to the end of the text.
{@link #TextView_drawableLeft android:drawableLeft} The drawable to be drawn to the left of the text.
{@link #TextView_drawablePadding android:drawablePadding} The padding between the drawables and the text.
{@link #TextView_drawableRight android:drawableRight} The drawable to be drawn to the right of the text.
{@link #TextView_drawableStart android:drawableStart} The drawable to be drawn to the start of the text.
{@link #TextView_drawableTop android:drawableTop} The drawable to be drawn above the text.
{@link #TextView_editable android:editable} If set, specifies that this TextView has an input method.
{@link #TextView_editorExtras android:editorExtras} Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method.
{@link #TextView_ellipsize android:ellipsize} If set, causes words that are longer than the view is wide + to be ellipsized instead of broken in the middle.
{@link #TextView_ems android:ems} Makes the TextView be exactly this many ems wide.
{@link #TextView_enabled android:enabled} Specifies whether the widget is enabled.
{@link #TextView_fontFamily android:fontFamily} Font family (named by string) for the text.
{@link #TextView_freezesText android:freezesText} If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position.
{@link #TextView_gravity android:gravity} Specifies how to align the text by the view's x- and/or y-axis + when the text is smaller than the view.
{@link #TextView_height android:height} Makes the TextView be exactly this many pixels tall.
{@link #TextView_hint android:hint} Hint text to display when the text is empty.
{@link #TextView_imeActionId android:imeActionId} Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view.
{@link #TextView_imeActionLabel android:imeActionLabel} Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view.
{@link #TextView_imeOptions android:imeOptions} Additional features you can enable in an IME associated with an editor + to improve the integration with your application.
{@link #TextView_includeFontPadding android:includeFontPadding} Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly.
{@link #TextView_inputMethod android:inputMethod} If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name).
{@link #TextView_inputType android:inputType} The type of data being placed in a text field, used to help an + input method decide how to let the user enter text.
{@link #TextView_lineSpacingExtra android:lineSpacingExtra} Extra spacing between lines of text.
{@link #TextView_lineSpacingMultiplier android:lineSpacingMultiplier} Extra spacing between lines of text, as a multiplier.
{@link #TextView_lines android:lines} Makes the TextView be exactly this many lines tall.
{@link #TextView_linksClickable android:linksClickable} If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found.
{@link #TextView_marqueeRepeatLimit android:marqueeRepeatLimit} The number of times to repeat the marquee animation.
{@link #TextView_maxEms android:maxEms} Makes the TextView be at most this many ems wide.
{@link #TextView_maxHeight android:maxHeight} Makes the TextView be at most this many pixels tall.
{@link #TextView_maxLength android:maxLength} Set an input filter to constrain the text length to the + specified number.
{@link #TextView_maxLines android:maxLines} Makes the TextView be at most this many lines tall.
{@link #TextView_maxWidth android:maxWidth} Makes the TextView be at most this many pixels wide.
{@link #TextView_minEms android:minEms} Makes the TextView be at least this many ems wide.
{@link #TextView_minHeight android:minHeight} Makes the TextView be at least this many pixels tall.
{@link #TextView_minLines android:minLines} Makes the TextView be at least this many lines tall.
{@link #TextView_minWidth android:minWidth} Makes the TextView be at least this many pixels wide.
{@link #TextView_numeric android:numeric} If set, specifies that this TextView has a numeric input method.
{@link #TextView_password android:password} Whether the characters of the field are displayed as + password dots instead of themselves.
{@link #TextView_phoneNumber android:phoneNumber} If set, specifies that this TextView has a phone number input + method.
{@link #TextView_privateImeOptions android:privateImeOptions} An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method.
{@link #TextView_scrollHorizontally android:scrollHorizontally} Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally).
{@link #TextView_selectAllOnFocus android:selectAllOnFocus} If the text is selectable, select it all when the view takes + focus.
{@link #TextView_shadowColor android:shadowColor} Place a shadow of the specified color behind the text.
{@link #TextView_shadowDx android:shadowDx} Horizontal offset of the shadow.
{@link #TextView_shadowDy android:shadowDy} Vertical offset of the shadow.
{@link #TextView_shadowRadius android:shadowRadius} Radius of the shadow.
{@link #TextView_singleLine android:singleLine} Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key.
{@link #TextView_text android:text} Text to display.
{@link #TextView_textAllCaps android:textAllCaps} Present the text in ALL CAPS.
{@link #TextView_textAppearance android:textAppearance} Base text color, typeface, size, and style.
{@link #TextView_textColor android:textColor} Text color.
{@link #TextView_textColorHighlight android:textColorHighlight} Color of the text selection highlight.
{@link #TextView_textColorHint android:textColorHint} Color of the hint text.
{@link #TextView_textColorLink android:textColorLink} Text color for links.
{@link #TextView_textCursorDrawable android:textCursorDrawable} Reference to a drawable that will be drawn under the insertion cursor.
{@link #TextView_textEditNoPasteWindowLayout android:textEditNoPasteWindowLayout} Variation of textEditPasteWindowLayout displayed when the clipboard is empty.
{@link #TextView_textEditPasteWindowLayout android:textEditPasteWindowLayout} The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field.
{@link #TextView_textEditSideNoPasteWindowLayout android:textEditSideNoPasteWindowLayout} Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty.
{@link #TextView_textEditSidePasteWindowLayout android:textEditSidePasteWindowLayout} Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top.
{@link #TextView_textEditSuggestionItemLayout android:textEditSuggestionItemLayout} Layout of the TextView item that will populate the suggestion popup window.
{@link #TextView_textIsSelectable android:textIsSelectable} Indicates that the content of a non-editable text can be selected.
{@link #TextView_textScaleX android:textScaleX} Sets the horizontal scaling factor for the text.
{@link #TextView_textSelectHandle android:textSelectHandle} Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text.
{@link #TextView_textSelectHandleLeft android:textSelectHandleLeft} Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region.
{@link #TextView_textSelectHandleRight android:textSelectHandleRight} Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region.
{@link #TextView_textSize android:textSize} Size of the text.
{@link #TextView_textStyle android:textStyle} Style (bold, italic, bolditalic) for the text.
{@link #TextView_typeface android:typeface} Typeface (normal, sans, serif, monospace) for the text.
{@link #TextView_width android:width} Makes the TextView be exactly this many pixels wide.
+ @see #TextView_autoLink + @see #TextView_autoText + @see #TextView_bufferType + @see #TextView_capitalize + @see #TextView_cursorVisible + @see #TextView_digits + @see #TextView_drawableBottom + @see #TextView_drawableEnd + @see #TextView_drawableLeft + @see #TextView_drawablePadding + @see #TextView_drawableRight + @see #TextView_drawableStart + @see #TextView_drawableTop + @see #TextView_editable + @see #TextView_editorExtras + @see #TextView_ellipsize + @see #TextView_ems + @see #TextView_enabled + @see #TextView_fontFamily + @see #TextView_freezesText + @see #TextView_gravity + @see #TextView_height + @see #TextView_hint + @see #TextView_imeActionId + @see #TextView_imeActionLabel + @see #TextView_imeOptions + @see #TextView_includeFontPadding + @see #TextView_inputMethod + @see #TextView_inputType + @see #TextView_lineSpacingExtra + @see #TextView_lineSpacingMultiplier + @see #TextView_lines + @see #TextView_linksClickable + @see #TextView_marqueeRepeatLimit + @see #TextView_maxEms + @see #TextView_maxHeight + @see #TextView_maxLength + @see #TextView_maxLines + @see #TextView_maxWidth + @see #TextView_minEms + @see #TextView_minHeight + @see #TextView_minLines + @see #TextView_minWidth + @see #TextView_numeric + @see #TextView_password + @see #TextView_phoneNumber + @see #TextView_privateImeOptions + @see #TextView_scrollHorizontally + @see #TextView_selectAllOnFocus + @see #TextView_shadowColor + @see #TextView_shadowDx + @see #TextView_shadowDy + @see #TextView_shadowRadius + @see #TextView_singleLine + @see #TextView_text + @see #TextView_textAllCaps + @see #TextView_textAppearance + @see #TextView_textColor + @see #TextView_textColorHighlight + @see #TextView_textColorHint + @see #TextView_textColorLink + @see #TextView_textCursorDrawable + @see #TextView_textEditNoPasteWindowLayout + @see #TextView_textEditPasteWindowLayout + @see #TextView_textEditSideNoPasteWindowLayout + @see #TextView_textEditSidePasteWindowLayout + @see #TextView_textEditSuggestionItemLayout + @see #TextView_textIsSelectable + @see #TextView_textScaleX + @see #TextView_textSelectHandle + @see #TextView_textSelectHandleLeft + @see #TextView_textSelectHandleRight + @see #TextView_textSize + @see #TextView_textStyle + @see #TextView_typeface + @see #TextView_width + */ + public static final int[] TextView = { + 0x0101000e, 0x01010034, 0x01010095, 0x01010096, + 0x01010097, 0x01010098, 0x01010099, 0x0101009a, + 0x0101009b, 0x010100ab, 0x010100af, 0x010100b0, + 0x010100b1, 0x0101011f, 0x01010120, 0x0101013f, + 0x01010140, 0x0101014e, 0x0101014f, 0x01010150, + 0x01010151, 0x01010152, 0x01010153, 0x01010154, + 0x01010155, 0x01010156, 0x01010157, 0x01010158, + 0x01010159, 0x0101015a, 0x0101015b, 0x0101015c, + 0x0101015d, 0x0101015e, 0x0101015f, 0x01010160, + 0x01010161, 0x01010162, 0x01010163, 0x01010164, + 0x01010165, 0x01010166, 0x01010167, 0x01010168, + 0x01010169, 0x0101016a, 0x0101016b, 0x0101016c, + 0x0101016d, 0x0101016e, 0x0101016f, 0x01010170, + 0x01010171, 0x01010217, 0x01010218, 0x0101021d, + 0x01010220, 0x01010223, 0x01010224, 0x01010264, + 0x01010265, 0x01010266, 0x010102c5, 0x010102c6, + 0x010102c7, 0x01010314, 0x01010315, 0x01010316, + 0x0101035e, 0x0101035f, 0x01010362, 0x01010374, + 0x0101038c, 0x01010392, 0x01010393, 0x010103ac + }; + /** +

+ @attr description + Controls whether links such as urls and email addresses are + automatically found and converted to clickable links. The default + value is "none", disabling this feature. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
none0x00 Match no patterns (default).
web0x01 Match Web URLs.
email0x02 Match email addresses.
phone0x04 Match phone numbers.
map0x08 Match map addresses.
all0x0f Match all patterns (equivalent to web|email|phone|map).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoLink}. + @attr name android:autoLink + */ + public static final int TextView_autoLink = 11; + /** +

+ @attr description + If set, specifies that this TextView has a textual input method + and automatically corrects some common spelling errors. + The default is "false". + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoText}. + @attr name android:autoText + */ + @Deprecated + public static final int TextView_autoText = 45; + /** +

+ @attr description + Determines the minimum type that getText() will return. + The default is "normal". + Note that EditText and LogTextBox always return Editable, + even if you specify something less powerful here. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0 Can return any CharSequence, possibly a + Spanned one if the source text was Spanned.
spannable1 Can only return Spannable.
editable2 Can only return Spannable and Editable.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#bufferType}. + @attr name android:bufferType + */ + public static final int TextView_bufferType = 17; + /** +

+ @attr description + If set, specifies that this TextView has a textual input method + and should automatically capitalize what the user types. + The default is "none". + {@deprecated Use inputType instead.} + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0 Don't automatically capitalize anything.
sentences1 Capitalize the first word of each sentence.
words2 Capitalize the first letter of every word.
characters3 Capitalize every character.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#capitalize}. + @attr name android:capitalize + */ + @Deprecated + public static final int TextView_capitalize = 44; + /** +

+ @attr description + Makes the cursor visible (the default) or invisible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#cursorVisible}. + @attr name android:cursorVisible + */ + public static final int TextView_cursorVisible = 21; + /** +

+ @attr description + If set, specifies that this TextView has a numeric input method + and that these specific characters are the ones that it will + accept. + If this is set, numeric is implied to be true. + The default is false. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#digits}. + @attr name android:digits + */ + public static final int TextView_digits = 41; + /** +

+ @attr description + The drawable to be drawn below the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableBottom}. + @attr name android:drawableBottom + */ + public static final int TextView_drawableBottom = 49; + /** +

+ @attr description + The drawable to be drawn to the end of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableEnd}. + @attr name android:drawableEnd + */ + public static final int TextView_drawableEnd = 74; + /** +

+ @attr description + The drawable to be drawn to the left of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableLeft}. + @attr name android:drawableLeft + */ + public static final int TextView_drawableLeft = 50; + /** +

+ @attr description + The padding between the drawables and the text. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawablePadding}. + @attr name android:drawablePadding + */ + public static final int TextView_drawablePadding = 52; + /** +

+ @attr description + The drawable to be drawn to the right of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableRight}. + @attr name android:drawableRight + */ + public static final int TextView_drawableRight = 51; + /** +

+ @attr description + The drawable to be drawn to the start of the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableStart}. + @attr name android:drawableStart + */ + public static final int TextView_drawableStart = 73; + /** +

+ @attr description + The drawable to be drawn above the text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawableTop}. + @attr name android:drawableTop + */ + public static final int TextView_drawableTop = 48; + /** +

+ @attr description + If set, specifies that this TextView has an input method. + It will be a textual one unless it has otherwise been specified. + For TextView, this is false by default. For EditText, it is + true by default. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editable}. + @attr name android:editable + */ + @Deprecated + public static final int TextView_editable = 46; + /** +

+ @attr description + Reference to an + {@link android.R.styleable#InputExtras <input-extras>} + XML resource containing additional data to + supply to an input method, which is private to the implementation + of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#extras + EditorInfo.extras} field when the input + method is connected. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editorExtras}. + @attr name android:editorExtras + */ + public static final int TextView_editorExtras = 58; + /** +

+ @attr description + If set, causes words that are longer than the view is wide + to be ellipsized instead of broken in the middle. + You will often also want to set scrollHorizontally or singleLine + as well so that the text as a whole is also constrained to + a single line instead of still allowed to be broken onto + multiple lines. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
none0
start1
middle2
end3
marquee4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#ellipsize}. + @attr name android:ellipsize + */ + public static final int TextView_ellipsize = 9; + /** +

+ @attr description + Makes the TextView be exactly this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ems}. + @attr name android:ems + */ + public static final int TextView_ems = 27; + /** +

+ @attr description + Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass. + For example, a non-enabled EditText prevents the user from editing the contained text, and + a non-enabled Button prevents the user from tapping the button. + The appearance of enabled and non-enabled widgets may differ, if the drawables referenced + from evaluating state_enabled differ. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#enabled}. + @attr name android:enabled + */ + public static final int TextView_enabled = 0; + /** +

+ @attr description + Font family (named by string) for the text. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fontFamily}. + @attr name android:fontFamily + */ + public static final int TextView_fontFamily = 75; + /** +

+ @attr description + If set, the text view will include its current complete text + inside of its frozen icicle in addition to meta-data such as + the current cursor position. By default this is disabled; + it can be useful when the contents of a text view is not stored + in a persistent place such as a content provider. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#freezesText}. + @attr name android:freezesText + */ + public static final int TextView_freezesText = 47; + /** +

+ @attr description + Specifies how to align the text by the view's x- and/or y-axis + when the text is smaller than the view. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + +
ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of + the child clipped to its container's bounds. + The clip will be based on the vertical gravity: a top gravity will clip the bottom + edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of + the child clipped to its container's bounds. + The clip will be based on the horizontal gravity: a left gravity will clip the right + edge, a right gravity will clip the left edge, and neither will clip both edges.
start0x00800003 Push object to the beginning of its container, not changing its size.
end0x00800005 Push object to the end of its container, not changing its size.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#gravity}. + @attr name android:gravity + */ + public static final int TextView_gravity = 10; + /** +

+ @attr description + Makes the TextView be exactly this many pixels tall. + You could get the same effect by specifying this number in the + layout parameters. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#height}. + @attr name android:height + */ + public static final int TextView_height = 24; + /** +

+ @attr description + Hint text to display when the text is empty. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hint}. + @attr name android:hint + */ + public static final int TextView_hint = 19; + /** +

+ @attr description + Supply a value for + {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId} + used when an input method is connected to the text view. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeActionId}. + @attr name android:imeActionId + */ + public static final int TextView_imeActionId = 61; + /** +

+ @attr description + Supply a value for + {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel} + used when an input method is connected to the text view. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeActionLabel}. + @attr name android:imeActionLabel + */ + public static final int TextView_imeActionLabel = 60; + /** +

+ @attr description + Additional features you can enable in an IME associated with an editor + to improve the integration with your application. The constants + here correspond to those defined by + {@link android.view.inputmethod.EditorInfo#imeOptions}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + +
ConstantValueDescription
normal0x00000000 There are no special semantics associated with this editor.
actionUnspecified0x00000000 There is no specific action associated with this editor, let the + editor come up with its own if it can. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_NULL}.
actionNone0x00000001 This editor has no action associated with it. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}.
actionGo0x00000002 The action key performs a "go" + operation to take the user to the target of the text they typed. + Typically used, for example, when entering a URL. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}.
actionSearch0x00000003 The action key performs a "search" + operation, taking the user to the results of searching for the text + the have typed (in whatever context is appropriate). + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}.
actionSend0x00000004 The action key performs a "send" + operation, delivering the text to its target. This is typically used + when composing a message. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}.
actionNext0x00000005 The action key performs a "next" + operation, taking the user to the next field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}.
actionDone0x00000006 The action key performs a "done" + operation, closing the soft input method. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}.
actionPrevious0x00000007 The action key performs a "previous" + operation, taking the user to the previous field that will accept text. + Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}.
flagNoFullscreen0x2000000 Used to request that the IME never go + into fullscreen mode. Applications need to be aware that the flag is not + a guarantee, and not all IMEs will respect it. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigatePrevious0x4000000 Like flagNavigateNext, but + specifies there is something interesting that a backward navigation + can focus on. If the user selects the IME's facility to backward + navigate, this will show up in the application as an actionPrevious + at {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}.

flagNavigateNext0x8000000 Used to specify that there is something + interesting that a forward navigation can focus on. This is like using + actionNext, except allows the IME to be multiline (with + an enter key) as well as provide forward navigation. Note that some + IMEs may not be able to do this, especially when running on a small + screen where there is little space. In that case it does not need to + present a UI for this option. Like actionNext, if the + user selects the IME's facility to forward navigate, this will show up + in the application at + {@link android.view.inputmethod.InputConnection#performEditorAction(int) + InputConnection.performEditorAction(int)}. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}.

flagNoExtractUi0x10000000 Used to specify that the IME does not need + to show its extracted text UI. For input methods that may be fullscreen, + often when in landscape mode, this allows them to be smaller and let part + of the application be shown behind. Though there will likely be limited + access to the application available from the user, it can make the + experience of a (mostly) fullscreen IME less jarring. Note that when + this flag is specified the IME may not be set up to be able + to display text, so it should only be used in situations where this is + not needed. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}.

flagNoAccessoryAction0x20000000 Used in conjunction with a custom action, this indicates that the + action should not be available as an accessory button when the + input method is full-screen. + Note that by setting this flag, there can be cases where the action + is simply never available to the user. Setting this generally means + that you think showing text being edited is more important than the + action you have supplied. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}.

flagNoEnterAction0x40000000 Used in conjunction with a custom action, + this indicates that the action should not be available in-line as + a replacement for the "enter" key. Typically this is + because the action has such a significant impact or is not recoverable + enough that accidentally hitting it should be avoided, such as sending + a message. Note that {@link android.widget.TextView} will + automatically set this flag for you on multi-line text views. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}.

flagForceAscii0x80000000 Used to request that the IME should be capable of inputting ASCII + characters. The intention of this flag is to ensure that the user + can type Roman alphabet characters in a {@link android.widget.TextView} + used for, typically, account ID or password input. It is expected that IMEs + normally are able to input ASCII even without being told so (such IMEs + already respect this flag in a sense), but there could be some cases they + aren't when, for instance, only non-ASCII input languagaes like Arabic, + Greek, Hebrew, Russian are enabled in the IME. Applications need to be + aware that the flag is not a guarantee, and not all IMEs will respect it. + However, it is strongly recommended for IME authors to respect this flag + especially when their IME could end up with a state that has only non-ASCII + input languages enabled. +

Corresponds to + {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}.

+

This corresponds to the global attribute + resource symbol {@link android.R.attr#imeOptions}. + @attr name android:imeOptions + */ + public static final int TextView_imeOptions = 59; + /** +

+ @attr description + Leave enough room for ascenders and descenders instead of + using the font ascent and descent strictly. (Normally true). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#includeFontPadding}. + @attr name android:includeFontPadding + */ + public static final int TextView_includeFontPadding = 34; + /** +

+ @attr description + If set, specifies that this TextView should use the specified + input method (specified by fully-qualified class name). + {@deprecated Use inputType instead.} + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputMethod}. + @attr name android:inputMethod + */ + @Deprecated + public static final int TextView_inputMethod = 43; + /** +

+ @attr description + The type of data being placed in a text field, used to help an + input method decide how to let the user enter text. The constants + here correspond to those defined by + {@link android.text.InputType}. Generally you can select + a single value, though some can be combined together as + indicated. Setting this attribute to anything besides + none also implies that the text is editable. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstantValueDescription
none0x00000000 There is no content type. The text is not editable.
text0x00000001 Just plain old text. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}.
textCapCharacters0x00001001 Can be combined with text and its variations to + request capitalization of all characters. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
textCapWords0x00002001 Can be combined with text and its variations to + request capitalization of the first character of every word. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}.
textCapSentences0x00004001 Can be combined with text and its variations to + request capitalization of the first character of every sentence. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}.
textAutoCorrect0x00008001 Can be combined with text and its variations to + request auto-correction of text being input. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}.
textAutoComplete0x00010001 Can be combined with text and its variations to + specify that this field will be doing its own auto-completion and + talking with the input method appropriately. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}.
textMultiLine0x00020001 Can be combined with text and its variations to + allow multiple lines of text in the field. If this flag is not set, + the text field will be constrained to a single line. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}.
textImeMultiLine0x00040001 Can be combined with text and its variations to + indicate that though the regular text view should not be multiple + lines, the IME should provide multiple lines if it can. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}.
textNoSuggestions0x00080001 Can be combined with text and its variations to + indicate that the IME should not show any + dictionary-based word suggestions. Corresponds to + {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}.
textUri0x00000011 Text that will be used as a URI. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}.
textEmailAddress0x00000021 Text that will be used as an e-mail address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}.
textEmailSubject0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}.
textShortMessage0x00000041 Text that is the content of a short message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}.
textLongMessage0x00000051 Text that is the content of a long message. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}.
textPersonName0x00000061 Text that is the name of a person. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}.
textPostalAddress0x00000071 Text that is being supplied as a postal mailing address. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}.
textPassword0x00000081 Text that is a password. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}.
textVisiblePassword0x00000091 Text that is a password that should be visible. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}.
textWebEditText0x000000a1 Text that is being supplied as text in a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}.
textFilter0x000000b1 Text that is filtering some other data. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}.
textPhonetic0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name + field in a contact entry. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}.
textWebEmailAddress0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}.
textWebPassword0x000000e1 Text that will be used as a password on a web form. Corresponds to + {@link android.text.InputType#TYPE_CLASS_TEXT} | + {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}.
number0x00000002 A numeric only field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}.
numberSigned0x00001002 Can be combined with number and its other options to + allow a signed number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}.
numberDecimal0x00002002 Can be combined with number and its other options to + allow a decimal (fractional) number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}.
numberPassword0x00000012 A numeric password field. Corresponds to + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}.
phone0x00000003 For entering a phone number. Corresponds to + {@link android.text.InputType#TYPE_CLASS_PHONE}.
datetime0x00000004 For entering a date and time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
date0x00000014 For entering a date. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}.
time0x00000024 For entering a time. Corresponds to + {@link android.text.InputType#TYPE_CLASS_DATETIME} | + {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#inputType}. + @attr name android:inputType + */ + public static final int TextView_inputType = 56; + /** +

+ @attr description + Extra spacing between lines of text. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lineSpacingExtra}. + @attr name android:lineSpacingExtra + */ + public static final int TextView_lineSpacingExtra = 53; + /** +

+ @attr description + Extra spacing between lines of text, as a multiplier. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lineSpacingMultiplier}. + @attr name android:lineSpacingMultiplier + */ + public static final int TextView_lineSpacingMultiplier = 54; + /** +

+ @attr description + Makes the TextView be exactly this many lines tall. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#lines}. + @attr name android:lines + */ + public static final int TextView_lines = 23; + /** +

+ @attr description + If set to false, keeps the movement method from being set + to the link movement method even if autoLink causes links + to be found. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#linksClickable}. + @attr name android:linksClickable + */ + public static final int TextView_linksClickable = 12; + /** +

+ @attr description + The number of times to repeat the marquee animation. Only applied if the + TextView has marquee enabled. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
marquee_forever-1 Indicates that marquee should repeat indefinitely.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#marqueeRepeatLimit}. + @attr name android:marqueeRepeatLimit + */ + public static final int TextView_marqueeRepeatLimit = 55; + /** +

+ @attr description + Makes the TextView be at most this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxEms}. + @attr name android:maxEms + */ + public static final int TextView_maxEms = 26; + /** +

+ @attr description + Makes the TextView be at most this many pixels tall. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxHeight}. + @attr name android:maxHeight + */ + public static final int TextView_maxHeight = 14; + /** +

+ @attr description + Set an input filter to constrain the text length to the + specified number. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLength}. + @attr name android:maxLength + */ + public static final int TextView_maxLength = 35; + /** +

+ @attr description + Makes the TextView be at most this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the maxLines attribute to apply. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxLines}. + @attr name android:maxLines + */ + public static final int TextView_maxLines = 22; + /** +

+ @attr description + Makes the TextView be at most this many pixels wide. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#maxWidth}. + @attr name android:maxWidth + */ + public static final int TextView_maxWidth = 13; + /** +

+ @attr description + Makes the TextView be at least this many ems wide. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minEms}. + @attr name android:minEms + */ + public static final int TextView_minEms = 29; + /** +

+ @attr description + Makes the TextView be at least this many pixels tall. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int TextView_minHeight = 16; + /** +

+ @attr description + Makes the TextView be at least this many lines tall. + + When used on an editable text, the inputType attribute's value must be + combined with the textMultiLine flag for the minLines attribute to apply. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minLines}. + @attr name android:minLines + */ + public static final int TextView_minLines = 25; + /** +

+ @attr description + Makes the TextView be at least this many pixels wide. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int TextView_minWidth = 15; + /** +

+ @attr description + If set, specifies that this TextView has a numeric input method. + The default is false. + {@deprecated Use inputType instead.} + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
integer0x01 Input is numeric.
signed0x03 Input is numeric, with sign allowed.
decimal0x05 Input is numeric, with decimals allowed.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#numeric}. + @attr name android:numeric + */ + @Deprecated + public static final int TextView_numeric = 40; + /** +

+ @attr description + Whether the characters of the field are displayed as + password dots instead of themselves. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#password}. + @attr name android:password + */ + @Deprecated + public static final int TextView_password = 31; + /** +

+ @attr description + If set, specifies that this TextView has a phone number input + method. The default is false. + {@deprecated Use inputType instead.} + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#phoneNumber}. + @attr name android:phoneNumber + */ + @Deprecated + public static final int TextView_phoneNumber = 42; + /** +

+ @attr description + An addition content type description to supply to the input + method attached to the text view, which is private to the + implementation of the input method. This simply fills in + the {@link android.view.inputmethod.EditorInfo#privateImeOptions + EditorInfo.privateImeOptions} field when the input + method is connected. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#privateImeOptions}. + @attr name android:privateImeOptions + */ + public static final int TextView_privateImeOptions = 57; + /** +

+ @attr description + Whether the text is allowed to be wider than the view (and + therefore can be scrolled horizontally). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollHorizontally}. + @attr name android:scrollHorizontally + */ + public static final int TextView_scrollHorizontally = 30; + /** +

+ @attr description + If the text is selectable, select it all when the view takes + focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectAllOnFocus}. + @attr name android:selectAllOnFocus + */ + public static final int TextView_selectAllOnFocus = 33; + /** +

+ @attr description + Place a shadow of the specified color behind the text. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowColor}. + @attr name android:shadowColor + */ + public static final int TextView_shadowColor = 36; + /** +

+ @attr description + Horizontal offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDx}. + @attr name android:shadowDx + */ + public static final int TextView_shadowDx = 37; + /** +

+ @attr description + Vertical offset of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowDy}. + @attr name android:shadowDy + */ + public static final int TextView_shadowDy = 38; + /** +

+ @attr description + Radius of the shadow. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#shadowRadius}. + @attr name android:shadowRadius + */ + public static final int TextView_shadowRadius = 39; + /** +

+ @attr description + Constrains the text to a single horizontally scrolling line + instead of letting it wrap onto multiple lines, and advances + focus instead of inserting a newline when you press the + enter key. + + The default value is false (multi-line wrapped text mode) for non-editable text, but if + you specify any value for inputType, the default is true (single-line input field mode). + + {@deprecated This attribute is deprecated. Use maxLines instead to change + the layout of a static text, and use the textMultiLine flag in the + inputType attribute instead for editable text views (if both singleLine and inputType + are supplied, the inputType flags will override the value of singleLine). } + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#singleLine}. + @attr name android:singleLine + */ + @Deprecated + public static final int TextView_singleLine = 32; + /** +

+ @attr description + Text to display. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#text}. + @attr name android:text + */ + public static final int TextView_text = 18; + /** +

+ @attr description + Present the text in ALL CAPS. This may use a small-caps form when available. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAllCaps}. + @attr name android:textAllCaps + */ + public static final int TextView_textAllCaps = 72; + /** +

+ @attr description + Base text color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int TextView_textAppearance = 1; + /** +

+ @attr description + Text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int TextView_textColor = 5; + /** +

+ @attr description + Color of the text selection highlight. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlight}. + @attr name android:textColorHighlight + */ + public static final int TextView_textColorHighlight = 6; + /** +

+ @attr description + Color of the hint text. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHint}. + @attr name android:textColorHint + */ + public static final int TextView_textColorHint = 7; + /** +

+ @attr description + Text color for links. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLink}. + @attr name android:textColorLink + */ + public static final int TextView_textColorLink = 8; + /** +

+ @attr description + Reference to a drawable that will be drawn under the insertion cursor. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textCursorDrawable}. + @attr name android:textCursorDrawable + */ + public static final int TextView_textCursorDrawable = 70; + /** +

+ @attr description + Variation of textEditPasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditNoPasteWindowLayout}. + @attr name android:textEditNoPasteWindowLayout + */ + public static final int TextView_textEditNoPasteWindowLayout = 66; + /** +

+ @attr description + The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditPasteWindowLayout}. + @attr name android:textEditPasteWindowLayout + */ + public static final int TextView_textEditPasteWindowLayout = 65; + /** +

+ @attr description + Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSideNoPasteWindowLayout}. + @attr name android:textEditSideNoPasteWindowLayout + */ + public static final int TextView_textEditSideNoPasteWindowLayout = 69; + /** +

+ @attr description + Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSidePasteWindowLayout}. + @attr name android:textEditSidePasteWindowLayout + */ + public static final int TextView_textEditSidePasteWindowLayout = 68; + /** +

+ @attr description + Layout of the TextView item that will populate the suggestion popup window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSuggestionItemLayout}. + @attr name android:textEditSuggestionItemLayout + */ + public static final int TextView_textEditSuggestionItemLayout = 71; + /** +

+ @attr description + Indicates that the content of a non-editable text can be selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textIsSelectable}. + @attr name android:textIsSelectable + */ + public static final int TextView_textIsSelectable = 67; + /** +

+ @attr description + Sets the horizontal scaling factor for the text. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textScaleX}. + @attr name android:textScaleX + */ + public static final int TextView_textScaleX = 20; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandle}. + @attr name android:textSelectHandle + */ + public static final int TextView_textSelectHandle = 64; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleLeft}. + @attr name android:textSelectHandleLeft + */ + public static final int TextView_textSelectHandleLeft = 62; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleRight}. + @attr name android:textSelectHandleRight + */ + public static final int TextView_textSelectHandleRight = 63; + /** +

+ @attr description + Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSize}. + @attr name android:textSize + */ + public static final int TextView_textSize = 2; + /** +

+ @attr description + Style (bold, italic, bolditalic) for the text. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
normal0
bold1
italic2
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textStyle}. + @attr name android:textStyle + */ + public static final int TextView_textStyle = 4; + /** +

+ @attr description + Typeface (normal, sans, serif, monospace) for the text. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
normal0
sans1
serif2
monospace3
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#typeface}. + @attr name android:typeface + */ + public static final int TextView_typeface = 3; + /** +

+ @attr description + Makes the TextView be exactly this many pixels wide. + You could get the same effect by specifying this number in the + layout parameters. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#width}. + @attr name android:width + */ + public static final int TextView_width = 28; + /** Attributes that can be used with a TextViewAppearance. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextViewAppearance_textAppearance android:textAppearance} Base text color, typeface, size, and style.
+ @see #TextViewAppearance_textAppearance + */ + public static final int[] TextViewAppearance = { + 0x01010034 + }; + /** +

+ @attr description + Base text color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int TextViewAppearance_textAppearance = 0; + /** Attributes that can be used with a TextViewMultiLineBackgroundState. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TextViewMultiLineBackgroundState_state_multiline android:state_multiline} State identifier indicating a TextView has a multi-line layout.
+ @see #TextViewMultiLineBackgroundState_state_multiline + */ + public static final int[] TextViewMultiLineBackgroundState = { + 0x0101034d + }; + /** +

+ @attr description + State identifier indicating a TextView has a multi-line layout. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_multiline}. + @attr name android:state_multiline + */ + public static final int TextViewMultiLineBackgroundState_state_multiline = 0; + /** These are the standard attributes that make up a complete theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Theme_absListViewStyle android:absListViewStyle} Default AbsListView style.
{@link #Theme_accessibilityFocusedDrawable android:accessibilityFocusedDrawable} The drawable for accessibility focused views.
{@link #Theme_actionBarDivider android:actionBarDivider} Custom divider drawable to use for elements in the action bar.
{@link #Theme_actionBarItemBackground android:actionBarItemBackground} Custom item state list drawable background for action bar items.
{@link #Theme_actionBarSize android:actionBarSize} Size of the Action Bar, including the contextual + bar used to present Action Modes.
{@link #Theme_actionBarSplitStyle android:actionBarSplitStyle} Reference to a style for the split Action Bar.
{@link #Theme_actionBarStyle android:actionBarStyle} Reference to a style for the Action Bar
{@link #Theme_actionBarTabBarStyle android:actionBarTabBarStyle}
{@link #Theme_actionBarTabStyle android:actionBarTabStyle} Default style for tabs within an action bar
{@link #Theme_actionBarTabTextStyle android:actionBarTabTextStyle}
{@link #Theme_actionBarWidgetTheme android:actionBarWidgetTheme} Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar.
{@link #Theme_actionButtonStyle android:actionButtonStyle} Default action button style.
{@link #Theme_actionDropDownStyle android:actionDropDownStyle} Default ActionBar dropdown style.
{@link #Theme_actionMenuTextAppearance android:actionMenuTextAppearance} TextAppearance style that will be applied to text that + appears within action menu items.
{@link #Theme_actionMenuTextColor android:actionMenuTextColor} Color for text that appears within action menu items.
{@link #Theme_actionModeBackground android:actionModeBackground} Background drawable to use for action mode UI
{@link #Theme_actionModeCloseButtonStyle android:actionModeCloseButtonStyle}
{@link #Theme_actionModeCloseDrawable android:actionModeCloseDrawable} Drawable to use for the close action mode button
{@link #Theme_actionModeCopyDrawable android:actionModeCopyDrawable} Drawable to use for the Copy action button in Contextual Action Bar
{@link #Theme_actionModeCutDrawable android:actionModeCutDrawable} Drawable to use for the Cut action button in Contextual Action Bar
{@link #Theme_actionModeFindDrawable android:actionModeFindDrawable} Drawable to use for the Find action button in WebView selection action modes
{@link #Theme_actionModePasteDrawable android:actionModePasteDrawable} Drawable to use for the Paste action button in Contextual Action Bar
{@link #Theme_actionModePopupWindowStyle android:actionModePopupWindowStyle} PopupWindow style to use for action modes when showing as a window overlay.
{@link #Theme_actionModeSelectAllDrawable android:actionModeSelectAllDrawable} Drawable to use for the Select all action button in Contextual Action Bar
{@link #Theme_actionModeShareDrawable android:actionModeShareDrawable} Drawable to use for the Share action button in WebView selection action modes
{@link #Theme_actionModeSplitBackground android:actionModeSplitBackground} Background drawable to use for action mode UI in the lower split bar
{@link #Theme_actionModeStyle android:actionModeStyle}
{@link #Theme_actionModeWebSearchDrawable android:actionModeWebSearchDrawable} Drawable to use for the Web Search action button in WebView selection action modes
{@link #Theme_actionOverflowButtonStyle android:actionOverflowButtonStyle}
{@link #Theme_activatedBackgroundIndicator android:activatedBackgroundIndicator} Drawable used as a background for activated items.
{@link #Theme_activityChooserViewStyle android:activityChooserViewStyle} Default ActivityChooserView style.
{@link #Theme_alertDialogButtonGroupStyle android:alertDialogButtonGroupStyle}
{@link #Theme_alertDialogCenterButtons android:alertDialogCenterButtons}
{@link #Theme_alertDialogIcon android:alertDialogIcon} Icon drawable to use for alerts
{@link #Theme_alertDialogStyle android:alertDialogStyle}
{@link #Theme_alertDialogTheme android:alertDialogTheme} Theme to use for alert dialogs spawned from this theme.
{@link #Theme_autoCompleteTextViewStyle android:autoCompleteTextViewStyle} Default AutoCompleteTextView style.
{@link #Theme_backgroundDimAmount android:backgroundDimAmount} Default background dim amount when a menu, dialog, or something similar pops up.
{@link #Theme_backgroundDimEnabled android:backgroundDimEnabled} Control whether dimming behind the window is enabled.
{@link #Theme_borderlessButtonStyle android:borderlessButtonStyle} Style for buttons without an explicit border, often used in groups.
{@link #Theme_buttonBarButtonStyle android:buttonBarButtonStyle} Style for buttons within button bars
{@link #Theme_buttonBarStyle android:buttonBarStyle} Style for button bars
{@link #Theme_buttonStyle android:buttonStyle} Normal Button style.
{@link #Theme_buttonStyleInset android:buttonStyleInset} Button style to inset into an EditText.
{@link #Theme_buttonStyleSmall android:buttonStyleSmall} Small Button style.
{@link #Theme_buttonStyleToggle android:buttonStyleToggle} ToggleButton style.
{@link #Theme_calendarViewStyle android:calendarViewStyle} The CalendarView style.
{@link #Theme_candidatesTextStyleSpans android:candidatesTextStyleSpans} A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method.
{@link #Theme_checkBoxPreferenceStyle android:checkBoxPreferenceStyle} Default style for CheckBoxPreference.
{@link #Theme_checkboxStyle android:checkboxStyle} Default Checkbox style.
{@link #Theme_checkedTextViewStyle android:checkedTextViewStyle} Default CheckedTextView style.
{@link #Theme_colorActivatedHighlight android:colorActivatedHighlight} Default highlight color for items that are + activated.
{@link #Theme_colorBackground android:colorBackground} Color that matches (as closely as possible) the window background.
{@link #Theme_colorBackgroundCacheHint android:colorBackgroundCacheHint} This is a hint for a solid color that can be used for caching + rendered views.
{@link #Theme_colorFocusedHighlight android:colorFocusedHighlight} Default highlight color for items that are + focused.
{@link #Theme_colorForeground android:colorForeground} Default color of foreground imagery.
{@link #Theme_colorForegroundInverse android:colorForegroundInverse} Default color of foreground imagery on an inverted background.
{@link #Theme_colorLongPressedHighlight android:colorLongPressedHighlight} Default highlight color for items that are long-pressed.
{@link #Theme_colorMultiSelectHighlight android:colorMultiSelectHighlight} Default highlight color for items in multiple selection + mode.
{@link #Theme_colorPressedHighlight android:colorPressedHighlight} Default highlight color for items that are pressed.
{@link #Theme_datePickerStyle android:datePickerStyle} The DatePicker style.
{@link #Theme_detailsElementBackground android:detailsElementBackground} Background that can be used behind parts of a UI that provide + details on data the user is selecting.
{@link #Theme_dialogCustomTitleDecorLayout android:dialogCustomTitleDecorLayout} Window decor layout to use in dialog mode with custom titles
{@link #Theme_dialogPreferenceStyle android:dialogPreferenceStyle} Default style for DialogPreference.
{@link #Theme_dialogTheme android:dialogTheme} Theme to use for dialogs spawned from this theme.
{@link #Theme_dialogTitleDecorLayout android:dialogTitleDecorLayout} Window decor layout to use in dialog mode with title only
{@link #Theme_dialogTitleIconsDecorLayout android:dialogTitleIconsDecorLayout} Window decor layout to use in dialog mode with icons
{@link #Theme_disabledAlpha android:disabledAlpha} Default disabled alpha for widgets that set enabled/disabled alpha programmatically.
{@link #Theme_dividerHorizontal android:dividerHorizontal} Drawable to use for generic horizontal dividers.
{@link #Theme_dividerVertical android:dividerVertical} Drawable to use for generic vertical dividers.
{@link #Theme_dropDownHintAppearance android:dropDownHintAppearance} Default style for drop down hints.
{@link #Theme_dropDownItemStyle android:dropDownItemStyle} Default style for drop down items.
{@link #Theme_dropDownListViewStyle android:dropDownListViewStyle} Default ListView style for drop downs.
{@link #Theme_dropDownSpinnerStyle android:dropDownSpinnerStyle} Default dropdown Spinner style.
{@link #Theme_dropdownListPreferredItemHeight android:dropdownListPreferredItemHeight} The preferred item height for dropdown lists.
{@link #Theme_editTextBackground android:editTextBackground} EditText background drawable.
{@link #Theme_editTextColor android:editTextColor} EditText text foreground color.
{@link #Theme_editTextPreferenceStyle android:editTextPreferenceStyle} Default style for EditTextPreference.
{@link #Theme_editTextStyle android:editTextStyle} Default EditText style.
{@link #Theme_errorMessageAboveBackground android:errorMessageAboveBackground} Background used instead of errorMessageBackground when the popup has to be above.
{@link #Theme_errorMessageBackground android:errorMessageBackground} Popup text displayed in TextView when setError is used.
{@link #Theme_expandableListPreferredChildIndicatorLeft android:expandableListPreferredChildIndicatorLeft} The preferred left bound for an expandable list child's indicator.
{@link #Theme_expandableListPreferredChildIndicatorRight android:expandableListPreferredChildIndicatorRight} The preferred right bound for an expandable list child's indicator.
{@link #Theme_expandableListPreferredChildPaddingLeft android:expandableListPreferredChildPaddingLeft} The preferred left padding for an expandable list item that is a child.
{@link #Theme_expandableListPreferredItemIndicatorLeft android:expandableListPreferredItemIndicatorLeft} The preferred left bound for an expandable list item's indicator.
{@link #Theme_expandableListPreferredItemIndicatorRight android:expandableListPreferredItemIndicatorRight} The preferred right bound for an expandable list item's indicator.
{@link #Theme_expandableListPreferredItemPaddingLeft android:expandableListPreferredItemPaddingLeft} The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft).
{@link #Theme_expandableListViewStyle android:expandableListViewStyle} Default ExpandableListView style.
{@link #Theme_expandableListViewWhiteStyle android:expandableListViewWhiteStyle} ExpandableListView with white background.
{@link #Theme_fastScrollOverlayPosition android:fastScrollOverlayPosition} Position of the fast scroll index overlay window.
{@link #Theme_fastScrollPreviewBackgroundLeft android:fastScrollPreviewBackgroundLeft} Drawable to use as the fast scroll index preview window background + when shown on the left.
{@link #Theme_fastScrollPreviewBackgroundRight android:fastScrollPreviewBackgroundRight} Drawable to use as the fast scroll index preview window background + when shown on the right.
{@link #Theme_fastScrollTextColor android:fastScrollTextColor} Text color for the fast scroll index overlay.
{@link #Theme_fastScrollThumbDrawable android:fastScrollThumbDrawable} Drawable to use as the fast scroll thumb.
{@link #Theme_fastScrollTrackDrawable android:fastScrollTrackDrawable} Drawable to use as the track for the fast scroll thumb.
{@link #Theme_findOnPageNextDrawable android:findOnPageNextDrawable} Drawable for WebView find-on-page dialogue's "next" button.
{@link #Theme_findOnPagePreviousDrawable android:findOnPagePreviousDrawable} Drawable for WebView find-on-page dialogue's "previous" button.
{@link #Theme_galleryItemBackground android:galleryItemBackground} The preferred background for gallery items.
{@link #Theme_galleryStyle android:galleryStyle} Default Gallery style.
{@link #Theme_gestureOverlayViewStyle android:gestureOverlayViewStyle} Default GestureOverlayView style.
{@link #Theme_gridViewStyle android:gridViewStyle} Default GridView style.
{@link #Theme_homeAsUpIndicator android:homeAsUpIndicator} Specifies a drawable to use for the 'home as up' indicator.
{@link #Theme_horizontalScrollViewStyle android:horizontalScrollViewStyle} Default HorizontalScrollView style.
{@link #Theme_imageButtonStyle android:imageButtonStyle} The style resource to use for an ImageButton.
{@link #Theme_imageWellStyle android:imageWellStyle} The style resource to use for an ImageButton that is an image well.
{@link #Theme_listChoiceBackgroundIndicator android:listChoiceBackgroundIndicator} Drawable used as a background for selected list items.
{@link #Theme_listChoiceIndicatorMultiple android:listChoiceIndicatorMultiple} Drawable to use for multiple choice indicators.
{@link #Theme_listChoiceIndicatorSingle android:listChoiceIndicatorSingle} Drawable to use for single choice indicators.
{@link #Theme_listDivider android:listDivider} The drawable for the list divider.
{@link #Theme_listDividerAlertDialog android:listDividerAlertDialog} The list divider used in alert dialogs.
{@link #Theme_listPopupWindowStyle android:listPopupWindowStyle} Default ListPopupWindow style.
{@link #Theme_listPreferredItemHeight android:listPreferredItemHeight} The preferred list item height.
{@link #Theme_listPreferredItemHeightLarge android:listPreferredItemHeightLarge} A larger, more robust list item height.
{@link #Theme_listPreferredItemHeightSmall android:listPreferredItemHeightSmall} A smaller, sleeker list item height.
{@link #Theme_listPreferredItemPaddingEnd android:listPreferredItemPaddingEnd} The preferred padding along the end edge of list items.
{@link #Theme_listPreferredItemPaddingLeft android:listPreferredItemPaddingLeft} The preferred padding along the left edge of list items.
{@link #Theme_listPreferredItemPaddingRight android:listPreferredItemPaddingRight} The preferred padding along the right edge of list items.
{@link #Theme_listPreferredItemPaddingStart android:listPreferredItemPaddingStart} The preferred padding along the start edge of list items.
{@link #Theme_listSeparatorTextViewStyle android:listSeparatorTextViewStyle} TextView style for list separators.
{@link #Theme_listViewStyle android:listViewStyle} Default ListView style.
{@link #Theme_listViewWhiteStyle android:listViewWhiteStyle} ListView with white background.
{@link #Theme_mapViewStyle android:mapViewStyle} Default MapView style.
{@link #Theme_mediaRouteButtonStyle android:mediaRouteButtonStyle} Default style for the MediaRouteButton widget.
{@link #Theme_numberPickerStyle android:numberPickerStyle} NumberPicker style.
{@link #Theme_panelBackground android:panelBackground} The background of a panel when it is inset from the left and right edges of the screen.
{@link #Theme_panelColorBackground android:panelColorBackground} Color that matches (as closely as possible) the panel background.
{@link #Theme_panelColorForeground android:panelColorForeground} Default color of foreground panel imagery.
{@link #Theme_panelFullBackground android:panelFullBackground} The background of a panel when it extends to the left and right edges of the screen.
{@link #Theme_panelMenuIsCompact android:panelMenuIsCompact}
{@link #Theme_panelMenuListTheme android:panelMenuListTheme}
{@link #Theme_panelMenuListWidth android:panelMenuListWidth}
{@link #Theme_panelTextAppearance android:panelTextAppearance} Default appearance of panel text.
{@link #Theme_pointerStyle android:pointerStyle} Reference to the Pointer style
{@link #Theme_popupMenuStyle android:popupMenuStyle} Default PopupMenu style.
{@link #Theme_popupWindowStyle android:popupWindowStyle} Default PopupWindow style.
{@link #Theme_preferenceCategoryStyle android:preferenceCategoryStyle} Default style for PreferenceCategory.
{@link #Theme_preferenceFragmentListStyle android:preferenceFragmentListStyle} Preference fragment list style
{@link #Theme_preferenceFragmentPaddingSide android:preferenceFragmentPaddingSide} Preference fragment padding side
{@link #Theme_preferenceFragmentStyle android:preferenceFragmentStyle} Default style for Headers pane in PreferenceActivity.
{@link #Theme_preferenceFrameLayoutStyle android:preferenceFrameLayoutStyle} Preference frame layout styles.
{@link #Theme_preferenceHeaderPanelStyle android:preferenceHeaderPanelStyle} Preference headers panel style
{@link #Theme_preferenceInformationStyle android:preferenceInformationStyle} Default style for informational Preference.
{@link #Theme_preferenceLayoutChild android:preferenceLayoutChild} The preference layout that has the child/tabbed effect.
{@link #Theme_preferenceListStyle android:preferenceListStyle} Preference list style
{@link #Theme_preferencePanelStyle android:preferencePanelStyle} Preference panel style
{@link #Theme_preferenceScreenStyle android:preferenceScreenStyle} Default style for PreferenceScreen.
{@link #Theme_preferenceStyle android:preferenceStyle} Default style for Preference.
{@link #Theme_presentationTheme android:presentationTheme} Theme to use for presentations spawned from this theme.
{@link #Theme_progressBarStyle android:progressBarStyle} Default ProgressBar style.
{@link #Theme_progressBarStyleHorizontal android:progressBarStyleHorizontal} Horizontal ProgressBar style.
{@link #Theme_progressBarStyleInverse android:progressBarStyleInverse} Inverse ProgressBar style.
{@link #Theme_progressBarStyleLarge android:progressBarStyleLarge} Large ProgressBar style.
{@link #Theme_progressBarStyleLargeInverse android:progressBarStyleLargeInverse} Large inverse ProgressBar style.
{@link #Theme_progressBarStyleSmall android:progressBarStyleSmall} Small ProgressBar style.
{@link #Theme_progressBarStyleSmallInverse android:progressBarStyleSmallInverse} Small inverse ProgressBar style.
{@link #Theme_progressBarStyleSmallTitle android:progressBarStyleSmallTitle} Small ProgressBar in title style.
{@link #Theme_quickContactBadgeOverlay android:quickContactBadgeOverlay} Drawable used as an overlay on top of quickcontact photos.
{@link #Theme_quickContactBadgeStyleSmallWindowLarge android:quickContactBadgeStyleSmallWindowLarge} Default quickcontact badge style with large quickcontact window.
{@link #Theme_quickContactBadgeStyleSmallWindowMedium android:quickContactBadgeStyleSmallWindowMedium} Default quickcontact badge style with medium quickcontact window.
{@link #Theme_quickContactBadgeStyleSmallWindowSmall android:quickContactBadgeStyleSmallWindowSmall} Default quickcontact badge style with small quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowLarge android:quickContactBadgeStyleWindowLarge} Default quickcontact badge style with large quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowMedium android:quickContactBadgeStyleWindowMedium} Default quickcontact badge style with medium quickcontact window.
{@link #Theme_quickContactBadgeStyleWindowSmall android:quickContactBadgeStyleWindowSmall} Default quickcontact badge style with small quickcontact window.
{@link #Theme_radioButtonStyle android:radioButtonStyle} Default RadioButton style.
{@link #Theme_ratingBarStyle android:ratingBarStyle} Default RatingBar style.
{@link #Theme_ratingBarStyleIndicator android:ratingBarStyleIndicator} Indicator RatingBar style.
{@link #Theme_ratingBarStyleSmall android:ratingBarStyleSmall} Small indicator RatingBar style.
{@link #Theme_ringtonePreferenceStyle android:ringtonePreferenceStyle} Default style for RingtonePreference.
{@link #Theme_scrollViewStyle android:scrollViewStyle} Default ScrollView style.
{@link #Theme_searchDialogTheme android:searchDialogTheme} Theme to use for Search Dialogs
{@link #Theme_searchDropdownBackground android:searchDropdownBackground} SearchView dropdown background
{@link #Theme_searchResultListItemHeight android:searchResultListItemHeight} The list item height for search results.
{@link #Theme_searchViewCloseIcon android:searchViewCloseIcon} SearchView close button icon
{@link #Theme_searchViewEditQuery android:searchViewEditQuery} SearchView query refinement icon
{@link #Theme_searchViewEditQueryBackground android:searchViewEditQueryBackground} SearchView query refinement icon background
{@link #Theme_searchViewGoIcon android:searchViewGoIcon} SearchView Go button icon
{@link #Theme_searchViewSearchIcon android:searchViewSearchIcon} SearchView Search icon
{@link #Theme_searchViewTextField android:searchViewTextField} SearchView text field background for the left section
{@link #Theme_searchViewTextFieldRight android:searchViewTextFieldRight} SearchView text field background for the right section
{@link #Theme_searchViewVoiceIcon android:searchViewVoiceIcon} SearchView Voice button icon
{@link #Theme_searchWidgetCorpusItemBackground android:searchWidgetCorpusItemBackground} Search widget more corpus result item background.
{@link #Theme_seekBarStyle android:seekBarStyle} Default SeekBar style.
{@link #Theme_segmentedButtonStyle android:segmentedButtonStyle} Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments.
{@link #Theme_selectableItemBackground android:selectableItemBackground} Background drawable for standalone items that need focus/pressed states.
{@link #Theme_spinnerDropDownItemStyle android:spinnerDropDownItemStyle} Default style for spinner drop down items.
{@link #Theme_spinnerItemStyle android:spinnerItemStyle} Default spinner item style.
{@link #Theme_spinnerStyle android:spinnerStyle} Default Spinner style.
{@link #Theme_stackViewStyle android:stackViewStyle} Default StackView style.
{@link #Theme_starStyle android:starStyle} Default Star style.
{@link #Theme_switchPreferenceStyle android:switchPreferenceStyle} Default style for switch preferences.
{@link #Theme_switchStyle android:switchStyle} Default style for the Switch widget.
{@link #Theme_tabWidgetStyle android:tabWidgetStyle} Default TabWidget style.
{@link #Theme_textAppearance android:textAppearance} Default appearance of text: color, typeface, size, and style.
{@link #Theme_textAppearanceAutoCorrectionSuggestion android:textAppearanceAutoCorrectionSuggestion} The underline color and thickness for auto correction suggestion
{@link #Theme_textAppearanceButton android:textAppearanceButton} Text color, typeface, size, and style for the text inside of a button.
{@link #Theme_textAppearanceEasyCorrectSuggestion android:textAppearanceEasyCorrectSuggestion} The underline color and thickness for easy correct suggestion
{@link #Theme_textAppearanceInverse android:textAppearanceInverse} Default appearance of text against an inverted background: + color, typeface, size, and style.
{@link #Theme_textAppearanceLarge android:textAppearanceLarge} Text color, typeface, size, and style for "large" text.
{@link #Theme_textAppearanceLargeInverse android:textAppearanceLargeInverse} Text color, typeface, size, and style for "large" inverse text.
{@link #Theme_textAppearanceLargePopupMenu android:textAppearanceLargePopupMenu} Text color, typeface, size, and style for the text inside of a popup menu.
{@link #Theme_textAppearanceListItem android:textAppearanceListItem} The preferred TextAppearance for the primary text of list items.
{@link #Theme_textAppearanceListItemSmall android:textAppearanceListItemSmall} The preferred TextAppearance for the primary text of small list items.
{@link #Theme_textAppearanceMedium android:textAppearanceMedium} Text color, typeface, size, and style for "medium" text.
{@link #Theme_textAppearanceMediumInverse android:textAppearanceMediumInverse} Text color, typeface, size, and style for "medium" inverse text.
{@link #Theme_textAppearanceMisspelledSuggestion android:textAppearanceMisspelledSuggestion} The underline color and thickness for misspelled suggestion
{@link #Theme_textAppearanceSearchResultSubtitle android:textAppearanceSearchResultSubtitle} Text color, typeface, size, and style for system search result subtitle.
{@link #Theme_textAppearanceSearchResultTitle android:textAppearanceSearchResultTitle} Text color, typeface, size, and style for system search result title.
{@link #Theme_textAppearanceSmall android:textAppearanceSmall} Text color, typeface, size, and style for "small" text.
{@link #Theme_textAppearanceSmallInverse android:textAppearanceSmallInverse} Text color, typeface, size, and style for "small" inverse text.
{@link #Theme_textAppearanceSmallPopupMenu android:textAppearanceSmallPopupMenu} Text color, typeface, size, and style for small text inside of a popup menu.
{@link #Theme_textCheckMark android:textCheckMark} Drawable to use for check marks.
{@link #Theme_textCheckMarkInverse android:textCheckMarkInverse}
{@link #Theme_textColorAlertDialogListItem android:textColorAlertDialogListItem} Color of list item text in alert dialogs.
{@link #Theme_textColorHighlightInverse android:textColorHighlightInverse} Color of highlighted text, when used in a light theme.
{@link #Theme_textColorHintInverse android:textColorHintInverse} Inverse hint text color.
{@link #Theme_textColorLinkInverse android:textColorLinkInverse} Color of link text (URLs), when used in a light theme.
{@link #Theme_textColorPrimary android:textColorPrimary} The most prominent text color.
{@link #Theme_textColorPrimaryDisableOnly android:textColorPrimaryDisableOnly} Bright text color.
{@link #Theme_textColorPrimaryInverse android:textColorPrimaryInverse} Primary inverse text color, useful for inverted backgrounds.
{@link #Theme_textColorPrimaryInverseDisableOnly android:textColorPrimaryInverseDisableOnly} Bright inverse text color.
{@link #Theme_textColorPrimaryInverseNoDisable android:textColorPrimaryInverseNoDisable} Bright inverse text color.
{@link #Theme_textColorPrimaryNoDisable android:textColorPrimaryNoDisable} Bright text color.
{@link #Theme_textColorSearchUrl android:textColorSearchUrl} Text color for urls in search suggestions, used by things like global search and the browser.
{@link #Theme_textColorSecondary android:textColorSecondary} Secondary text color.
{@link #Theme_textColorSecondaryInverse android:textColorSecondaryInverse} Secondary inverse text color, useful for inverted backgrounds.
{@link #Theme_textColorSecondaryInverseNoDisable android:textColorSecondaryInverseNoDisable} Dim inverse text color.
{@link #Theme_textColorSecondaryNoDisable android:textColorSecondaryNoDisable} Dim text color.
{@link #Theme_textColorTertiary android:textColorTertiary} Tertiary text color.
{@link #Theme_textColorTertiaryInverse android:textColorTertiaryInverse} Tertiary inverse text color, useful for inverted backgrounds.
{@link #Theme_textEditNoPasteWindowLayout android:textEditNoPasteWindowLayout} Variation of textEditPasteWindowLayout displayed when the clipboard is empty.
{@link #Theme_textEditPasteWindowLayout android:textEditPasteWindowLayout} The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field.
{@link #Theme_textEditSideNoPasteWindowLayout android:textEditSideNoPasteWindowLayout} Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty.
{@link #Theme_textEditSidePasteWindowLayout android:textEditSidePasteWindowLayout} Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top.
{@link #Theme_textEditSuggestionItemLayout android:textEditSuggestionItemLayout} Layout of the TextView item that will populate the suggestion popup window.
{@link #Theme_textSelectHandle android:textSelectHandle} Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text.
{@link #Theme_textSelectHandleLeft android:textSelectHandleLeft} Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region.
{@link #Theme_textSelectHandleRight android:textSelectHandleRight} Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region.
{@link #Theme_textSelectHandleWindowStyle android:textSelectHandleWindowStyle} Reference to a style that will be used for the window containing a text + selection anchor.
{@link #Theme_textSuggestionsWindowStyle android:textSuggestionsWindowStyle} Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText.
{@link #Theme_textUnderlineColor android:textUnderlineColor} The underline color
{@link #Theme_textUnderlineThickness android:textUnderlineThickness} The underline thickness
{@link #Theme_textViewStyle android:textViewStyle} Default TextView style.
{@link #Theme_timePickerStyle android:timePickerStyle} The TimePicker style.
{@link #Theme_toastFrameBackground android:toastFrameBackground} Background to use for toasts
{@link #Theme_webTextViewStyle android:webTextViewStyle} Default WebTextView style.
{@link #Theme_webViewStyle android:webViewStyle} Default WebView style.
{@link #Theme_windowActionBar android:windowActionBar} Flag indicating whether this window should have an Action Bar + in place of the usual title bar.
{@link #Theme_windowActionBarOverlay android:windowActionBarOverlay} Flag indicating whether this window's Action Bar should overlay + application content.
{@link #Theme_windowActionModeOverlay android:windowActionModeOverlay} Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar).
{@link #Theme_windowAnimationStyle android:windowAnimationStyle} Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}.
{@link #Theme_windowBackground android:windowBackground} Drawable to use as the overall window background.
{@link #Theme_windowCloseOnTouchOutside android:windowCloseOnTouchOutside} Control whether a container should automatically close itself if + the user touches outside of it.
{@link #Theme_windowContentOverlay android:windowContentOverlay} This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title.
{@link #Theme_windowDisablePreview android:windowDisablePreview} Flag allowing you to disable the preview animation for a window.
{@link #Theme_windowEnableSplitTouch android:windowEnableSplitTouch} Flag indicating that this window should allow touches to be split + across other windows that also support split touch.
{@link #Theme_windowFrame android:windowFrame} Drawable to use as a frame around the window.
{@link #Theme_windowFullscreen android:windowFullscreen} Flag indicating whether this window should fill the entire screen.
{@link #Theme_windowIsFloating android:windowIsFloating} Flag indicating whether this is a floating window.
{@link #Theme_windowIsTranslucent android:windowIsTranslucent} Flag indicating whether this is a translucent window.
{@link #Theme_windowNoDisplay android:windowNoDisplay} Flag indicating that this window should not be displayed at all.
{@link #Theme_windowNoTitle android:windowNoTitle} Flag indicating whether there should be no title on this window.
{@link #Theme_windowOverscan android:windowOverscan} Flag indicating whether this window should extend into overscan region.
{@link #Theme_windowShowWallpaper android:windowShowWallpaper} Flag indicating that this window's background should be the + user's current wallpaper.
{@link #Theme_windowSoftInputMode android:windowSoftInputMode} Defines the default soft input state that this window would + like when it is displayed.
{@link #Theme_windowSplitActionBar android:windowSplitActionBar} Flag indicating that the action bar should be split to provide more + room for elements.
{@link #Theme_windowTitleBackgroundStyle android:windowTitleBackgroundStyle} The style resource to use for a window's title area.
{@link #Theme_windowTitleSize android:windowTitleSize} The style resource to use for a window's title bar height.
{@link #Theme_windowTitleStyle android:windowTitleStyle} The style resource to use for a window's title text.
{@link #Theme_windowTranslucentNavigation android:windowTranslucentNavigation} Flag indicating whether this window requests a translucent navigation bar.
{@link #Theme_windowTranslucentStatus android:windowTranslucentStatus} Flag indicating whether this window requests a translucent status bar.
{@link #Theme_yesNoPreferenceStyle android:yesNoPreferenceStyle} Default style for YesNoPreference.
+ @see #Theme_absListViewStyle + @see #Theme_accessibilityFocusedDrawable + @see #Theme_actionBarDivider + @see #Theme_actionBarItemBackground + @see #Theme_actionBarSize + @see #Theme_actionBarSplitStyle + @see #Theme_actionBarStyle + @see #Theme_actionBarTabBarStyle + @see #Theme_actionBarTabStyle + @see #Theme_actionBarTabTextStyle + @see #Theme_actionBarWidgetTheme + @see #Theme_actionButtonStyle + @see #Theme_actionDropDownStyle + @see #Theme_actionMenuTextAppearance + @see #Theme_actionMenuTextColor + @see #Theme_actionModeBackground + @see #Theme_actionModeCloseButtonStyle + @see #Theme_actionModeCloseDrawable + @see #Theme_actionModeCopyDrawable + @see #Theme_actionModeCutDrawable + @see #Theme_actionModeFindDrawable + @see #Theme_actionModePasteDrawable + @see #Theme_actionModePopupWindowStyle + @see #Theme_actionModeSelectAllDrawable + @see #Theme_actionModeShareDrawable + @see #Theme_actionModeSplitBackground + @see #Theme_actionModeStyle + @see #Theme_actionModeWebSearchDrawable + @see #Theme_actionOverflowButtonStyle + @see #Theme_activatedBackgroundIndicator + @see #Theme_activityChooserViewStyle + @see #Theme_alertDialogButtonGroupStyle + @see #Theme_alertDialogCenterButtons + @see #Theme_alertDialogIcon + @see #Theme_alertDialogStyle + @see #Theme_alertDialogTheme + @see #Theme_autoCompleteTextViewStyle + @see #Theme_backgroundDimAmount + @see #Theme_backgroundDimEnabled + @see #Theme_borderlessButtonStyle + @see #Theme_buttonBarButtonStyle + @see #Theme_buttonBarStyle + @see #Theme_buttonStyle + @see #Theme_buttonStyleInset + @see #Theme_buttonStyleSmall + @see #Theme_buttonStyleToggle + @see #Theme_calendarViewStyle + @see #Theme_candidatesTextStyleSpans + @see #Theme_checkBoxPreferenceStyle + @see #Theme_checkboxStyle + @see #Theme_checkedTextViewStyle + @see #Theme_colorActivatedHighlight + @see #Theme_colorBackground + @see #Theme_colorBackgroundCacheHint + @see #Theme_colorFocusedHighlight + @see #Theme_colorForeground + @see #Theme_colorForegroundInverse + @see #Theme_colorLongPressedHighlight + @see #Theme_colorMultiSelectHighlight + @see #Theme_colorPressedHighlight + @see #Theme_datePickerStyle + @see #Theme_detailsElementBackground + @see #Theme_dialogCustomTitleDecorLayout + @see #Theme_dialogPreferenceStyle + @see #Theme_dialogTheme + @see #Theme_dialogTitleDecorLayout + @see #Theme_dialogTitleIconsDecorLayout + @see #Theme_disabledAlpha + @see #Theme_dividerHorizontal + @see #Theme_dividerVertical + @see #Theme_dropDownHintAppearance + @see #Theme_dropDownItemStyle + @see #Theme_dropDownListViewStyle + @see #Theme_dropDownSpinnerStyle + @see #Theme_dropdownListPreferredItemHeight + @see #Theme_editTextBackground + @see #Theme_editTextColor + @see #Theme_editTextPreferenceStyle + @see #Theme_editTextStyle + @see #Theme_errorMessageAboveBackground + @see #Theme_errorMessageBackground + @see #Theme_expandableListPreferredChildIndicatorLeft + @see #Theme_expandableListPreferredChildIndicatorRight + @see #Theme_expandableListPreferredChildPaddingLeft + @see #Theme_expandableListPreferredItemIndicatorLeft + @see #Theme_expandableListPreferredItemIndicatorRight + @see #Theme_expandableListPreferredItemPaddingLeft + @see #Theme_expandableListViewStyle + @see #Theme_expandableListViewWhiteStyle + @see #Theme_fastScrollOverlayPosition + @see #Theme_fastScrollPreviewBackgroundLeft + @see #Theme_fastScrollPreviewBackgroundRight + @see #Theme_fastScrollTextColor + @see #Theme_fastScrollThumbDrawable + @see #Theme_fastScrollTrackDrawable + @see #Theme_findOnPageNextDrawable + @see #Theme_findOnPagePreviousDrawable + @see #Theme_galleryItemBackground + @see #Theme_galleryStyle + @see #Theme_gestureOverlayViewStyle + @see #Theme_gridViewStyle + @see #Theme_homeAsUpIndicator + @see #Theme_horizontalScrollViewStyle + @see #Theme_imageButtonStyle + @see #Theme_imageWellStyle + @see #Theme_listChoiceBackgroundIndicator + @see #Theme_listChoiceIndicatorMultiple + @see #Theme_listChoiceIndicatorSingle + @see #Theme_listDivider + @see #Theme_listDividerAlertDialog + @see #Theme_listPopupWindowStyle + @see #Theme_listPreferredItemHeight + @see #Theme_listPreferredItemHeightLarge + @see #Theme_listPreferredItemHeightSmall + @see #Theme_listPreferredItemPaddingEnd + @see #Theme_listPreferredItemPaddingLeft + @see #Theme_listPreferredItemPaddingRight + @see #Theme_listPreferredItemPaddingStart + @see #Theme_listSeparatorTextViewStyle + @see #Theme_listViewStyle + @see #Theme_listViewWhiteStyle + @see #Theme_mapViewStyle + @see #Theme_mediaRouteButtonStyle + @see #Theme_numberPickerStyle + @see #Theme_panelBackground + @see #Theme_panelColorBackground + @see #Theme_panelColorForeground + @see #Theme_panelFullBackground + @see #Theme_panelMenuIsCompact + @see #Theme_panelMenuListTheme + @see #Theme_panelMenuListWidth + @see #Theme_panelTextAppearance + @see #Theme_pointerStyle + @see #Theme_popupMenuStyle + @see #Theme_popupWindowStyle + @see #Theme_preferenceCategoryStyle + @see #Theme_preferenceFragmentListStyle + @see #Theme_preferenceFragmentPaddingSide + @see #Theme_preferenceFragmentStyle + @see #Theme_preferenceFrameLayoutStyle + @see #Theme_preferenceHeaderPanelStyle + @see #Theme_preferenceInformationStyle + @see #Theme_preferenceLayoutChild + @see #Theme_preferenceListStyle + @see #Theme_preferencePanelStyle + @see #Theme_preferenceScreenStyle + @see #Theme_preferenceStyle + @see #Theme_presentationTheme + @see #Theme_progressBarStyle + @see #Theme_progressBarStyleHorizontal + @see #Theme_progressBarStyleInverse + @see #Theme_progressBarStyleLarge + @see #Theme_progressBarStyleLargeInverse + @see #Theme_progressBarStyleSmall + @see #Theme_progressBarStyleSmallInverse + @see #Theme_progressBarStyleSmallTitle + @see #Theme_quickContactBadgeOverlay + @see #Theme_quickContactBadgeStyleSmallWindowLarge + @see #Theme_quickContactBadgeStyleSmallWindowMedium + @see #Theme_quickContactBadgeStyleSmallWindowSmall + @see #Theme_quickContactBadgeStyleWindowLarge + @see #Theme_quickContactBadgeStyleWindowMedium + @see #Theme_quickContactBadgeStyleWindowSmall + @see #Theme_radioButtonStyle + @see #Theme_ratingBarStyle + @see #Theme_ratingBarStyleIndicator + @see #Theme_ratingBarStyleSmall + @see #Theme_ringtonePreferenceStyle + @see #Theme_scrollViewStyle + @see #Theme_searchDialogTheme + @see #Theme_searchDropdownBackground + @see #Theme_searchResultListItemHeight + @see #Theme_searchViewCloseIcon + @see #Theme_searchViewEditQuery + @see #Theme_searchViewEditQueryBackground + @see #Theme_searchViewGoIcon + @see #Theme_searchViewSearchIcon + @see #Theme_searchViewTextField + @see #Theme_searchViewTextFieldRight + @see #Theme_searchViewVoiceIcon + @see #Theme_searchWidgetCorpusItemBackground + @see #Theme_seekBarStyle + @see #Theme_segmentedButtonStyle + @see #Theme_selectableItemBackground + @see #Theme_spinnerDropDownItemStyle + @see #Theme_spinnerItemStyle + @see #Theme_spinnerStyle + @see #Theme_stackViewStyle + @see #Theme_starStyle + @see #Theme_switchPreferenceStyle + @see #Theme_switchStyle + @see #Theme_tabWidgetStyle + @see #Theme_textAppearance + @see #Theme_textAppearanceAutoCorrectionSuggestion + @see #Theme_textAppearanceButton + @see #Theme_textAppearanceEasyCorrectSuggestion + @see #Theme_textAppearanceInverse + @see #Theme_textAppearanceLarge + @see #Theme_textAppearanceLargeInverse + @see #Theme_textAppearanceLargePopupMenu + @see #Theme_textAppearanceListItem + @see #Theme_textAppearanceListItemSmall + @see #Theme_textAppearanceMedium + @see #Theme_textAppearanceMediumInverse + @see #Theme_textAppearanceMisspelledSuggestion + @see #Theme_textAppearanceSearchResultSubtitle + @see #Theme_textAppearanceSearchResultTitle + @see #Theme_textAppearanceSmall + @see #Theme_textAppearanceSmallInverse + @see #Theme_textAppearanceSmallPopupMenu + @see #Theme_textCheckMark + @see #Theme_textCheckMarkInverse + @see #Theme_textColorAlertDialogListItem + @see #Theme_textColorHighlightInverse + @see #Theme_textColorHintInverse + @see #Theme_textColorLinkInverse + @see #Theme_textColorPrimary + @see #Theme_textColorPrimaryDisableOnly + @see #Theme_textColorPrimaryInverse + @see #Theme_textColorPrimaryInverseDisableOnly + @see #Theme_textColorPrimaryInverseNoDisable + @see #Theme_textColorPrimaryNoDisable + @see #Theme_textColorSearchUrl + @see #Theme_textColorSecondary + @see #Theme_textColorSecondaryInverse + @see #Theme_textColorSecondaryInverseNoDisable + @see #Theme_textColorSecondaryNoDisable + @see #Theme_textColorTertiary + @see #Theme_textColorTertiaryInverse + @see #Theme_textEditNoPasteWindowLayout + @see #Theme_textEditPasteWindowLayout + @see #Theme_textEditSideNoPasteWindowLayout + @see #Theme_textEditSidePasteWindowLayout + @see #Theme_textEditSuggestionItemLayout + @see #Theme_textSelectHandle + @see #Theme_textSelectHandleLeft + @see #Theme_textSelectHandleRight + @see #Theme_textSelectHandleWindowStyle + @see #Theme_textSuggestionsWindowStyle + @see #Theme_textUnderlineColor + @see #Theme_textUnderlineThickness + @see #Theme_textViewStyle + @see #Theme_timePickerStyle + @see #Theme_toastFrameBackground + @see #Theme_webTextViewStyle + @see #Theme_webViewStyle + @see #Theme_windowActionBar + @see #Theme_windowActionBarOverlay + @see #Theme_windowActionModeOverlay + @see #Theme_windowAnimationStyle + @see #Theme_windowBackground + @see #Theme_windowCloseOnTouchOutside + @see #Theme_windowContentOverlay + @see #Theme_windowDisablePreview + @see #Theme_windowEnableSplitTouch + @see #Theme_windowFrame + @see #Theme_windowFullscreen + @see #Theme_windowIsFloating + @see #Theme_windowIsTranslucent + @see #Theme_windowNoDisplay + @see #Theme_windowNoTitle + @see #Theme_windowOverscan + @see #Theme_windowShowWallpaper + @see #Theme_windowSoftInputMode + @see #Theme_windowSplitActionBar + @see #Theme_windowTitleBackgroundStyle + @see #Theme_windowTitleSize + @see #Theme_windowTitleStyle + @see #Theme_windowTranslucentNavigation + @see #Theme_windowTranslucentStatus + @see #Theme_yesNoPreferenceStyle + */ + public static final int[] Theme = { + 0x01010030, 0x01010031, 0x01010032, 0x01010033, + 0x01010034, 0x01010035, 0x01010036, 0x01010037, + 0x01010038, 0x01010039, 0x0101003a, 0x0101003b, + 0x0101003c, 0x0101003d, 0x0101003e, 0x0101003f, + 0x01010040, 0x01010041, 0x01010042, 0x01010043, + 0x01010044, 0x01010045, 0x01010046, 0x01010047, + 0x01010048, 0x01010049, 0x0101004a, 0x0101004b, + 0x0101004c, 0x0101004d, 0x0101004e, 0x0101004f, + 0x01010050, 0x01010051, 0x01010052, 0x01010053, + 0x01010054, 0x01010055, 0x01010056, 0x01010057, + 0x01010058, 0x01010059, 0x0101005a, 0x0101005b, + 0x0101005c, 0x0101005d, 0x0101005e, 0x0101005f, + 0x01010060, 0x01010061, 0x01010062, 0x0101006a, + 0x0101006b, 0x0101006c, 0x0101006d, 0x0101006e, + 0x0101006f, 0x01010070, 0x01010071, 0x01010072, + 0x01010073, 0x01010074, 0x01010075, 0x01010076, + 0x01010077, 0x01010078, 0x01010079, 0x0101007a, + 0x0101007b, 0x0101007c, 0x0101007d, 0x0101007e, + 0x01010080, 0x01010081, 0x01010082, 0x01010083, + 0x01010084, 0x01010085, 0x01010086, 0x01010087, + 0x01010088, 0x01010089, 0x0101008a, 0x0101008b, + 0x0101008c, 0x0101008d, 0x0101008e, 0x0101008f, + 0x01010090, 0x01010091, 0x01010092, 0x01010093, + 0x01010094, 0x010100ae, 0x01010206, 0x01010207, + 0x01010208, 0x0101020d, 0x0101020f, 0x01010210, + 0x01010212, 0x01010213, 0x01010214, 0x01010219, + 0x0101021a, 0x0101021e, 0x0101021f, 0x01010222, + 0x0101022b, 0x01010230, 0x01010267, 0x01010287, + 0x01010288, 0x01010289, 0x0101028b, 0x01010292, + 0x010102a0, 0x010102a1, 0x010102ab, 0x010102ae, + 0x010102af, 0x010102b0, 0x010102b1, 0x010102b2, + 0x010102b3, 0x010102b6, 0x010102b9, 0x010102c5, + 0x010102c6, 0x010102c7, 0x010102c8, 0x010102cd, + 0x010102ce, 0x010102d6, 0x010102d7, 0x010102d8, + 0x010102db, 0x010102dc, 0x010102dd, 0x010102e4, + 0x010102eb, 0x010102f0, 0x010102f3, 0x010102f4, + 0x010102f5, 0x010102f6, 0x010102f7, 0x010102fd, + 0x010102ff, 0x01010300, 0x01010301, 0x01010302, + 0x01010305, 0x01010306, 0x01010308, 0x01010309, + 0x0101030a, 0x0101030b, 0x0101030e, 0x01010311, + 0x01010312, 0x01010313, 0x01010314, 0x01010315, + 0x01010317, 0x0101032b, 0x0101032c, 0x0101032e, + 0x0101032f, 0x01010330, 0x01010336, 0x01010337, + 0x01010338, 0x01010339, 0x0101033a, 0x0101034e, + 0x0101034f, 0x01010350, 0x01010351, 0x01010352, + 0x01010353, 0x01010355, 0x01010359, 0x0101035b, + 0x0101035c, 0x0101035d, 0x0101035e, 0x0101035f, + 0x01010360, 0x01010361, 0x0101036d, 0x01010373, + 0x01010374, 0x0101037e, 0x01010386, 0x01010387, + 0x01010388, 0x0101038d, 0x0101038e, 0x0101038f, + 0x01010390, 0x01010391, 0x01010394, 0x01010397, + 0x0101039b, 0x0101039c, 0x0101039d, 0x0101039e, + 0x0101039f, 0x010103a3, 0x010103a4, 0x010103a8, + 0x010103ad, 0x010103bd, 0x010103be, 0x010103c0, + 0x010103c3, 0x010103c8, 0x010103cf, 0x010103ef, + 0x010103f0, 0x010103f2, 0x010103f3, 0x010103f4, + 0x010103f5, 0x010103f6, 0x010103f7, 0x010103f8, + 0x010103f9, 0x010103fa, 0x010103fb, 0x010103fc, + 0x010103fd, 0x010103fe, 0x010103ff, 0x01010400, + 0x01010401, 0x01010402, 0x01010403, 0x01010404, + 0x01010405, 0x01010406, 0x01010407, 0x01010408, + 0x01010409, 0x0101040a, 0x0101040b, 0x0101040c, + 0x0101040d, 0x0101040e, 0x0101040f, 0x01010410, + 0x01010411, 0x01010412, 0x01010413, 0x01010414, + 0x01010415, 0x01010416, 0x01010417, 0x01010418, + 0x01010419, 0x0101041a, 0x0101041b, 0x0101041c, + 0x0101041d, 0x0101041e, 0x0101041f, 0x01010420, + 0x01010421, 0x01010422, 0x01010423 + }; + /** +

+ @attr description + Default AbsListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#absListViewStyle}. + @attr name android:absListViewStyle + */ + public static final int Theme_absListViewStyle = 51; + /** +

+ @attr description + The drawable for accessibility focused views. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:accessibilityFocusedDrawable + */ + public static final int Theme_accessibilityFocusedDrawable = 268; + /** +

+ @attr description + Custom divider drawable to use for elements in the action bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarDivider}. + @attr name android:actionBarDivider + */ + public static final int Theme_actionBarDivider = 204; + /** +

+ @attr description + Custom item state list drawable background for action bar items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarItemBackground}. + @attr name android:actionBarItemBackground + */ + public static final int Theme_actionBarItemBackground = 205; + /** +

+ @attr description + Size of the Action Bar, including the contextual + bar used to present Action Modes. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + +
ConstantValueDescription
wrap_content0
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarSize}. + @attr name android:actionBarSize + */ + public static final int Theme_actionBarSize = 140; + /** +

+ @attr description + Reference to a style for the split Action Bar. This style + controls the split component that holds the menu/action + buttons. actionBarStyle is still used for the primary + bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarSplitStyle}. + @attr name android:actionBarSplitStyle + */ + public static final int Theme_actionBarSplitStyle = 196; + /** +

+ @attr description + Reference to a style for the Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarStyle}. + @attr name android:actionBarStyle + */ + public static final int Theme_actionBarStyle = 132; + /** +

This symbol is the offset where the {@link android.R.attr#actionBarTabBarStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionBarTabBarStyle + */ + public static final int Theme_actionBarTabBarStyle = 143; + /** +

+ @attr description + Default style for tabs within an action bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarTabStyle}. + @attr name android:actionBarTabStyle + */ + public static final int Theme_actionBarTabStyle = 142; + /** +

This symbol is the offset where the {@link android.R.attr#actionBarTabTextStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionBarTabTextStyle + */ + public static final int Theme_actionBarTabTextStyle = 144; + /** +

+ @attr description + Reference to a theme that should be used to inflate widgets + and layouts destined for the action bar. Most of the time + this will be a reference to the current theme, but when + the action bar has a significantly different contrast + profile than the rest of the activity the difference + can become important. If this is set to @null the current + theme will be used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionBarWidgetTheme}. + @attr name android:actionBarWidgetTheme + */ + public static final int Theme_actionBarWidgetTheme = 203; + /** +

+ @attr description + Default action button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionButtonStyle}. + @attr name android:actionButtonStyle + */ + public static final int Theme_actionButtonStyle = 135; + /** +

+ @attr description + Default ActionBar dropdown style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionDropDownStyle}. + @attr name android:actionDropDownStyle + */ + public static final int Theme_actionDropDownStyle = 134; + /** +

+ @attr description + TextAppearance style that will be applied to text that + appears within action menu items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionMenuTextAppearance}. + @attr name android:actionMenuTextAppearance + */ + public static final int Theme_actionMenuTextAppearance = 188; + /** +

+ @attr description + Color for text that appears within action menu items. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionMenuTextColor}. + @attr name android:actionMenuTextColor + */ + public static final int Theme_actionMenuTextColor = 189; + /** +

+ @attr description + Background drawable to use for action mode UI + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeBackground}. + @attr name android:actionModeBackground + */ + public static final int Theme_actionModeBackground = 136; + /** +

This symbol is the offset where the {@link android.R.attr#actionModeCloseButtonStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionModeCloseButtonStyle + */ + public static final int Theme_actionModeCloseButtonStyle = 146; + /** +

+ @attr description + Drawable to use for the close action mode button + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCloseDrawable}. + @attr name android:actionModeCloseDrawable + */ + public static final int Theme_actionModeCloseDrawable = 137; + /** +

+ @attr description + Drawable to use for the Copy action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCopyDrawable}. + @attr name android:actionModeCopyDrawable + */ + public static final int Theme_actionModeCopyDrawable = 160; + /** +

+ @attr description + Drawable to use for the Cut action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeCutDrawable}. + @attr name android:actionModeCutDrawable + */ + public static final int Theme_actionModeCutDrawable = 159; + /** +

+ @attr description + Drawable to use for the Find action button in WebView selection action modes + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:actionModeFindDrawable + */ + public static final int Theme_actionModeFindDrawable = 242; + /** +

+ @attr description + Drawable to use for the Paste action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModePasteDrawable}. + @attr name android:actionModePasteDrawable + */ + public static final int Theme_actionModePasteDrawable = 161; + /** +

+ @attr description + PopupWindow style to use for action modes when showing as a window overlay. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:actionModePopupWindowStyle + */ + public static final int Theme_actionModePopupWindowStyle = 244; + /** +

+ @attr description + Drawable to use for the Select all action button in Contextual Action Bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSelectAllDrawable}. + @attr name android:actionModeSelectAllDrawable + */ + public static final int Theme_actionModeSelectAllDrawable = 193; + /** +

+ @attr description + Drawable to use for the Share action button in WebView selection action modes + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:actionModeShareDrawable + */ + public static final int Theme_actionModeShareDrawable = 241; + /** +

+ @attr description + Background drawable to use for action mode UI in the lower split bar + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#actionModeSplitBackground}. + @attr name android:actionModeSplitBackground + */ + public static final int Theme_actionModeSplitBackground = 206; + /** +

This symbol is the offset where the {@link android.R.attr#actionModeStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionModeStyle + */ + public static final int Theme_actionModeStyle = 202; + /** +

+ @attr description + Drawable to use for the Web Search action button in WebView selection action modes + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:actionModeWebSearchDrawable + */ + public static final int Theme_actionModeWebSearchDrawable = 243; + /** +

This symbol is the offset where the {@link android.R.attr#actionOverflowButtonStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:actionOverflowButtonStyle + */ + public static final int Theme_actionOverflowButtonStyle = 145; + /** +

+ @attr description + Drawable used as a background for activated items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activatedBackgroundIndicator}. + @attr name android:activatedBackgroundIndicator + */ + public static final int Theme_activatedBackgroundIndicator = 147; + /** +

+ @attr description + Default ActivityChooserView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:activityChooserViewStyle + */ + public static final int Theme_activityChooserViewStyle = 240; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#alertDialogButtonGroupStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:alertDialogButtonGroupStyle + */ + public static final int Theme_alertDialogButtonGroupStyle = 230; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#alertDialogCenterButtons} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:alertDialogCenterButtons + */ + public static final int Theme_alertDialogCenterButtons = 231; + /** +

+ @attr description + Icon drawable to use for alerts + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alertDialogIcon}. + @attr name android:alertDialogIcon + */ + public static final int Theme_alertDialogIcon = 181; + /** +

This symbol is the offset where the {@link android.R.attr#alertDialogStyle} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:alertDialogStyle + */ + public static final int Theme_alertDialogStyle = 45; + /** +

+ @attr description + Theme to use for alert dialogs spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alertDialogTheme}. + @attr name android:alertDialogTheme + */ + public static final int Theme_alertDialogTheme = 155; + /** +

+ @attr description + Default AutoCompleteTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoCompleteTextViewStyle}. + @attr name android:autoCompleteTextViewStyle + */ + public static final int Theme_autoCompleteTextViewStyle = 52; + /** +

+ @attr description + Default background dim amount when a menu, dialog, or something similar pops up. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimAmount}. + @attr name android:backgroundDimAmount + */ + public static final int Theme_backgroundDimAmount = 2; + /** +

+ @attr description + Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimEnabled}. + @attr name android:backgroundDimEnabled + */ + public static final int Theme_backgroundDimEnabled = 106; + /** +

+ @attr description + Style for buttons without an explicit border, often used in groups. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#borderlessButtonStyle}. + @attr name android:borderlessButtonStyle + */ + public static final int Theme_borderlessButtonStyle = 165; + /** +

+ @attr description + Style for buttons within button bars + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonBarButtonStyle}. + @attr name android:buttonBarButtonStyle + */ + public static final int Theme_buttonBarButtonStyle = 168; + /** +

+ @attr description + Style for button bars + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonBarStyle}. + @attr name android:buttonBarStyle + */ + public static final int Theme_buttonBarStyle = 167; + /** +

+ @attr description + Normal Button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyle}. + @attr name android:buttonStyle + */ + public static final int Theme_buttonStyle = 24; + /** +

+ @attr description + Button style to inset into an EditText. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleInset}. + @attr name android:buttonStyleInset + */ + public static final int Theme_buttonStyleInset = 26; + /** +

+ @attr description + Small Button style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleSmall}. + @attr name android:buttonStyleSmall + */ + public static final int Theme_buttonStyleSmall = 25; + /** +

+ @attr description + ToggleButton style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#buttonStyleToggle}. + @attr name android:buttonStyleToggle + */ + public static final int Theme_buttonStyleToggle = 27; + /** +

+ @attr description + The CalendarView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#calendarViewStyle}. + @attr name android:calendarViewStyle + */ + public static final int Theme_calendarViewStyle = 185; + /** +

+ @attr description + A styled string, specifying the style to be used for showing + inline candidate text when composing with an input method. The + text itself will be ignored, but the style spans will be applied + to the candidate text as it is edited. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#candidatesTextStyleSpans}. + @attr name android:candidatesTextStyleSpans + */ + public static final int Theme_candidatesTextStyleSpans = 109; + /** +

+ @attr description + Default style for CheckBoxPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkBoxPreferenceStyle}. + @attr name android:checkBoxPreferenceStyle + */ + public static final int Theme_checkBoxPreferenceStyle = 87; + /** +

+ @attr description + Default Checkbox style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkboxStyle}. + @attr name android:checkboxStyle + */ + public static final int Theme_checkboxStyle = 53; + /** +

+ @attr description + Default CheckedTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#checkedTextViewStyle}. + @attr name android:checkedTextViewStyle + */ + public static final int Theme_checkedTextViewStyle = 217; + /** +

+ @attr description + Default highlight color for items that are + activated. (Activated meaning persistent selection.) + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorActivatedHighlight}. + @attr name android:colorActivatedHighlight + */ + public static final int Theme_colorActivatedHighlight = 200; + /** +

+ @attr description + Color that matches (as closely as possible) the window background. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorBackground}. + @attr name android:colorBackground + */ + public static final int Theme_colorBackground = 1; + /** +

+ @attr description + This is a hint for a solid color that can be used for caching + rendered views. This should be the color of the background when + there is a solid background color; it should be null when the + background is a texture or translucent. When a device is able + to use accelerated drawing (thus setting state_accelerated), the + cache hint is ignored and always assumed to be transparent. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorBackgroundCacheHint}. + @attr name android:colorBackgroundCacheHint + */ + public static final int Theme_colorBackgroundCacheHint = 118; + /** +

+ @attr description + Default highlight color for items that are + focused. (Focused meaning cursor-based selection.) + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorFocusedHighlight}. + @attr name android:colorFocusedHighlight + */ + public static final int Theme_colorFocusedHighlight = 199; + /** +

+ @attr description + Default color of foreground imagery. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorForeground}. + @attr name android:colorForeground + */ + public static final int Theme_colorForeground = 0; + /** +

+ @attr description + Default color of foreground imagery on an inverted background. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorForegroundInverse}. + @attr name android:colorForegroundInverse + */ + public static final int Theme_colorForegroundInverse = 94; + /** +

+ @attr description + Default highlight color for items that are long-pressed. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorLongPressedHighlight}. + @attr name android:colorLongPressedHighlight + */ + public static final int Theme_colorLongPressedHighlight = 198; + /** +

+ @attr description + Default highlight color for items in multiple selection + mode. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorMultiSelectHighlight}. + @attr name android:colorMultiSelectHighlight + */ + public static final int Theme_colorMultiSelectHighlight = 201; + /** +

+ @attr description + Default highlight color for items that are pressed. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#colorPressedHighlight}. + @attr name android:colorPressedHighlight + */ + public static final int Theme_colorPressedHighlight = 197; + /** +

+ @attr description + The DatePicker style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#datePickerStyle}. + @attr name android:datePickerStyle + */ + public static final int Theme_datePickerStyle = 184; + /** +

+ @attr description + Background that can be used behind parts of a UI that provide + details on data the user is selecting. For example, this is + the background element of PreferenceActivity's embedded + preference fragment. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#detailsElementBackground}. + @attr name android:detailsElementBackground + */ + public static final int Theme_detailsElementBackground = 175; + /** +

+ @attr description + Window decor layout to use in dialog mode with custom titles + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:dialogCustomTitleDecorLayout + */ + public static final int Theme_dialogCustomTitleDecorLayout = 252; + /** +

+ @attr description + Default style for DialogPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogPreferenceStyle}. + @attr name android:dialogPreferenceStyle + */ + public static final int Theme_dialogPreferenceStyle = 89; + /** +

+ @attr description + Theme to use for dialogs spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dialogTheme}. + @attr name android:dialogTheme + */ + public static final int Theme_dialogTheme = 154; + /** +

+ @attr description + Window decor layout to use in dialog mode with title only + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:dialogTitleDecorLayout + */ + public static final int Theme_dialogTitleDecorLayout = 253; + /** +

+ @attr description + Window decor layout to use in dialog mode with icons + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:dialogTitleIconsDecorLayout + */ + public static final int Theme_dialogTitleIconsDecorLayout = 251; + /** +

+ @attr description + Default disabled alpha for widgets that set enabled/disabled alpha programmatically. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disabledAlpha}. + @attr name android:disabledAlpha + */ + public static final int Theme_disabledAlpha = 3; + /** +

+ @attr description + Drawable to use for generic horizontal dividers. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerHorizontal}. + @attr name android:dividerHorizontal + */ + public static final int Theme_dividerHorizontal = 166; + /** +

+ @attr description + Drawable to use for generic vertical dividers. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dividerVertical}. + @attr name android:dividerVertical + */ + public static final int Theme_dividerVertical = 156; + /** +

+ @attr description + Default style for drop down hints. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownHintAppearance}. + @attr name android:dropDownHintAppearance + */ + public static final int Theme_dropDownHintAppearance = 80; + /** +

+ @attr description + Default style for drop down items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownItemStyle}. + @attr name android:dropDownItemStyle + */ + public static final int Theme_dropDownItemStyle = 78; + /** +

+ @attr description + Default ListView style for drop downs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownListViewStyle}. + @attr name android:dropDownListViewStyle + */ + public static final int Theme_dropDownListViewStyle = 54; + /** +

+ @attr description + Default dropdown Spinner style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#dropDownSpinnerStyle}. + @attr name android:dropDownSpinnerStyle + */ + public static final int Theme_dropDownSpinnerStyle = 133; + /** +

+ @attr description + The preferred item height for dropdown lists. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:dropdownListPreferredItemHeight + */ + public static final int Theme_dropdownListPreferredItemHeight = 228; + /** +

+ @attr description + EditText background drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextBackground}. + @attr name android:editTextBackground + */ + public static final int Theme_editTextBackground = 179; + /** +

+ @attr description + EditText text foreground color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextColor}. + @attr name android:editTextColor + */ + public static final int Theme_editTextColor = 178; + /** +

+ @attr description + Default style for EditTextPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextPreferenceStyle}. + @attr name android:editTextPreferenceStyle + */ + public static final int Theme_editTextPreferenceStyle = 90; + /** +

+ @attr description + Default EditText style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#editTextStyle}. + @attr name android:editTextStyle + */ + public static final int Theme_editTextStyle = 55; + /** +

+ @attr description + Background used instead of errorMessageBackground when the popup has to be above. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:errorMessageAboveBackground + */ + public static final int Theme_errorMessageAboveBackground = 226; + /** +

+ @attr description + Popup text displayed in TextView when setError is used. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:errorMessageBackground + */ + public static final int Theme_errorMessageBackground = 225; + /** +

+ @attr description + The preferred left bound for an expandable list child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildIndicatorLeft}. + @attr name android:expandableListPreferredChildIndicatorLeft + */ + public static final int Theme_expandableListPreferredChildIndicatorLeft = 34; + /** +

+ @attr description + The preferred right bound for an expandable list child's indicator. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildIndicatorRight}. + @attr name android:expandableListPreferredChildIndicatorRight + */ + public static final int Theme_expandableListPreferredChildIndicatorRight = 35; + /** +

+ @attr description + The preferred left padding for an expandable list item that is a child. + If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredChildPaddingLeft}. + @attr name android:expandableListPreferredChildPaddingLeft + */ + public static final int Theme_expandableListPreferredChildPaddingLeft = 31; + /** +

+ @attr description + The preferred left bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorLeft. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemIndicatorLeft}. + @attr name android:expandableListPreferredItemIndicatorLeft + */ + public static final int Theme_expandableListPreferredItemIndicatorLeft = 32; + /** +

+ @attr description + The preferred right bound for an expandable list item's indicator. For a child-specific + indicator, use expandableListPreferredChildIndicatorRight. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemIndicatorRight}. + @attr name android:expandableListPreferredItemIndicatorRight + */ + public static final int Theme_expandableListPreferredItemIndicatorRight = 33; + /** +

+ @attr description + The preferred left padding for an expandable list item (for child-specific layouts, + use expandableListPreferredChildPaddingLeft). This takes into account + the indicator that will be shown to next to the item. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListPreferredItemPaddingLeft}. + @attr name android:expandableListPreferredItemPaddingLeft + */ + public static final int Theme_expandableListPreferredItemPaddingLeft = 30; + /** +

+ @attr description + Default ExpandableListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListViewStyle}. + @attr name android:expandableListViewStyle + */ + public static final int Theme_expandableListViewStyle = 56; + /** +

+ @attr description + ExpandableListView with white background. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#expandableListViewWhiteStyle}. + @attr name android:expandableListViewWhiteStyle + */ + public static final int Theme_expandableListViewWhiteStyle = 125; + /** +

+ @attr description + Position of the fast scroll index overlay window. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
floating0
atThumb1
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollOverlayPosition}. + @attr name android:fastScrollOverlayPosition + */ + public static final int Theme_fastScrollOverlayPosition = 174; + /** +

+ @attr description + Drawable to use as the fast scroll index preview window background + when shown on the left. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollPreviewBackgroundLeft}. + @attr name android:fastScrollPreviewBackgroundLeft + */ + public static final int Theme_fastScrollPreviewBackgroundLeft = 171; + /** +

+ @attr description + Drawable to use as the fast scroll index preview window background + when shown on the right. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollPreviewBackgroundRight}. + @attr name android:fastScrollPreviewBackgroundRight + */ + public static final int Theme_fastScrollPreviewBackgroundRight = 172; + /** +

+ @attr description + Text color for the fast scroll index overlay. Make sure it + plays nicely with fastScrollPreviewBackground[Left|Right]. + + +

Must be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollTextColor}. + @attr name android:fastScrollTextColor + */ + public static final int Theme_fastScrollTextColor = 182; + /** +

+ @attr description + Drawable to use as the fast scroll thumb. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollThumbDrawable}. + @attr name android:fastScrollThumbDrawable + */ + public static final int Theme_fastScrollThumbDrawable = 170; + /** +

+ @attr description + Drawable to use as the track for the fast scroll thumb. + This may be null. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fastScrollTrackDrawable}. + @attr name android:fastScrollTrackDrawable + */ + public static final int Theme_fastScrollTrackDrawable = 173; + /** +

+ @attr description + Drawable for WebView find-on-page dialogue's "next" button. @hide + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:findOnPageNextDrawable + */ + public static final int Theme_findOnPageNextDrawable = 269; + /** +

+ @attr description + Drawable for WebView find-on-page dialogue's "previous" button. @hide + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:findOnPagePreviousDrawable + */ + public static final int Theme_findOnPagePreviousDrawable = 270; + /** +

+ @attr description + The preferred background for gallery items. This should be set + as the background of any Views you provide from the Adapter. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#galleryItemBackground}. + @attr name android:galleryItemBackground + */ + public static final int Theme_galleryItemBackground = 28; + /** +

+ @attr description + Default Gallery style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#galleryStyle}. + @attr name android:galleryStyle + */ + public static final int Theme_galleryStyle = 57; + /** +

+ @attr description + Default GestureOverlayView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:gestureOverlayViewStyle + */ + public static final int Theme_gestureOverlayViewStyle = 235; + /** +

+ @attr description + Default GridView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#gridViewStyle}. + @attr name android:gridViewStyle + */ + public static final int Theme_gridViewStyle = 58; + /** +

+ @attr description + Specifies a drawable to use for the 'home as up' indicator. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#homeAsUpIndicator}. + @attr name android:homeAsUpIndicator + */ + public static final int Theme_homeAsUpIndicator = 157; + /** +

+ @attr description + Default HorizontalScrollView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#horizontalScrollViewStyle}. + @attr name android:horizontalScrollViewStyle + */ + public static final int Theme_horizontalScrollViewStyle = 180; + /** +

+ @attr description + The style resource to use for an ImageButton. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imageButtonStyle}. + @attr name android:imageButtonStyle + */ + public static final int Theme_imageButtonStyle = 59; + /** +

+ @attr description + The style resource to use for an ImageButton that is an image well. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#imageWellStyle}. + @attr name android:imageWellStyle + */ + public static final int Theme_imageWellStyle = 60; + /** +

+ @attr description + Drawable used as a background for selected list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceBackgroundIndicator}. + @attr name android:listChoiceBackgroundIndicator + */ + public static final int Theme_listChoiceBackgroundIndicator = 141; + /** +

+ @attr description + Drawable to use for multiple choice indicators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceIndicatorMultiple}. + @attr name android:listChoiceIndicatorMultiple + */ + public static final int Theme_listChoiceIndicatorMultiple = 104; + /** +

+ @attr description + Drawable to use for single choice indicators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listChoiceIndicatorSingle}. + @attr name android:listChoiceIndicatorSingle + */ + public static final int Theme_listChoiceIndicatorSingle = 103; + /** +

+ @attr description + The drawable for the list divider. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listDivider}. + @attr name android:listDivider + */ + public static final int Theme_listDivider = 102; + /** +

+ @attr description + The list divider used in alert dialogs. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listDividerAlertDialog}. + @attr name android:listDividerAlertDialog + */ + public static final int Theme_listDividerAlertDialog = 152; + /** +

+ @attr description + Default ListPopupWindow style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPopupWindowStyle}. + @attr name android:listPopupWindowStyle + */ + public static final int Theme_listPopupWindowStyle = 148; + /** +

+ @attr description + The preferred list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeight}. + @attr name android:listPreferredItemHeight + */ + public static final int Theme_listPreferredItemHeight = 29; + /** +

+ @attr description + A larger, more robust list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeightLarge}. + @attr name android:listPreferredItemHeightLarge + */ + public static final int Theme_listPreferredItemHeightLarge = 194; + /** +

+ @attr description + A smaller, sleeker list item height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemHeightSmall}. + @attr name android:listPreferredItemHeightSmall + */ + public static final int Theme_listPreferredItemHeightSmall = 195; + /** +

+ @attr description + The preferred padding along the end edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingEnd}. + @attr name android:listPreferredItemPaddingEnd + */ + public static final int Theme_listPreferredItemPaddingEnd = 214; + /** +

+ @attr description + The preferred padding along the left edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingLeft}. + @attr name android:listPreferredItemPaddingLeft + */ + public static final int Theme_listPreferredItemPaddingLeft = 209; + /** +

+ @attr description + The preferred padding along the right edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingRight}. + @attr name android:listPreferredItemPaddingRight + */ + public static final int Theme_listPreferredItemPaddingRight = 210; + /** +

+ @attr description + The preferred padding along the start edge of list items. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listPreferredItemPaddingStart}. + @attr name android:listPreferredItemPaddingStart + */ + public static final int Theme_listPreferredItemPaddingStart = 213; + /** +

+ @attr description + TextView style for list separators. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listSeparatorTextViewStyle}. + @attr name android:listSeparatorTextViewStyle + */ + public static final int Theme_listSeparatorTextViewStyle = 96; + /** +

+ @attr description + Default ListView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listViewStyle}. + @attr name android:listViewStyle + */ + public static final int Theme_listViewStyle = 61; + /** +

+ @attr description + ListView with white background. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#listViewWhiteStyle}. + @attr name android:listViewWhiteStyle + */ + public static final int Theme_listViewWhiteStyle = 62; + /** +

+ @attr description + Default MapView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mapViewStyle}. + @attr name android:mapViewStyle + */ + public static final int Theme_mapViewStyle = 82; + /** +

+ @attr description + Default style for the MediaRouteButton widget. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#mediaRouteButtonStyle}. + @attr name android:mediaRouteButtonStyle + */ + public static final int Theme_mediaRouteButtonStyle = 212; + /** +

+ @attr description + NumberPicker style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:numberPickerStyle + */ + public static final int Theme_numberPickerStyle = 238; + /** +

+ @attr description + The background of a panel when it is inset from the left and right edges of the screen. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelBackground}. + @attr name android:panelBackground + */ + public static final int Theme_panelBackground = 46; + /** +

+ @attr description + Color that matches (as closely as possible) the panel background. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelColorBackground}. + @attr name android:panelColorBackground + */ + public static final int Theme_panelColorBackground = 49; + /** +

+ @attr description + Default color of foreground panel imagery. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelColorForeground}. + @attr name android:panelColorForeground + */ + public static final int Theme_panelColorForeground = 48; + /** +

+ @attr description + The background of a panel when it extends to the left and right edges of the screen. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelFullBackground}. + @attr name android:panelFullBackground + */ + public static final int Theme_panelFullBackground = 47; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#panelMenuIsCompact} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:panelMenuIsCompact + */ + public static final int Theme_panelMenuIsCompact = 232; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#panelMenuListTheme} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name com.android.internal:panelMenuListTheme + */ + public static final int Theme_panelMenuListTheme = 234; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#panelMenuListWidth} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:panelMenuListWidth + */ + public static final int Theme_panelMenuListWidth = 233; + /** +

+ @attr description + Default appearance of panel text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#panelTextAppearance}. + @attr name android:panelTextAppearance + */ + public static final int Theme_panelTextAppearance = 50; + /** +

+ @attr description + Reference to the Pointer style + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:pointerStyle + */ + public static final int Theme_pointerStyle = 267; + /** +

+ @attr description + Default PopupMenu style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupMenuStyle}. + @attr name android:popupMenuStyle + */ + public static final int Theme_popupMenuStyle = 149; + /** +

+ @attr description + Default PopupWindow style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#popupWindowStyle}. + @attr name android:popupWindowStyle + */ + public static final int Theme_popupWindowStyle = 63; + /** +

+ @attr description + Default style for PreferenceCategory. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceCategoryStyle}. + @attr name android:preferenceCategoryStyle + */ + public static final int Theme_preferenceCategoryStyle = 84; + /** +

+ @attr description + Preference fragment list style + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferenceFragmentListStyle + */ + public static final int Theme_preferenceFragmentListStyle = 249; + /** +

+ @attr description + Preference fragment padding side + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:preferenceFragmentPaddingSide + */ + public static final int Theme_preferenceFragmentPaddingSide = 250; + /** +

+ @attr description + Default style for Headers pane in PreferenceActivity. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferenceFragmentStyle + */ + public static final int Theme_preferenceFragmentStyle = 245; + /** +

+ @attr description + Preference frame layout styles. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferenceFrameLayoutStyle + */ + public static final int Theme_preferenceFrameLayoutStyle = 265; + /** +

+ @attr description + Preference headers panel style + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferenceHeaderPanelStyle + */ + public static final int Theme_preferenceHeaderPanelStyle = 247; + /** +

+ @attr description + Default style for informational Preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceInformationStyle}. + @attr name android:preferenceInformationStyle + */ + public static final int Theme_preferenceInformationStyle = 85; + /** +

+ @attr description + The preference layout that has the child/tabbed effect. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceLayoutChild}. + @attr name android:preferenceLayoutChild + */ + public static final int Theme_preferenceLayoutChild = 92; + /** +

+ @attr description + Preference list style + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferenceListStyle + */ + public static final int Theme_preferenceListStyle = 248; + /** +

+ @attr description + Preference panel style + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:preferencePanelStyle + */ + public static final int Theme_preferencePanelStyle = 246; + /** +

+ @attr description + Default style for PreferenceScreen. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceScreenStyle}. + @attr name android:preferenceScreenStyle + */ + public static final int Theme_preferenceScreenStyle = 83; + /** +

+ @attr description + Default style for Preference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#preferenceStyle}. + @attr name android:preferenceStyle + */ + public static final int Theme_preferenceStyle = 86; + /** +

+ @attr description + Theme to use for presentations spawned from this theme. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#presentationTheme}. + @attr name android:presentationTheme + */ + public static final int Theme_presentationTheme = 215; + /** +

+ @attr description + Default ProgressBar style. This is a medium circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyle}. + @attr name android:progressBarStyle + */ + public static final int Theme_progressBarStyle = 64; + /** +

+ @attr description + Horizontal ProgressBar style. This is a horizontal progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleHorizontal}. + @attr name android:progressBarStyleHorizontal + */ + public static final int Theme_progressBarStyleHorizontal = 65; + /** +

+ @attr description + Inverse ProgressBar style. This is a medium circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleInverse}. + @attr name android:progressBarStyleInverse + */ + public static final int Theme_progressBarStyleInverse = 111; + /** +

+ @attr description + Large ProgressBar style. This is a large circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleLarge}. + @attr name android:progressBarStyleLarge + */ + public static final int Theme_progressBarStyleLarge = 67; + /** +

+ @attr description + Large inverse ProgressBar style. This is a large circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleLargeInverse}. + @attr name android:progressBarStyleLargeInverse + */ + public static final int Theme_progressBarStyleLargeInverse = 113; + /** +

+ @attr description + Small ProgressBar style. This is a small circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmall}. + @attr name android:progressBarStyleSmall + */ + public static final int Theme_progressBarStyleSmall = 66; + /** +

+ @attr description + Small inverse ProgressBar style. This is a small circular progress bar. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmallInverse}. + @attr name android:progressBarStyleSmallInverse + */ + public static final int Theme_progressBarStyleSmallInverse = 112; + /** +

+ @attr description + Small ProgressBar in title style. This is a small circular progress bar that will be placed in title bars. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#progressBarStyleSmallTitle}. + @attr name android:progressBarStyleSmallTitle + */ + public static final int Theme_progressBarStyleSmallTitle = 98; + /** +

+ @attr description + Drawable used as an overlay on top of quickcontact photos. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:quickContactBadgeOverlay + */ + public static final int Theme_quickContactBadgeOverlay = 236; + /** +

+ @attr description + Default quickcontact badge style with large quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowLarge}. + @attr name android:quickContactBadgeStyleSmallWindowLarge + */ + public static final int Theme_quickContactBadgeStyleSmallWindowLarge = 124; + /** +

+ @attr description + Default quickcontact badge style with medium quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowMedium}. + @attr name android:quickContactBadgeStyleSmallWindowMedium + */ + public static final int Theme_quickContactBadgeStyleSmallWindowMedium = 123; + /** +

+ @attr description + Default quickcontact badge style with small quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleSmallWindowSmall}. + @attr name android:quickContactBadgeStyleSmallWindowSmall + */ + public static final int Theme_quickContactBadgeStyleSmallWindowSmall = 122; + /** +

+ @attr description + Default quickcontact badge style with large quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowLarge}. + @attr name android:quickContactBadgeStyleWindowLarge + */ + public static final int Theme_quickContactBadgeStyleWindowLarge = 121; + /** +

+ @attr description + Default quickcontact badge style with medium quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowMedium}. + @attr name android:quickContactBadgeStyleWindowMedium + */ + public static final int Theme_quickContactBadgeStyleWindowMedium = 120; + /** +

+ @attr description + Default quickcontact badge style with small quickcontact window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#quickContactBadgeStyleWindowSmall}. + @attr name android:quickContactBadgeStyleWindowSmall + */ + public static final int Theme_quickContactBadgeStyleWindowSmall = 119; + /** +

+ @attr description + Default RadioButton style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#radioButtonStyle}. + @attr name android:radioButtonStyle + */ + public static final int Theme_radioButtonStyle = 71; + /** +

+ @attr description + Default RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyle}. + @attr name android:ratingBarStyle + */ + public static final int Theme_ratingBarStyle = 69; + /** +

+ @attr description + Indicator RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyleIndicator}. + @attr name android:ratingBarStyleIndicator + */ + public static final int Theme_ratingBarStyleIndicator = 99; + /** +

+ @attr description + Small indicator RatingBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ratingBarStyleSmall}. + @attr name android:ratingBarStyleSmall + */ + public static final int Theme_ratingBarStyleSmall = 70; + /** +

+ @attr description + Default style for RingtonePreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#ringtonePreferenceStyle}. + @attr name android:ringtonePreferenceStyle + */ + public static final int Theme_ringtonePreferenceStyle = 91; + /** +

+ @attr description + Default ScrollView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollViewStyle}. + @attr name android:scrollViewStyle + */ + public static final int Theme_scrollViewStyle = 72; + /** +

+ @attr description + Theme to use for Search Dialogs + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchDialogTheme + */ + public static final int Theme_searchDialogTheme = 264; + /** +

+ @attr description + SearchView dropdown background + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchDropdownBackground + */ + public static final int Theme_searchDropdownBackground = 255; + /** +

+ @attr description + The list item height for search results. @hide + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:searchResultListItemHeight + */ + public static final int Theme_searchResultListItemHeight = 227; + /** +

+ @attr description + SearchView close button icon + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewCloseIcon + */ + public static final int Theme_searchViewCloseIcon = 256; + /** +

+ @attr description + SearchView query refinement icon + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewEditQuery + */ + public static final int Theme_searchViewEditQuery = 260; + /** +

+ @attr description + SearchView query refinement icon background + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewEditQueryBackground + */ + public static final int Theme_searchViewEditQueryBackground = 261; + /** +

+ @attr description + SearchView Go button icon + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewGoIcon + */ + public static final int Theme_searchViewGoIcon = 257; + /** +

+ @attr description + SearchView Search icon + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewSearchIcon + */ + public static final int Theme_searchViewSearchIcon = 258; + /** +

+ @attr description + SearchView text field background for the left section + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewTextField + */ + public static final int Theme_searchViewTextField = 262; + /** +

+ @attr description + SearchView text field background for the right section + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewTextFieldRight + */ + public static final int Theme_searchViewTextFieldRight = 263; + /** +

+ @attr description + SearchView Voice button icon + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:searchViewVoiceIcon + */ + public static final int Theme_searchViewVoiceIcon = 259; + /** +

+ @attr description + Search widget more corpus result item background. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This is a private symbol. + @attr name com.android.internal:searchWidgetCorpusItemBackground + */ + public static final int Theme_searchWidgetCorpusItemBackground = 211; + /** +

+ @attr description + Default SeekBar style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#seekBarStyle}. + @attr name android:seekBarStyle + */ + public static final int Theme_seekBarStyle = 68; + /** +

+ @attr description + Style for segmented buttons - a container that houses several buttons + with the appearance of a singel button broken into segments. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#segmentedButtonStyle}. + @attr name android:segmentedButtonStyle + */ + public static final int Theme_segmentedButtonStyle = 169; + /** +

+ @attr description + Background drawable for standalone items that need focus/pressed states. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#selectableItemBackground}. + @attr name android:selectableItemBackground + */ + public static final int Theme_selectableItemBackground = 158; + /** +

+ @attr description + Default style for spinner drop down items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerDropDownItemStyle}. + @attr name android:spinnerDropDownItemStyle + */ + public static final int Theme_spinnerDropDownItemStyle = 79; + /** +

+ @attr description + Default spinner item style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerItemStyle}. + @attr name android:spinnerItemStyle + */ + public static final int Theme_spinnerItemStyle = 81; + /** +

+ @attr description + Default Spinner style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#spinnerStyle}. + @attr name android:spinnerStyle + */ + public static final int Theme_spinnerStyle = 73; + /** +

+ @attr description + Default StackView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:stackViewStyle + */ + public static final int Theme_stackViewStyle = 237; + /** +

+ @attr description + Default Star style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#starStyle}. + @attr name android:starStyle + */ + public static final int Theme_starStyle = 74; + /** +

+ @attr description + Default style for switch preferences. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#switchPreferenceStyle}. + @attr name android:switchPreferenceStyle + */ + public static final int Theme_switchPreferenceStyle = 190; + /** +

+ @attr description + Default style for the Switch widget. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:switchStyle + */ + public static final int Theme_switchStyle = 266; + /** +

+ @attr description + Default TabWidget style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tabWidgetStyle}. + @attr name android:tabWidgetStyle + */ + public static final int Theme_tabWidgetStyle = 75; + /** +

+ @attr description + Default appearance of text: color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearance}. + @attr name android:textAppearance + */ + public static final int Theme_textAppearance = 4; + /** +

+ @attr description + The underline color and thickness for auto correction suggestion + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:textAppearanceAutoCorrectionSuggestion + */ + public static final int Theme_textAppearanceAutoCorrectionSuggestion = 222; + /** +

+ @attr description + Text color, typeface, size, and style for the text inside of a button. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceButton}. + @attr name android:textAppearanceButton + */ + public static final int Theme_textAppearanceButton = 95; + /** +

+ @attr description + The underline color and thickness for easy correct suggestion + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:textAppearanceEasyCorrectSuggestion + */ + public static final int Theme_textAppearanceEasyCorrectSuggestion = 216; + /** +

+ @attr description + Default appearance of text against an inverted background: + color, typeface, size, and style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceInverse}. + @attr name android:textAppearanceInverse + */ + public static final int Theme_textAppearanceInverse = 5; + /** +

+ @attr description + Text color, typeface, size, and style for "large" text. Defaults to primary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLarge}. + @attr name android:textAppearanceLarge + */ + public static final int Theme_textAppearanceLarge = 16; + /** +

+ @attr description + Text color, typeface, size, and style for "large" inverse text. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLargeInverse}. + @attr name android:textAppearanceLargeInverse + */ + public static final int Theme_textAppearanceLargeInverse = 19; + /** +

+ @attr description + Text color, typeface, size, and style for the text inside of a popup menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceLargePopupMenu}. + @attr name android:textAppearanceLargePopupMenu + */ + public static final int Theme_textAppearanceLargePopupMenu = 150; + /** +

+ @attr description + The preferred TextAppearance for the primary text of list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceListItem}. + @attr name android:textAppearanceListItem + */ + public static final int Theme_textAppearanceListItem = 207; + /** +

+ @attr description + The preferred TextAppearance for the primary text of small list items. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceListItemSmall}. + @attr name android:textAppearanceListItemSmall + */ + public static final int Theme_textAppearanceListItemSmall = 208; + /** +

+ @attr description + Text color, typeface, size, and style for "medium" text. Defaults to primary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceMedium}. + @attr name android:textAppearanceMedium + */ + public static final int Theme_textAppearanceMedium = 17; + /** +

+ @attr description + Text color, typeface, size, and style for "medium" inverse text. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceMediumInverse}. + @attr name android:textAppearanceMediumInverse + */ + public static final int Theme_textAppearanceMediumInverse = 20; + /** +

+ @attr description + The underline color and thickness for misspelled suggestion + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:textAppearanceMisspelledSuggestion + */ + public static final int Theme_textAppearanceMisspelledSuggestion = 221; + /** +

+ @attr description + Text color, typeface, size, and style for system search result subtitle. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSearchResultSubtitle}. + @attr name android:textAppearanceSearchResultSubtitle + */ + public static final int Theme_textAppearanceSearchResultSubtitle = 116; + /** +

+ @attr description + Text color, typeface, size, and style for system search result title. Defaults to primary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSearchResultTitle}. + @attr name android:textAppearanceSearchResultTitle + */ + public static final int Theme_textAppearanceSearchResultTitle = 117; + /** +

+ @attr description + Text color, typeface, size, and style for "small" text. Defaults to secondary text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmall}. + @attr name android:textAppearanceSmall + */ + public static final int Theme_textAppearanceSmall = 18; + /** +

+ @attr description + Text color, typeface, size, and style for "small" inverse text. Defaults to secondary inverse text color. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmallInverse}. + @attr name android:textAppearanceSmallInverse + */ + public static final int Theme_textAppearanceSmallInverse = 21; + /** +

+ @attr description + Text color, typeface, size, and style for small text inside of a popup menu. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAppearanceSmallPopupMenu}. + @attr name android:textAppearanceSmallPopupMenu + */ + public static final int Theme_textAppearanceSmallPopupMenu = 151; + /** +

+ @attr description + Drawable to use for check marks. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textCheckMark}. + @attr name android:textCheckMark + */ + public static final int Theme_textCheckMark = 22; + /** +

This symbol is the offset where the {@link android.R.attr#textCheckMarkInverse} + attribute's value can be found in the {@link #Theme} array. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + @attr name android:textCheckMarkInverse + */ + public static final int Theme_textCheckMarkInverse = 23; + /** +

+ @attr description + Color of list item text in alert dialogs. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorAlertDialogListItem}. + @attr name android:textColorAlertDialogListItem + */ + public static final int Theme_textColorAlertDialogListItem = 153; + /** +

+ @attr description + Color of highlighted text, when used in a light theme. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHighlightInverse}. + @attr name android:textColorHighlightInverse + */ + public static final int Theme_textColorHighlightInverse = 176; + /** +

+ @attr description + Inverse hint text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorHintInverse}. + @attr name android:textColorHintInverse + */ + public static final int Theme_textColorHintInverse = 15; + /** +

+ @attr description + Color of link text (URLs), when used in a light theme. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorLinkInverse}. + @attr name android:textColorLinkInverse + */ + public static final int Theme_textColorLinkInverse = 177; + /** +

+ @attr description + The most prominent text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimary}. + @attr name android:textColorPrimary + */ + public static final int Theme_textColorPrimary = 6; + /** +

+ @attr description + Bright text color. Only differentiates based on the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryDisableOnly}. + @attr name android:textColorPrimaryDisableOnly + */ + public static final int Theme_textColorPrimaryDisableOnly = 7; + /** +

+ @attr description + Primary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverse}. + @attr name android:textColorPrimaryInverse + */ + public static final int Theme_textColorPrimaryInverse = 9; + /** +

+ @attr description + Bright inverse text color. Only differentiates based on the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverseDisableOnly}. + @attr name android:textColorPrimaryInverseDisableOnly + */ + public static final int Theme_textColorPrimaryInverseDisableOnly = 114; + /** +

+ @attr description + Bright inverse text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryInverseNoDisable}. + @attr name android:textColorPrimaryInverseNoDisable + */ + public static final int Theme_textColorPrimaryInverseNoDisable = 13; + /** +

+ @attr description + Bright text color. This does not differentiate the disabled state. As an example, + buttons use this since they display the disabled state via the background and not the + foreground text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorPrimaryNoDisable}. + @attr name android:textColorPrimaryNoDisable + */ + public static final int Theme_textColorPrimaryNoDisable = 11; + /** +

+ @attr description + Text color for urls in search suggestions, used by things like global search and the browser. @hide + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This is a private symbol. + @attr name com.android.internal:textColorSearchUrl + */ + public static final int Theme_textColorSearchUrl = 110; + /** +

+ @attr description + Secondary text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondary}. + @attr name android:textColorSecondary + */ + public static final int Theme_textColorSecondary = 8; + /** +

+ @attr description + Secondary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryInverse}. + @attr name android:textColorSecondaryInverse + */ + public static final int Theme_textColorSecondaryInverse = 10; + /** +

+ @attr description + Dim inverse text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryInverseNoDisable}. + @attr name android:textColorSecondaryInverseNoDisable + */ + public static final int Theme_textColorSecondaryInverseNoDisable = 14; + /** +

+ @attr description + Dim text color. This does not differentiate the disabled state. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorSecondaryNoDisable}. + @attr name android:textColorSecondaryNoDisable + */ + public static final int Theme_textColorSecondaryNoDisable = 12; + /** +

+ @attr description + Tertiary text color. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorTertiary}. + @attr name android:textColorTertiary + */ + public static final int Theme_textColorTertiary = 100; + /** +

+ @attr description + Tertiary inverse text color, useful for inverted backgrounds. + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColorTertiaryInverse}. + @attr name android:textColorTertiaryInverse + */ + public static final int Theme_textColorTertiaryInverse = 101; + /** +

+ @attr description + Variation of textEditPasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditNoPasteWindowLayout}. + @attr name android:textEditNoPasteWindowLayout + */ + public static final int Theme_textEditNoPasteWindowLayout = 163; + /** +

+ @attr description + The layout of the view that is displayed on top of the cursor to paste inside a + TextEdit field. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditPasteWindowLayout}. + @attr name android:textEditPasteWindowLayout + */ + public static final int Theme_textEditPasteWindowLayout = 162; + /** +

+ @attr description + Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSideNoPasteWindowLayout}. + @attr name android:textEditSideNoPasteWindowLayout + */ + public static final int Theme_textEditSideNoPasteWindowLayout = 187; + /** +

+ @attr description + Used instead of textEditPasteWindowLayout when the window is moved on the side of the + insertion cursor because it would be clipped if it were positioned on top. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSidePasteWindowLayout}. + @attr name android:textEditSidePasteWindowLayout + */ + public static final int Theme_textEditSidePasteWindowLayout = 186; + /** +

+ @attr description + Layout of the TextView item that will populate the suggestion popup window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textEditSuggestionItemLayout}. + @attr name android:textEditSuggestionItemLayout + */ + public static final int Theme_textEditSuggestionItemLayout = 192; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor for positioning the cursor within text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandle}. + @attr name android:textSelectHandle + */ + public static final int Theme_textSelectHandle = 129; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the left side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleLeft}. + @attr name android:textSelectHandleLeft + */ + public static final int Theme_textSelectHandleLeft = 127; + /** +

+ @attr description + Reference to a drawable that will be used to display a text selection + anchor on the right side of a selection region. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleRight}. + @attr name android:textSelectHandleRight + */ + public static final int Theme_textSelectHandleRight = 128; + /** +

+ @attr description + Reference to a style that will be used for the window containing a text + selection anchor. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSelectHandleWindowStyle}. + @attr name android:textSelectHandleWindowStyle + */ + public static final int Theme_textSelectHandleWindowStyle = 130; + /** +

+ @attr description + Reference to a style that will be used for the window containing a list of possible + text suggestions in an EditText. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textSuggestionsWindowStyle}. + @attr name android:textSuggestionsWindowStyle + */ + public static final int Theme_textSuggestionsWindowStyle = 191; + /** +

+ @attr description + The underline color + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This is a private symbol. + @attr name com.android.internal:textUnderlineColor + */ + public static final int Theme_textUnderlineColor = 223; + /** +

+ @attr description + The underline thickness + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This is a private symbol. + @attr name com.android.internal:textUnderlineThickness + */ + public static final int Theme_textUnderlineThickness = 224; + /** +

+ @attr description + Default TextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textViewStyle}. + @attr name android:textViewStyle + */ + public static final int Theme_textViewStyle = 76; + /** +

+ @attr description + The TimePicker style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:timePickerStyle + */ + public static final int Theme_timePickerStyle = 239; + /** +

+ @attr description + Background to use for toasts + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:toastFrameBackground + */ + public static final int Theme_toastFrameBackground = 254; + /** +

+ @attr description + Default WebTextView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#webTextViewStyle}. + @attr name android:webTextViewStyle + */ + public static final int Theme_webTextViewStyle = 126; + /** +

+ @attr description + Default WebView style. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#webViewStyle}. + @attr name android:webViewStyle + */ + public static final int Theme_webViewStyle = 77; + /** +

+ @attr description + Flag indicating whether this window should have an Action Bar + in place of the usual title bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBar}. + @attr name android:windowActionBar + */ + public static final int Theme_windowActionBar = 131; + /** +

+ @attr description + Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBarOverlay}. + @attr name android:windowActionBarOverlay + */ + public static final int Theme_windowActionBarOverlay = 139; + /** +

+ @attr description + Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionModeOverlay}. + @attr name android:windowActionModeOverlay + */ + public static final int Theme_windowActionModeOverlay = 138; + /** +

+ @attr description + Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int Theme_windowAnimationStyle = 93; + /** +

+ @attr description + Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+ + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowBackground}. + @attr name android:windowBackground + */ + public static final int Theme_windowBackground = 36; + /** +

+ @attr description + Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowCloseOnTouchOutside}. + @attr name android:windowCloseOnTouchOutside + */ + public static final int Theme_windowCloseOnTouchOutside = 183; + /** +

+ @attr description + This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowContentOverlay}. + @attr name android:windowContentOverlay + */ + public static final int Theme_windowContentOverlay = 41; + /** +

+ @attr description + Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowDisablePreview}. + @attr name android:windowDisablePreview + */ + public static final int Theme_windowDisablePreview = 107; + /** +

+ @attr description + Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnableSplitTouch}. + @attr name android:windowEnableSplitTouch + */ + public static final int Theme_windowEnableSplitTouch = 164; + /** +

+ @attr description + Drawable to use as a frame around the window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFrame}. + @attr name android:windowFrame + */ + public static final int Theme_windowFrame = 37; + /** +

+ @attr description + Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFullscreen}. + @attr name android:windowFullscreen + */ + public static final int Theme_windowFullscreen = 97; + /** +

+ @attr description + Flag indicating whether this is a floating window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsFloating}. + @attr name android:windowIsFloating + */ + public static final int Theme_windowIsFloating = 39; + /** +

+ @attr description + Flag indicating whether this is a translucent window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsTranslucent}. + @attr name android:windowIsTranslucent + */ + public static final int Theme_windowIsTranslucent = 40; + /** +

+ @attr description + Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoDisplay}. + @attr name android:windowNoDisplay + */ + public static final int Theme_windowNoDisplay = 105; + /** +

+ @attr description + Flag indicating whether there should be no title on this window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoTitle}. + @attr name android:windowNoTitle + */ + public static final int Theme_windowNoTitle = 38; + /** +

+ @attr description + Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowOverscan}. + @attr name android:windowOverscan + */ + public static final int Theme_windowOverscan = 218; + /** +

+ @attr description + Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowWallpaper}. + @attr name android:windowShowWallpaper + */ + public static final int Theme_windowShowWallpaper = 115; + /** +

+ @attr description + Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int Theme_windowSoftInputMode = 108; + /** +

+ @attr description + Flag indicating that the action bar should be split to provide more + room for elements. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowSplitActionBar + */ + public static final int Theme_windowSplitActionBar = 229; + /** +

+ @attr description + The style resource to use for a window's title area. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleBackgroundStyle}. + @attr name android:windowTitleBackgroundStyle + */ + public static final int Theme_windowTitleBackgroundStyle = 44; + /** +

+ @attr description + The style resource to use for a window's title bar height. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleSize}. + @attr name android:windowTitleSize + */ + public static final int Theme_windowTitleSize = 42; + /** +

+ @attr description + The style resource to use for a window's title text. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTitleStyle}. + @attr name android:windowTitleStyle + */ + public static final int Theme_windowTitleStyle = 43; + /** +

+ @attr description + Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentNavigation}. + @attr name android:windowTranslucentNavigation + */ + public static final int Theme_windowTranslucentNavigation = 220; + /** +

+ @attr description + Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentStatus}. + @attr name android:windowTranslucentStatus + */ + public static final int Theme_windowTranslucentStatus = 219; + /** +

+ @attr description + Default style for YesNoPreference. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#yesNoPreferenceStyle}. + @attr name android:yesNoPreferenceStyle + */ + public static final int Theme_yesNoPreferenceStyle = 88; + /** Attributes that can be used with a TimePicker. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TimePicker_internalLayout android:internalLayout} @hide The layout of the time picker.
+ @see #TimePicker_internalLayout + */ + public static final int[] TimePicker = { + 0x0101043c + }; + /** +

+ @attr description + @hide The layout of the time picker. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This is a private symbol. + @attr name com.android.internal:internalLayout + */ + public static final int TimePicker_internalLayout = 0; + /** Attributes that can be used with a ToggleButton. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ToggleButton_disabledAlpha android:disabledAlpha} The alpha to apply to the indicator when disabled.
{@link #ToggleButton_textOff android:textOff} The text for the button when it is not checked.
{@link #ToggleButton_textOn android:textOn} The text for the button when it is checked.
+ @see #ToggleButton_disabledAlpha + @see #ToggleButton_textOff + @see #ToggleButton_textOn + */ + public static final int[] ToggleButton = { + 0x01010033, 0x01010124, 0x01010125 + }; + /** +

+ @attr description + The alpha to apply to the indicator when disabled. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#disabledAlpha}. + @attr name android:disabledAlpha + */ + public static final int ToggleButton_disabledAlpha = 0; + /** +

+ @attr description + The text for the button when it is not checked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOff}. + @attr name android:textOff + */ + public static final int ToggleButton_textOff = 2; + /** +

+ @attr description + The text for the button when it is checked. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textOn}. + @attr name android:textOn + */ + public static final int ToggleButton_textOn = 1; + /** Use specific transition subclass names as the root tag of the XML resource that + describes a {@link android.transition.Transition Transition}, + such as move, fade, and set. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #Transition_duration android:duration} Amount of time (in milliseconds) that the transition should run.
{@link #Transition_interpolator android:interpolator} Interpolator to be used in the animations spawned by this transition.
{@link #Transition_startDelay android:startDelay} Delay in milliseconds before the transition starts.
+ @see #Transition_duration + @see #Transition_interpolator + @see #Transition_startDelay + */ + public static final int[] Transition = { + 0x01010141, 0x01010198, 0x010103e2 + }; + /** +

+ @attr description + Amount of time (in milliseconds) that the transition should run. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duration}. + @attr name android:duration + */ + public static final int Transition_duration = 1; + /** +

+ @attr description + Interpolator to be used in the animations spawned by this transition. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#interpolator}. + @attr name android:interpolator + */ + public static final int Transition_interpolator = 0; + /** +

+ @attr description + Delay in milliseconds before the transition starts. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#startDelay}. + @attr name android:startDelay + */ + public static final int Transition_startDelay = 2; + /** Use transitionManager as the root tag of the XML resource that + describes a {@link android.transition.TransitionManager + TransitionManager}. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #TransitionManager_fromScene android:fromScene} The originating scene in this scene change.
{@link #TransitionManager_toScene android:toScene} The destination scene in this scene change.
{@link #TransitionManager_transition android:transition} The id of a transition to be used in a particular scene change.
+ @see #TransitionManager_fromScene + @see #TransitionManager_toScene + @see #TransitionManager_transition + */ + public static final int[] TransitionManager = { + 0x010103dd, 0x010103de, 0x010103df + }; + /** +

+ @attr description + The originating scene in this scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fromScene}. + @attr name android:fromScene + */ + public static final int TransitionManager_fromScene = 0; + /** +

+ @attr description + The destination scene in this scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#toScene}. + @attr name android:toScene + */ + public static final int TransitionManager_toScene = 1; + /** +

+ @attr description + The id of a transition to be used in a particular scene change. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transition}. + @attr name android:transition + */ + public static final int TransitionManager_transition = 2; + /** Use set as the root tag of the XML resource that + describes a {@link android.transition.TransitionSet + TransitionSet} transition. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TransitionSet_transitionOrdering android:transitionOrdering}
+ @see #TransitionSet_transitionOrdering + */ + public static final int[] TransitionSet = { + 0x010103e0 + }; + /** +

This symbol is the offset where the {@link android.R.attr#transitionOrdering} + attribute's value can be found in the {@link #TransitionSet} array. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
together0 child transitions should be played together.
sequential1 child transitions should be played sequentially, in the same order + as the xml.
+ @attr name android:transitionOrdering + */ + public static final int TransitionSet_transitionOrdering = 0; + /** Use target as the root tag of the XML resource that + describes a {@link android.transition.Transition#addTarget(int) + targetId} of a transition. There can be one or more targets inside + a targets tag, which is itself inside an appropriate + {@link android.R.styleable#Transition Transition} tag. + +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TransitionTarget_targetId android:targetId} The id of a target on which this transition will animate changes.
+ @see #TransitionTarget_targetId + */ + public static final int[] TransitionTarget = { + 0x010103dc + }; + /** +

+ @attr description + The id of a target on which this transition will animate changes. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#targetId}. + @attr name android:targetId + */ + public static final int TransitionTarget_targetId = 0; + /** Attributes that can be used with a TranslateAnimation. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #TranslateAnimation_fromXDelta android:fromXDelta}
{@link #TranslateAnimation_fromYDelta android:fromYDelta}
{@link #TranslateAnimation_toXDelta android:toXDelta}
{@link #TranslateAnimation_toYDelta android:toYDelta}
+ @see #TranslateAnimation_fromXDelta + @see #TranslateAnimation_fromYDelta + @see #TranslateAnimation_toXDelta + @see #TranslateAnimation_toYDelta + */ + public static final int[] TranslateAnimation = { + 0x010101c6, 0x010101c7, 0x010101c8, 0x010101c9 + }; + /** +

This symbol is the offset where the {@link android.R.attr#fromXDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromXDelta + */ + public static final int TranslateAnimation_fromXDelta = 0; + /** +

This symbol is the offset where the {@link android.R.attr#fromYDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:fromYDelta + */ + public static final int TranslateAnimation_fromYDelta = 2; + /** +

This symbol is the offset where the {@link android.R.attr#toXDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toXDelta + */ + public static final int TranslateAnimation_toXDelta = 1; + /** +

This symbol is the offset where the {@link android.R.attr#toYDelta} + attribute's value can be found in the {@link #TranslateAnimation} array. + + +

May be a floating point value, such as "1.2". +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:toYDelta + */ + public static final int TranslateAnimation_toYDelta = 3; + /** Attributes that can be used with a TwoLineListItem. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #TwoLineListItem_mode android:mode}
+ @see #TwoLineListItem_mode + */ + public static final int[] TwoLineListItem = { + 0x0101017e + }; + /** +

This symbol is the offset where the {@link android.R.attr#mode} + attribute's value can be found in the {@link #TwoLineListItem} array. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
oneLine1 Always show only the first line.
collapsing2 When selected show both lines, otherwise show only the first line. + This is the default mode.
twoLine3 Always show both lines.
+ @attr name android:mode + */ + public static final int TwoLineListItem_mode = 0; + /** Attributes that can be used with a VerticalSlider_Layout. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #VerticalSlider_Layout_layout_scale android:layout_scale}
+ @see #VerticalSlider_Layout_layout_scale + */ + public static final int[] VerticalSlider_Layout = { + 0x01010193 + }; + /** +

This symbol is the offset where the {@link android.R.attr#layout_scale} + attribute's value can be found in the {@link #VerticalSlider_Layout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:layout_scale + */ + public static final int VerticalSlider_Layout_layout_scale = 0; + /** Attributes that can be used with {@link android.view.View} or + any of its subclasses. Also see {@link #ViewGroup_Layout} for + attributes that are processed by the view's parent. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #View_accessibilityLiveRegion android:accessibilityLiveRegion} Indicates to accessibility services whether the user should be notified when + this view changes.
{@link #View_alpha android:alpha} alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque).
{@link #View_background android:background} A drawable to use as the background.
{@link #View_clickable android:clickable} Defines whether this view reacts to click events.
{@link #View_contentDescription android:contentDescription} Defines text that briefly describes content of the view.
{@link #View_drawingCacheQuality android:drawingCacheQuality} Defines the quality of translucent drawing caches.
{@link #View_duplicateParentState android:duplicateParentState} When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.
{@link #View_fadeScrollbars android:fadeScrollbars} Defines whether to fade out scrollbars when they are not in use.
{@link #View_fadingEdge android:fadingEdge} This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}).
{@link #View_fadingEdgeLength android:fadingEdgeLength} Defines the length of the fading edges.
{@link #View_filterTouchesWhenObscured android:filterTouchesWhenObscured} Specifies whether to filter touches when the view's window is obscured by + another visible window.
{@link #View_fitsSystemWindows android:fitsSystemWindows} Boolean internal attribute to adjust view layout based on + system windows such as the status bar.
{@link #View_focusable android:focusable} Boolean that controls whether a view can take focus.
{@link #View_focusableInTouchMode android:focusableInTouchMode} Boolean that controls whether a view can take focus while in touch mode.
{@link #View_hapticFeedbackEnabled android:hapticFeedbackEnabled} Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses.
{@link #View_id android:id} Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}.
{@link #View_importantForAccessibility android:importantForAccessibility} Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen.
{@link #View_isScrollContainer android:isScrollContainer} Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method.
{@link #View_keepScreenOn android:keepScreenOn} Controls whether the view's window should keep the screen on + while visible.
{@link #View_labelFor android:labelFor} Specifies the id of a view for which this view serves as a label for + accessibility purposes.
{@link #View_layerType android:layerType} Specifies the type of layer backing this view.
{@link #View_layoutDirection android:layoutDirection} Defines the direction of layout drawing.
{@link #View_longClickable android:longClickable} Defines whether this view reacts to long click events.
{@link #View_minHeight android:minHeight} Defines the minimum height of the view.
{@link #View_minWidth android:minWidth} Defines the minimum width of the view.
{@link #View_nextFocusDown android:nextFocusDown} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusForward android:nextFocusForward} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusLeft android:nextFocusLeft} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}.
{@link #View_nextFocusRight android:nextFocusRight} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_nextFocusUp android:nextFocusUp} Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed.
{@link #View_onClick android:onClick} Name of the method in this View's context to invoke when the view is + clicked.
{@link #View_overScrollMode android:overScrollMode} Defines over-scrolling behavior.
{@link #View_padding android:padding} Sets the padding, in pixels, of all four edges.
{@link #View_paddingBottom android:paddingBottom} Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}.
{@link #View_paddingEnd android:paddingEnd} Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}.
{@link #View_paddingLeft android:paddingLeft} Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}.
{@link #View_paddingRight android:paddingRight} Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}.
{@link #View_paddingStart android:paddingStart} Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}.
{@link #View_paddingTop android:paddingTop} Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}.
{@link #View_requiresFadingEdge android:requiresFadingEdge} Defines which edges should be faded on scrolling.
{@link #View_rotation android:rotation} rotation of the view, in degrees.
{@link #View_rotationX android:rotationX} rotation of the view around the x axis, in degrees.
{@link #View_rotationY android:rotationY} rotation of the view around the y axis, in degrees.
{@link #View_saveEnabled android:saveEnabled} If unset, no state will be saved for this view when it is being + frozen.
{@link #View_scaleX android:scaleX} scale of the view in the x direction.
{@link #View_scaleY android:scaleY} scale of the view in the y direction.
{@link #View_scrollX android:scrollX} The initial horizontal scroll offset, in pixels.
{@link #View_scrollY android:scrollY} The initial vertical scroll offset, in pixels.
{@link #View_scrollbarAlwaysDrawHorizontalTrack android:scrollbarAlwaysDrawHorizontalTrack} Defines whether the horizontal scrollbar track should always be drawn.
{@link #View_scrollbarAlwaysDrawVerticalTrack android:scrollbarAlwaysDrawVerticalTrack} Defines whether the vertical scrollbar track should always be drawn.
{@link #View_scrollbarDefaultDelayBeforeFade android:scrollbarDefaultDelayBeforeFade} Defines the delay in milliseconds that a scrollbar waits before fade out.
{@link #View_scrollbarFadeDuration android:scrollbarFadeDuration} Defines the delay in milliseconds that a scrollbar takes to fade out.
{@link #View_scrollbarSize android:scrollbarSize} Sets the width of vertical scrollbars and height of horizontal scrollbars.
{@link #View_scrollbarStyle android:scrollbarStyle} Controls the scrollbar style and position.
{@link #View_scrollbarThumbHorizontal android:scrollbarThumbHorizontal} Defines the horizontal scrollbar thumb drawable.
{@link #View_scrollbarThumbVertical android:scrollbarThumbVertical} Defines the vertical scrollbar thumb drawable.
{@link #View_scrollbarTrackHorizontal android:scrollbarTrackHorizontal} Defines the horizontal scrollbar track drawable.
{@link #View_scrollbarTrackVertical android:scrollbarTrackVertical} Defines the vertical scrollbar track drawable.
{@link #View_scrollbars android:scrollbars} Defines which scrollbars should be displayed on scrolling or not.
{@link #View_soundEffectsEnabled android:soundEffectsEnabled} Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching.
{@link #View_tag android:tag} Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}.
{@link #View_textAlignment android:textAlignment} Defines the alignment of the text.
{@link #View_textDirection android:textDirection} Defines the direction of the text.
{@link #View_transformPivotX android:transformPivotX} x location of the pivot point around which the view will rotate and scale.
{@link #View_transformPivotY android:transformPivotY} y location of the pivot point around which the view will rotate and scale.
{@link #View_translationX android:translationX} translation in x of the view.
{@link #View_translationY android:translationY} translation in y of the view.
{@link #View_verticalScrollbarPosition android:verticalScrollbarPosition} Determines which side the vertical scroll bar should be placed on.
{@link #View_visibility android:visibility} Controls the initial visibility of the view.
+ @see #View_accessibilityLiveRegion + @see #View_alpha + @see #View_background + @see #View_clickable + @see #View_contentDescription + @see #View_drawingCacheQuality + @see #View_duplicateParentState + @see #View_fadeScrollbars + @see #View_fadingEdge + @see #View_fadingEdgeLength + @see #View_filterTouchesWhenObscured + @see #View_fitsSystemWindows + @see #View_focusable + @see #View_focusableInTouchMode + @see #View_hapticFeedbackEnabled + @see #View_id + @see #View_importantForAccessibility + @see #View_isScrollContainer + @see #View_keepScreenOn + @see #View_labelFor + @see #View_layerType + @see #View_layoutDirection + @see #View_longClickable + @see #View_minHeight + @see #View_minWidth + @see #View_nextFocusDown + @see #View_nextFocusForward + @see #View_nextFocusLeft + @see #View_nextFocusRight + @see #View_nextFocusUp + @see #View_onClick + @see #View_overScrollMode + @see #View_padding + @see #View_paddingBottom + @see #View_paddingEnd + @see #View_paddingLeft + @see #View_paddingRight + @see #View_paddingStart + @see #View_paddingTop + @see #View_requiresFadingEdge + @see #View_rotation + @see #View_rotationX + @see #View_rotationY + @see #View_saveEnabled + @see #View_scaleX + @see #View_scaleY + @see #View_scrollX + @see #View_scrollY + @see #View_scrollbarAlwaysDrawHorizontalTrack + @see #View_scrollbarAlwaysDrawVerticalTrack + @see #View_scrollbarDefaultDelayBeforeFade + @see #View_scrollbarFadeDuration + @see #View_scrollbarSize + @see #View_scrollbarStyle + @see #View_scrollbarThumbHorizontal + @see #View_scrollbarThumbVertical + @see #View_scrollbarTrackHorizontal + @see #View_scrollbarTrackVertical + @see #View_scrollbars + @see #View_soundEffectsEnabled + @see #View_tag + @see #View_textAlignment + @see #View_textDirection + @see #View_transformPivotX + @see #View_transformPivotY + @see #View_translationX + @see #View_translationY + @see #View_verticalScrollbarPosition + @see #View_visibility + */ + public static final int[] View = { + 0x01010063, 0x01010064, 0x01010065, 0x01010066, + 0x01010067, 0x01010068, 0x01010069, 0x0101007f, + 0x010100d0, 0x010100d1, 0x010100d2, 0x010100d3, + 0x010100d4, 0x010100d5, 0x010100d6, 0x010100d7, + 0x010100d8, 0x010100d9, 0x010100da, 0x010100db, + 0x010100dc, 0x010100dd, 0x010100de, 0x010100df, + 0x010100e0, 0x010100e1, 0x010100e2, 0x010100e3, + 0x010100e4, 0x010100e5, 0x010100e6, 0x010100e7, + 0x010100e8, 0x010100e9, 0x0101013f, 0x01010140, + 0x01010215, 0x01010216, 0x0101024e, 0x0101025e, + 0x0101026f, 0x01010273, 0x010102a8, 0x010102a9, + 0x010102aa, 0x010102c1, 0x010102c4, 0x0101031f, + 0x01010320, 0x01010321, 0x01010322, 0x01010323, + 0x01010324, 0x01010325, 0x01010326, 0x01010327, + 0x01010328, 0x01010334, 0x0101033c, 0x01010354, + 0x010103a5, 0x010103aa, 0x010103b0, 0x010103b1, + 0x010103b2, 0x010103b3, 0x010103b4, 0x010103c6, + 0x010103ee + }; + /** +

+ @attr description + Indicates to accessibility services whether the user should be notified when + this view changes. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Accessibility services should not announce changes to this view.
polite1 Accessibility services should announce changes to this view.
assertive2 Accessibility services should interrupt ongoing speech to immediately + announce changes to this view.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#accessibilityLiveRegion}. + @attr name android:accessibilityLiveRegion + */ + public static final int View_accessibilityLiveRegion = 68; + /** +

+ @attr description + alpha property of the view, as a value between 0 (completely transparent) and 1 + (completely opaque). + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alpha}. + @attr name android:alpha + */ + public static final int View_alpha = 47; + /** +

+ @attr description + A drawable to use as the background. This can be either a reference + to a full drawable resource (such as a PNG image, 9-patch, + XML state list description, etc), or a solid color such as "#ff000000" + (black). + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#background}. + @attr name android:background + */ + public static final int View_background = 12; + /** +

+ @attr description + Defines whether this view reacts to click events. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clickable}. + @attr name android:clickable + */ + public static final int View_clickable = 29; + /** +

+ @attr description + Defines text that briefly describes content of the view. This property is used + primarily for accessibility. Since some views do not have textual + representation this attribute can be used for providing such. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#contentDescription}. + @attr name android:contentDescription + */ + public static final int View_contentDescription = 41; + /** +

+ @attr description + Defines the quality of translucent drawing caches. This property is used + only when the drawing cache is enabled and translucent. The default value is auto. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
auto0 Lets the framework decide what quality level should be used + for the drawing cache.
low1 Low quality. When set to low quality, the drawing cache uses a lower color + depth, thus losing precision in rendering gradients, but uses less memory.
high2 High quality. When set to high quality, the drawing cache uses a higher + color depth but uses more memory.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#drawingCacheQuality}. + @attr name android:drawingCacheQuality + */ + public static final int View_drawingCacheQuality = 32; + /** +

+ @attr description + When this attribute is set to true, the view gets its drawable state + (focused, pressed, etc.) from its direct parent rather than from itself. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#duplicateParentState}. + @attr name android:duplicateParentState + */ + public static final int View_duplicateParentState = 33; + /** +

+ @attr description + Defines whether to fade out scrollbars when they are not in use. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadeScrollbars}. + @attr name android:fadeScrollbars + */ + public static final int View_fadeScrollbars = 44; + /** +

+ @attr description + This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}). + Using fading edges may introduce noticeable performance + degradations and should be used only when required by the application's + visual design. To request fading edges with API level 14 and above, + use the android:requiresFadingEdge attribute instead. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadingEdge}. + @attr name android:fadingEdge + */ + public static final int View_fadingEdge = 23; + /** +

+ @attr description + Defines the length of the fading edges. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fadingEdgeLength}. + @attr name android:fadingEdgeLength + */ + public static final int View_fadingEdgeLength = 24; + /** +

+ @attr description + Specifies whether to filter touches when the view's window is obscured by + another visible window. When set to true, the view will not receive touches + whenever a toast, dialog or other window appears above the view's window. + Refer to the {@link android.view.View} security documentation for more details. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#filterTouchesWhenObscured}. + @attr name android:filterTouchesWhenObscured + */ + public static final int View_filterTouchesWhenObscured = 46; + /** +

+ @attr description + Boolean internal attribute to adjust view layout based on + system windows such as the status bar. + If true, adjusts the padding of this view to leave space for the system windows. + Will only take effect if this view is in a non-embedded activity. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#fitsSystemWindows}. + @attr name android:fitsSystemWindows + */ + public static final int View_fitsSystemWindows = 21; + /** +

+ @attr description + Boolean that controls whether a view can take focus. By default the user can not + move focus to a view; by setting this attribute to true the view is + allowed to take focus. This value does not impact the behavior of + directly calling {@link android.view.View#requestFocus}, which will + always request focus regardless of this view. It only impacts where + focus navigation will try to move focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusable}. + @attr name android:focusable + */ + public static final int View_focusable = 18; + /** +

+ @attr description + Boolean that controls whether a view can take focus while in touch mode. + If this is true for a view, that view can gain focus when clicked on, and can keep + focus if another view is clicked on that doesn't have this attribute set to true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#focusableInTouchMode}. + @attr name android:focusableInTouchMode + */ + public static final int View_focusableInTouchMode = 19; + /** +

+ @attr description + Boolean that controls whether a view should have haptic feedback + enabled for events such as long presses. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#hapticFeedbackEnabled}. + @attr name android:hapticFeedbackEnabled + */ + public static final int View_hapticFeedbackEnabled = 39; + /** +

+ @attr description + Supply an identifier name for this view, to later retrieve it + with {@link android.view.View#findViewById View.findViewById()} or + {@link android.app.Activity#findViewById Activity.findViewById()}. + This must be a + resource reference; typically you set this using the + @+ syntax to create a new ID resources. + For example: android:id="@+id/my_id" which + allows you to later retrieve the view + with findViewById(R.id.my_id). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#id}. + @attr name android:id + */ + public static final int View_id = 8; + /** +

+ @attr description + Controls how this View is important for accessibility which is if it fires + accessibility events and if it is reported to accessibility services that + query the screen. Note: While not recommended, an accessibility service may + decide to ignore this attribute and operate on all views in the view tree. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
auto0 The system determines whether the view is important for accessibility - default + (recommended).
yes1 The view is important for accessibility.
no2 The view is not important for accessibility.
noHideDescendants4 The view is not important for accessibility, nor are any of its descendant + views.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#importantForAccessibility}. + @attr name android:importantForAccessibility + */ + public static final int View_importantForAccessibility = 61; + /** +

+ @attr description + Set this if the view will serve as a scrolling container, meaing + that it can be resized to shrink its overall window so that there + will be space for an input method. If not set, the default + value will be true if "scrollbars" has the vertical scrollbar + set, else it will be false. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#isScrollContainer}. + @attr name android:isScrollContainer + */ + public static final int View_isScrollContainer = 38; + /** +

+ @attr description + Controls whether the view's window should keep the screen on + while visible. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#keepScreenOn}. + @attr name android:keepScreenOn + */ + public static final int View_keepScreenOn = 37; + /** +

+ @attr description + Specifies the id of a view for which this view serves as a label for + accessibility purposes. For example, a TextView before an EditText in + the UI usually specifies what infomation is contained in the EditText. + Hence, the TextView is a label for the EditText. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#labelFor}. + @attr name android:labelFor + */ + public static final int View_labelFor = 67; + /** +

+ @attr description + Specifies the type of layer backing this view. The default value is none. + Refer to {@link android.view.View#setLayerType(int, android.graphics.Paint)} + for more information. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0 Don't use a layer.
software1 Use a software layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
hardware2 Use a hardware layer. Refer to + {@link android.view.View#setLayerType(int, android.graphics.Paint)} for + more information.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layerType}. + @attr name android:layerType + */ + public static final int View_layerType = 59; + /** +

+ @attr description + Defines the direction of layout drawing. This typically is associated with writing + direction of the language script used. The possible values are "ltr" for Left-to-Right, + "rtl" for Right-to-Left, "locale" and "inherit" from parent view. If there is nothing + to inherit, "locale" is used. "locale" falls back to "en-US". "ltr" is the direction + used in "en-US". The default for this attribute is "inherit". + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
ltr0 Left-to-Right
rtl1 Right-to-Left
inherit2 Inherit from parent
locale3 Locale
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutDirection}. + @attr name android:layoutDirection + */ + public static final int View_layoutDirection = 64; + /** +

+ @attr description + Defines whether this view reacts to long click events. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#longClickable}. + @attr name android:longClickable + */ + public static final int View_longClickable = 30; + /** +

+ @attr description + Defines the minimum height of the view. It is not guaranteed + the view will be able to achieve this minimum height (for example, + if its parent layout constrains it with less available height). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minHeight}. + @attr name android:minHeight + */ + public static final int View_minHeight = 35; + /** +

+ @attr description + Defines the minimum width of the view. It is not guaranteed + the view will be able to achieve this minimum width (for example, + if its parent layout constrains it with less available width). + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#minWidth}. + @attr name android:minWidth + */ + public static final int View_minWidth = 34; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_DOWN} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusDown}. + @attr name android:nextFocusDown + */ + public static final int View_nextFocusDown = 28; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_FORWARD} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusForward}. + @attr name android:nextFocusForward + */ + public static final int View_nextFocusForward = 58; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_LEFT}. + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusLeft}. + @attr name android:nextFocusLeft + */ + public static final int View_nextFocusLeft = 25; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_RIGHT} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusRight}. + @attr name android:nextFocusRight + */ + public static final int View_nextFocusRight = 26; + /** +

+ @attr description + Defines the next view to give focus to when the next focus is + {@link android.view.View#FOCUS_UP} + + If the reference refers to a view that does not exist or is part + of a hierarchy that is invisible, a {@link java.lang.RuntimeException} + will result when the reference is accessed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#nextFocusUp}. + @attr name android:nextFocusUp + */ + public static final int View_nextFocusUp = 27; + /** +

+ @attr description + Name of the method in this View's context to invoke when the view is + clicked. This name must correspond to a public method that takes + exactly one parameter of type View. For instance, if you specify + android:onClick="sayHello", you must declare a + public void sayHello(View v) method of your context + (typically, your Activity). + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#onClick}. + @attr name android:onClick + */ + public static final int View_onClick = 40; + /** +

+ @attr description + Defines over-scrolling behavior. This property is used only if the + View is scrollable. Over-scrolling is the ability for the user to + receive feedback when attempting to scroll beyond meaningful content. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
always0 Always show over-scroll effects, even if the content fits entirely + within the available space.
ifContentScrolls1 Only show over-scroll effects if the content is large + enough to meaningfully scroll.
never2 Never show over-scroll effects.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#overScrollMode}. + @attr name android:overScrollMode + */ + public static final int View_overScrollMode = 45; + /** +

+ @attr description + Sets the padding, in pixels, of all four edges. Padding is defined as + space between the edges of the view and the view's content. A views size + will include it's padding. If a {@link android.R.attr#background} + is provided, the padding will initially be set to that (0 if the + drawable does not have padding). Explicitly setting a padding value + will override the corresponding padding found in the background. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#padding}. + @attr name android:padding + */ + public static final int View_padding = 13; + /** +

+ @attr description + Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingBottom}. + @attr name android:paddingBottom + */ + public static final int View_paddingBottom = 17; + /** +

+ @attr description + Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingEnd}. + @attr name android:paddingEnd + */ + public static final int View_paddingEnd = 66; + /** +

+ @attr description + Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingLeft}. + @attr name android:paddingLeft + */ + public static final int View_paddingLeft = 14; + /** +

+ @attr description + Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingRight}. + @attr name android:paddingRight + */ + public static final int View_paddingRight = 16; + /** +

+ @attr description + Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingStart}. + @attr name android:paddingStart + */ + public static final int View_paddingStart = 65; + /** +

+ @attr description + Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#paddingTop}. + @attr name android:paddingTop + */ + public static final int View_paddingTop = 15; + /** +

+ @attr description + Defines which edges should be faded on scrolling. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No edge is faded.
horizontal0x00001000 Fades horizontal edges only.
vertical0x00002000 Fades vertical edges only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#requiresFadingEdge}. + @attr name android:requiresFadingEdge + */ + public static final int View_requiresFadingEdge = 60; + /** +

+ @attr description + rotation of the view, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotation}. + @attr name android:rotation + */ + public static final int View_rotation = 54; + /** +

+ @attr description + rotation of the view around the x axis, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotationX}. + @attr name android:rotationX + */ + public static final int View_rotationX = 55; + /** +

+ @attr description + rotation of the view around the y axis, in degrees. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#rotationY}. + @attr name android:rotationY + */ + public static final int View_rotationY = 56; + /** +

+ @attr description + If unset, no state will be saved for this view when it is being + frozen. The default is true, allowing the view to be saved + (however it also must have an ID assigned to it for its + state to be saved). Setting this to false only disables the + state for this view, not for its children which may still + be saved. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#saveEnabled}. + @attr name android:saveEnabled + */ + public static final int View_saveEnabled = 31; + /** +

+ @attr description + scale of the view in the x direction. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleX}. + @attr name android:scaleX + */ + public static final int View_scaleX = 52; + /** +

+ @attr description + scale of the view in the y direction. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scaleY}. + @attr name android:scaleY + */ + public static final int View_scaleY = 53; + /** +

+ @attr description + The initial horizontal scroll offset, in pixels. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollX}. + @attr name android:scrollX + */ + public static final int View_scrollX = 10; + /** +

+ @attr description + The initial vertical scroll offset, in pixels. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollY}. + @attr name android:scrollY + */ + public static final int View_scrollY = 11; + /** +

+ @attr description + Defines whether the horizontal scrollbar track should always be drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarAlwaysDrawHorizontalTrack}. + @attr name android:scrollbarAlwaysDrawHorizontalTrack + */ + public static final int View_scrollbarAlwaysDrawHorizontalTrack = 5; + /** +

+ @attr description + Defines whether the vertical scrollbar track should always be drawn. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarAlwaysDrawVerticalTrack}. + @attr name android:scrollbarAlwaysDrawVerticalTrack + */ + public static final int View_scrollbarAlwaysDrawVerticalTrack = 6; + /** +

+ @attr description + Defines the delay in milliseconds that a scrollbar waits before fade out. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarDefaultDelayBeforeFade}. + @attr name android:scrollbarDefaultDelayBeforeFade + */ + public static final int View_scrollbarDefaultDelayBeforeFade = 43; + /** +

+ @attr description + Defines the delay in milliseconds that a scrollbar takes to fade out. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarFadeDuration}. + @attr name android:scrollbarFadeDuration + */ + public static final int View_scrollbarFadeDuration = 42; + /** +

+ @attr description + Sets the width of vertical scrollbars and height of horizontal scrollbars. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarSize}. + @attr name android:scrollbarSize + */ + public static final int View_scrollbarSize = 0; + /** +

+ @attr description + Controls the scrollbar style and position. The scrollbars can be overlaid or + inset. When inset, they add to the padding of the view. And the + scrollbars can be drawn inside the padding area or on the edge of + the view. For example, if a view has a background drawable and you + want to draw the scrollbars inside the padding specified by the + drawable, you can use insideOverlay or insideInset. If you want them + to appear at the edge of the view, ignoring the padding, then you can + use outsideOverlay or outsideInset. + + +

Must be one of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
insideOverlay0x0 Inside the padding and overlaid
insideInset0x01000000 Inside the padding and inset
outsideOverlay0x02000000 Edge of the view and overlaid
outsideInset0x03000000 Edge of the view and inset
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarStyle}. + @attr name android:scrollbarStyle + */ + public static final int View_scrollbarStyle = 7; + /** +

+ @attr description + Defines the horizontal scrollbar thumb drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarThumbHorizontal}. + @attr name android:scrollbarThumbHorizontal + */ + public static final int View_scrollbarThumbHorizontal = 1; + /** +

+ @attr description + Defines the vertical scrollbar thumb drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarThumbVertical}. + @attr name android:scrollbarThumbVertical + */ + public static final int View_scrollbarThumbVertical = 2; + /** +

+ @attr description + Defines the horizontal scrollbar track drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarTrackHorizontal}. + @attr name android:scrollbarTrackHorizontal + */ + public static final int View_scrollbarTrackHorizontal = 3; + /** +

+ @attr description + Defines the vertical scrollbar track drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbarTrackVertical}. + @attr name android:scrollbarTrackVertical + */ + public static final int View_scrollbarTrackVertical = 4; + /** +

+ @attr description + Defines which scrollbars should be displayed on scrolling or not. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + +
ConstantValueDescription
none0x00000000 No scrollbar is displayed.
horizontal0x00000100 Displays horizontal scrollbar only.
vertical0x00000200 Displays vertical scrollbar only.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#scrollbars}. + @attr name android:scrollbars + */ + public static final int View_scrollbars = 22; + /** +

+ @attr description + Boolean that controls whether a view should have sound effects + enabled for events such as clicking and touching. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#soundEffectsEnabled}. + @attr name android:soundEffectsEnabled + */ + public static final int View_soundEffectsEnabled = 36; + /** +

+ @attr description + Supply a tag for this view containing a String, to be retrieved + later with {@link android.view.View#getTag View.getTag()} or + searched for with {@link android.view.View#findViewWithTag + View.findViewWithTag()}. It is generally preferable to use + IDs (through the android:id attribute) instead of tags because + they are faster and allow for compile-time type checking. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#tag}. + @attr name android:tag + */ + public static final int View_tag = 9; + /** +

+ @attr description + Defines the alignment of the text. A heuristic is used to determine the resolved + text alignment. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + + +
ConstantValueDescription
inherit0 Default
gravity1 Default for the root view. The gravity determines the alignment, ALIGN_NORMAL, + ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s + text direction
textStart2 Align to the start of the paragraph, e.g. ALIGN_NORMAL.
textEnd3 Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.
center4 Center the paragraph, e.g. ALIGN_CENTER.
viewStart5 Align to the start of the view, which is ALIGN_LEFT if the view’s resolved + layoutDirection is LTR, and ALIGN_RIGHT otherwise.
viewEnd6 Align to the end of the view, which is ALIGN_RIGHT if the view’s resolved + layoutDirection is LTR, and ALIGN_LEFT otherwise
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textAlignment}. + @attr name android:textAlignment + */ + public static final int View_textAlignment = 63; + /** +

+ @attr description + Defines the direction of the text. A heuristic is used to determine the resolved text + direction of paragraphs. + + +

May be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + + + + +
ConstantValueDescription
inherit0 Default
firstStrong1 Default for the root view. The first strong directional character determines the + paragraph direction. If there is no strong directional character, the paragraph + direction is the view’s resolved layout direction.
anyRtl2 The paragraph direction is RTL if it contains any strong RTL character, otherwise + it is LTR if it contains any strong LTR characters. If there are neither, the + paragraph direction is the view’s resolved layout direction.
ltr3 The paragraph direction is left to right.
rtl4 The paragraph direction is right to left.
locale5 The paragraph direction is coming from the system Locale.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#textDirection}. + @attr name android:textDirection + */ + public static final int View_textDirection = 62; + /** +

+ @attr description + x location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotX property of the View. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transformPivotX}. + @attr name android:transformPivotX + */ + public static final int View_transformPivotX = 48; + /** +

+ @attr description + y location of the pivot point around which the view will rotate and scale. + This xml attribute sets the pivotY property of the View. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#transformPivotY}. + @attr name android:transformPivotY + */ + public static final int View_transformPivotY = 49; + /** +

+ @attr description + translation in x of the view. This value is added post-layout to the left + property of the view, which is set by its layout. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#translationX}. + @attr name android:translationX + */ + public static final int View_translationX = 50; + /** +

+ @attr description + translation in y of the view. This value is added post-layout to the left + property of the view, which is set by its layout. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#translationY}. + @attr name android:translationY + */ + public static final int View_translationY = 51; + /** +

+ @attr description + Determines which side the vertical scroll bar should be placed on. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
defaultPosition0 Place the scroll bar wherever the system default determines.
left1 Place the scroll bar on the left.
right2 Place the scroll bar on the right.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#verticalScrollbarPosition}. + @attr name android:verticalScrollbarPosition + */ + public static final int View_verticalScrollbarPosition = 57; + /** +

+ @attr description + Controls the initial visibility of the view. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
visible0 Visible on screen; the default value.
invisible1 Not displayed, but taken into account during layout (space is left for it).
gone2 Completely hidden, as if the view had not been added.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#visibility}. + @attr name android:visibility + */ + public static final int View_visibility = 20; + /** Attributes that can be used with a ViewAnimator. +

Includes the following attributes:

+ + + + + + + +
AttributeDescription
{@link #ViewAnimator_animateFirstView android:animateFirstView} Defines whether to animate the current View when the ViewAnimation + is first displayed.
{@link #ViewAnimator_inAnimation android:inAnimation} Identifier for the animation to use when a view is shown.
{@link #ViewAnimator_outAnimation android:outAnimation} Identifier for the animation to use when a view is hidden.
+ @see #ViewAnimator_animateFirstView + @see #ViewAnimator_inAnimation + @see #ViewAnimator_outAnimation + */ + public static final int[] ViewAnimator = { + 0x01010177, 0x01010178, 0x010102d5 + }; + /** +

+ @attr description + Defines whether to animate the current View when the ViewAnimation + is first displayed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateFirstView}. + @attr name android:animateFirstView + */ + public static final int ViewAnimator_animateFirstView = 2; + /** +

+ @attr description + Identifier for the animation to use when a view is shown. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inAnimation}. + @attr name android:inAnimation + */ + public static final int ViewAnimator_inAnimation = 0; + /** +

+ @attr description + Identifier for the animation to use when a view is hidden. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#outAnimation}. + @attr name android:outAnimation + */ + public static final int ViewAnimator_outAnimation = 1; + /** Attributes that can be used with a ViewDrawableStates. +

Includes the following attributes:

+ + + + + + + + + + + + + + +
AttributeDescription
{@link #ViewDrawableStates_state_accelerated android:state_accelerated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated.
{@link #ViewDrawableStates_state_activated android:state_activated} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest.
{@link #ViewDrawableStates_state_drag_can_accept android:state_drag_can_accept} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation.
{@link #ViewDrawableStates_state_drag_hovered android:state_drag_hovered} State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable.
{@link #ViewDrawableStates_state_enabled android:state_enabled} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled.
{@link #ViewDrawableStates_state_focused android:state_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus.
{@link #ViewDrawableStates_state_hovered android:state_hovered} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view.
{@link #ViewDrawableStates_state_pressed android:state_pressed} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view.
{@link #ViewDrawableStates_state_selected android:state_selected} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected.
{@link #ViewDrawableStates_state_window_focused android:state_window_focused} State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus.
+ @see #ViewDrawableStates_state_accelerated + @see #ViewDrawableStates_state_activated + @see #ViewDrawableStates_state_drag_can_accept + @see #ViewDrawableStates_state_drag_hovered + @see #ViewDrawableStates_state_enabled + @see #ViewDrawableStates_state_focused + @see #ViewDrawableStates_state_hovered + @see #ViewDrawableStates_state_pressed + @see #ViewDrawableStates_state_selected + @see #ViewDrawableStates_state_window_focused + */ + public static final int[] ViewDrawableStates = { + 0x0101009c, 0x0101009d, 0x0101009e, 0x010100a1, + 0x010100a7, 0x010102fe, 0x0101031b, 0x01010367, + 0x01010368, 0x01010369 + }; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + indicating that the Drawable is in a view that is hardware accelerated. + This means that the device can at least render a full-screen scaled + bitmap with one layer of text and bitmaps composited on top of it + at 60fps. When this is set, the colorBackgroundCacheHint will be + ignored even if it specifies a solid color, since that optimization + is not needed. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_accelerated}. + @attr name android:state_accelerated + */ + public static final int ViewDrawableStates_state_accelerated = 6; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view or its parent has been "activated" meaning the user has currently + marked it as being of interest. This is an alternative representation of + state_checked for when the state should be propagated down the view hierarchy. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_activated}. + @attr name android:state_activated + */ + public static final int ViewDrawableStates_state_activated = 5; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that the Drawable is in a view that is capable of accepting a drop of + the content currently being manipulated in a drag-and-drop operation. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_can_accept}. + @attr name android:state_drag_can_accept + */ + public static final int ViewDrawableStates_state_drag_can_accept = 8; + /** +

+ @attr description + State for {@link android.graphics.drawable.StateListDrawable StateListDrawable} + indicating that a drag operation (for which the Drawable's view is a valid recipient) + is currently positioned over the Drawable. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_drag_hovered}. + @attr name android:state_drag_hovered + */ + public static final int ViewDrawableStates_state_drag_hovered = 9; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view is enabled. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_enabled}. + @attr name android:state_enabled + */ + public static final int ViewDrawableStates_state_enabled = 2; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_focused}. + @attr name android:state_focused + */ + public static final int ViewDrawableStates_state_focused = 0; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a pointer is hovering over the view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_hovered}. + @attr name android:state_hovered + */ + public static final int ViewDrawableStates_state_hovered = 7; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when the user is pressing down in a view. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_pressed}. + @attr name android:state_pressed + */ + public static final int ViewDrawableStates_state_pressed = 4; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view (or one of its parents) is currently selected. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_selected}. + @attr name android:state_selected + */ + public static final int ViewDrawableStates_state_selected = 3; + /** +

+ @attr description + State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}, + set when a view's window has input focus. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#state_window_focused}. + @attr name android:state_window_focused + */ + public static final int ViewDrawableStates_state_window_focused = 1; + /** Attributes that can be used with a ViewFlipper. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewFlipper_autoStart android:autoStart} When true, automatically start animating
{@link #ViewFlipper_flipInterval android:flipInterval}
+ @see #ViewFlipper_autoStart + @see #ViewFlipper_flipInterval + */ + public static final int[] ViewFlipper = { + 0x01010179, 0x010102b5 + }; + /** +

+ @attr description + When true, automatically start animating + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#autoStart}. + @attr name android:autoStart + */ + public static final int ViewFlipper_autoStart = 1; + /** +

This symbol is the offset where the {@link android.R.attr#flipInterval} + attribute's value can be found in the {@link #ViewFlipper} array. + + +

Must be an integer value, such as "100". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name android:flipInterval + */ + public static final int ViewFlipper_flipInterval = 0; + /** Attributes that can be used with a {@link android.view.ViewGroup} or any + of its subclasses. Also see {@link #ViewGroup_Layout} for + attributes that this class processes in its children. +

Includes the following attributes:

+ + + + + + + + + + + + + + + +
AttributeDescription
{@link #ViewGroup_addStatesFromChildren android:addStatesFromChildren} Sets whether this ViewGroup's drawable states also include + its children's drawable states.
{@link #ViewGroup_alwaysDrawnWithCache android:alwaysDrawnWithCache} Defines whether the ViewGroup should always draw its children using their + drawing cache or not.
{@link #ViewGroup_animateLayoutChanges android:animateLayoutChanges} Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run.
{@link #ViewGroup_animationCache android:animationCache} Defines whether layout animations should create a drawing cache for their + children.
{@link #ViewGroup_clipChildren android:clipChildren} Defines whether a child is limited to draw inside of its bounds or not.
{@link #ViewGroup_clipToPadding android:clipToPadding} Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area.
{@link #ViewGroup_descendantFocusability android:descendantFocusability} Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus.
{@link #ViewGroup_layoutAnimation android:layoutAnimation} Defines the layout animation to use the first time the ViewGroup is laid out.
{@link #ViewGroup_layoutMode android:layoutMode} Defines the layout mode of this ViewGroup.
{@link #ViewGroup_persistentDrawingCache android:persistentDrawingCache} Defines the persistence of the drawing cache.
{@link #ViewGroup_splitMotionEvents android:splitMotionEvents} Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch.
+ @see #ViewGroup_addStatesFromChildren + @see #ViewGroup_alwaysDrawnWithCache + @see #ViewGroup_animateLayoutChanges + @see #ViewGroup_animationCache + @see #ViewGroup_clipChildren + @see #ViewGroup_clipToPadding + @see #ViewGroup_descendantFocusability + @see #ViewGroup_layoutAnimation + @see #ViewGroup_layoutMode + @see #ViewGroup_persistentDrawingCache + @see #ViewGroup_splitMotionEvents + */ + public static final int[] ViewGroup = { + 0x010100ea, 0x010100eb, 0x010100ec, 0x010100ed, + 0x010100ee, 0x010100ef, 0x010100f0, 0x010100f1, + 0x010102ef, 0x010102f2, 0x010103da + }; + /** +

+ @attr description + Sets whether this ViewGroup's drawable states also include + its children's drawable states. This is used, for example, to + make a group appear to be focused when its child EditText or button + is focused. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#addStatesFromChildren}. + @attr name android:addStatesFromChildren + */ + public static final int ViewGroup_addStatesFromChildren = 6; + /** +

+ @attr description + Defines whether the ViewGroup should always draw its children using their + drawing cache or not. The default value is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#alwaysDrawnWithCache}. + @attr name android:alwaysDrawnWithCache + */ + public static final int ViewGroup_alwaysDrawnWithCache = 5; + /** +

+ @attr description + Defines whether changes in layout (caused by adding and removing items) should + cause a LayoutTransition to run. When this flag is set to true, a default + LayoutTransition object will be set on the ViewGroup container and default + animations will run when these layout changes occur. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animateLayoutChanges}. + @attr name android:animateLayoutChanges + */ + public static final int ViewGroup_animateLayoutChanges = 9; + /** +

+ @attr description + Defines whether layout animations should create a drawing cache for their + children. Enabling the animation cache consumes more memory and requires + a longer initialization but provides better performance. The animation + cache is enabled by default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#animationCache}. + @attr name android:animationCache + */ + public static final int ViewGroup_animationCache = 3; + /** +

+ @attr description + Defines whether a child is limited to draw inside of its bounds or not. + This is useful with animations that scale the size of the children to more + than 100% for instance. In such a case, this property should be set to false + to allow the children to draw outside of their bounds. The default value of + this property is true. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipChildren}. + @attr name android:clipChildren + */ + public static final int ViewGroup_clipChildren = 0; + /** +

+ @attr description + Defines whether the ViewGroup will clip its drawing surface so as to exclude + the padding area. This property is set to true by default. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#clipToPadding}. + @attr name android:clipToPadding + */ + public static final int ViewGroup_clipToPadding = 1; + /** +

+ @attr description + Defines the relationship between the ViewGroup and its descendants + when looking for a View to take focus. + + +

Must be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
beforeDescendants0 The ViewGroup will get focus before any of its descendants.
afterDescendants1 The ViewGroup will get focus only if none of its descendants want it.
blocksDescendants2 The ViewGroup will block its descendants from receiving focus.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#descendantFocusability}. + @attr name android:descendantFocusability + */ + public static final int ViewGroup_descendantFocusability = 7; + /** +

+ @attr description + Defines the layout animation to use the first time the ViewGroup is laid out. + Layout animations can also be started manually after the first layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutAnimation}. + @attr name android:layoutAnimation + */ + public static final int ViewGroup_layoutAnimation = 2; + /** +

+ @attr description + Defines the layout mode of this ViewGroup. + + +

Must be one of the following constant values.

+ ++++ + + +
ConstantValueDescription
clipBounds0 Use the children's clip bounds when laying out this container.
opticalBounds1 Use the children's optical bounds when laying out this container.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layoutMode}. + @attr name android:layoutMode + */ + public static final int ViewGroup_layoutMode = 10; + /** +

+ @attr description + Defines the persistence of the drawing cache. The drawing cache might be + enabled by a ViewGroup for all its children in specific situations (for + instance during a scrolling.) This property lets you persist the cache + in memory after its initial usage. Persisting the cache consumes more + memory but may prevent frequent garbage collection is the cache is created + over and over again. By default the persistence is set to scrolling. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + +
ConstantValueDescription
none0x0 The drawing cache is not persisted after use.
animation0x1 The drawing cache is persisted after a layout animation.
scrolling0x2 The drawing cache is persisted after a scroll.
all0x3 The drawing cache is always persisted.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#persistentDrawingCache}. + @attr name android:persistentDrawingCache + */ + public static final int ViewGroup_persistentDrawingCache = 4; + /** +

+ @attr description + Sets whether this ViewGroup should split MotionEvents + to separate child views during touch event dispatch. + If false (default), touch events will be dispatched to + the child view where the first pointer went down until + the last pointer goes up. + If true, touch events may be dispatched to multiple children. + MotionEvents for each pointer will be dispatched to the child + view where the initial ACTION_DOWN event happened. + See {@link android.view.ViewGroup#setMotionEventSplittingEnabled(boolean)} + for more information. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#splitMotionEvents}. + @attr name android:splitMotionEvents + */ + public static final int ViewGroup_splitMotionEvents = 8; + /** This is the basic set of layout attributes that are common to all + layout managers. These attributes are specified with the rest of + a view's normal attributes (such as {@link android.R.attr#background}, + but will be parsed by the view's parent and ignored by the child. +

The values defined here correspond to the base layout attribute + class {@link android.view.ViewGroup.LayoutParams}. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewGroup_Layout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #ViewGroup_Layout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #ViewGroup_Layout_layout_height + @see #ViewGroup_Layout_layout_width + */ + public static final int[] ViewGroup_Layout = { + 0x010100f4, 0x010100f5 + }; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int ViewGroup_Layout_layout_height = 1; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int ViewGroup_Layout_layout_width = 0; + /** This is the basic set of layout attributes for layout managers that + wish to place margins around their child views. + These attributes are specified with the rest of + a view's normal attributes (such as {@link android.R.attr#background}, + but will be parsed by the view's parent and ignored by the child. +

The values defined here correspond to the base layout attribute + class {@link android.view.ViewGroup.MarginLayoutParams}. +

Includes the following attributes:

+ + + + + + + + + + + + + +
AttributeDescription
{@link #ViewGroup_MarginLayout_layout_height android:layout_height} Specifies the basic height of the view.
{@link #ViewGroup_MarginLayout_layout_margin android:layout_margin} Specifies extra space on the left, top, right and bottom + sides of this view.
{@link #ViewGroup_MarginLayout_layout_marginBottom android:layout_marginBottom} Specifies extra space on the bottom side of this view.
{@link #ViewGroup_MarginLayout_layout_marginEnd android:layout_marginEnd} Specifies extra space on the end side of this view.
{@link #ViewGroup_MarginLayout_layout_marginLeft android:layout_marginLeft} Specifies extra space on the left side of this view.
{@link #ViewGroup_MarginLayout_layout_marginRight android:layout_marginRight} Specifies extra space on the right side of this view.
{@link #ViewGroup_MarginLayout_layout_marginStart android:layout_marginStart} Specifies extra space on the start side of this view.
{@link #ViewGroup_MarginLayout_layout_marginTop android:layout_marginTop} Specifies extra space on the top side of this view.
{@link #ViewGroup_MarginLayout_layout_width android:layout_width} Specifies the basic width of the view.
+ @see #ViewGroup_MarginLayout_layout_height + @see #ViewGroup_MarginLayout_layout_margin + @see #ViewGroup_MarginLayout_layout_marginBottom + @see #ViewGroup_MarginLayout_layout_marginEnd + @see #ViewGroup_MarginLayout_layout_marginLeft + @see #ViewGroup_MarginLayout_layout_marginRight + @see #ViewGroup_MarginLayout_layout_marginStart + @see #ViewGroup_MarginLayout_layout_marginTop + @see #ViewGroup_MarginLayout_layout_width + */ + public static final int[] ViewGroup_MarginLayout = { + 0x010100f4, 0x010100f5, 0x010100f6, 0x010100f7, + 0x010100f8, 0x010100f9, 0x010100fa, 0x010103b5, + 0x010103b6 + }; + /** +

+ @attr description + Specifies the basic height of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant height or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_height}. + @attr name android:layout_height + */ + public static final int ViewGroup_MarginLayout_layout_height = 1; + /** +

+ @attr description + Specifies extra space on the left, top, right and bottom + sides of this view. This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_margin}. + @attr name android:layout_margin + */ + public static final int ViewGroup_MarginLayout_layout_margin = 2; + /** +

+ @attr description + Specifies extra space on the bottom side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginBottom}. + @attr name android:layout_marginBottom + */ + public static final int ViewGroup_MarginLayout_layout_marginBottom = 6; + /** +

+ @attr description + Specifies extra space on the end side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginEnd}. + @attr name android:layout_marginEnd + */ + public static final int ViewGroup_MarginLayout_layout_marginEnd = 8; + /** +

+ @attr description + Specifies extra space on the left side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginLeft}. + @attr name android:layout_marginLeft + */ + public static final int ViewGroup_MarginLayout_layout_marginLeft = 3; + /** +

+ @attr description + Specifies extra space on the right side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginRight}. + @attr name android:layout_marginRight + */ + public static final int ViewGroup_MarginLayout_layout_marginRight = 5; + /** +

+ @attr description + Specifies extra space on the start side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginStart}. + @attr name android:layout_marginStart + */ + public static final int ViewGroup_MarginLayout_layout_marginStart = 7; + /** +

+ @attr description + Specifies extra space on the top side of this view. + This space is outside this view's bounds. + + +

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_marginTop}. + @attr name android:layout_marginTop + */ + public static final int ViewGroup_MarginLayout_layout_marginTop = 4; + /** +

+ @attr description + Specifies the basic width of the view. This is a required attribute + for any view inside of a containing layout manager. Its value may + be a dimension (such as "12dip") for a constant width or one of + the special constants. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

May be one of the following constant values.

+ ++++ + + + +
ConstantValueDescription
fill_parent-1 The view should be as big as its parent (minus padding). + This constant is deprecated starting from API Level 8 and + is replaced by {@code match_parent}.
match_parent-1 The view should be as big as its parent (minus padding). + Introduced in API Level 8.
wrap_content-2 The view should be only big enough to enclose its content (plus padding).
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout_width}. + @attr name android:layout_width + */ + public static final int ViewGroup_MarginLayout_layout_width = 0; + /** A {@link android.view.ViewStub} lets you lazily include other XML layouts + inside your application at runtime. +

Includes the following attributes:

+ + + + + + +
AttributeDescription
{@link #ViewStub_inflatedId android:inflatedId} Overrides the id of the inflated View with this value.
{@link #ViewStub_layout android:layout} Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so.
+ @see #ViewStub_inflatedId + @see #ViewStub_layout + */ + public static final int[] ViewStub = { + 0x010100f2, 0x010100f3 + }; + /** +

+ @attr description + Overrides the id of the inflated View with this value. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#inflatedId}. + @attr name android:inflatedId + */ + public static final int ViewStub_inflatedId = 1; + /** +

+ @attr description + Supply an identifier for the layout resource to inflate when the ViewStub + becomes visible or when forced to do so. The layout resource must be a + valid reference to a layout. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#layout}. + @attr name android:layout + */ + public static final int ViewStub_layout = 0; + /** Attributes that can be used with a ViewSwitcher. + */ + public static final int[] ViewSwitcher = { + + }; + /** Base attributes available to VolumePreference. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #VolumePreference_streamType android:streamType} Different audio stream types.
+ @see #VolumePreference_streamType + */ + public static final int[] VolumePreference = { + 0x01010209 + }; + /** +

+ @attr description + Different audio stream types. + + +

Must be one of the following constant values.

+ ++++ + + + + + +
ConstantValueDescription
voice0
system1
ring2
music3
alarm4
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#streamType}. + @attr name android:streamType + */ + public static final int VolumePreference_streamType = 0; + /** Use wallpaper as the root tag of the XML resource that + describes an + {@link android.service.wallpaper.WallpaperService}, which is + referenced from its + {@link android.service.wallpaper.WallpaperService#SERVICE_META_DATA} + meta-data entry. Described here are the attributes that can be + included in that tag. +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #Wallpaper_author android:author} Name of the author of this component, e.
{@link #Wallpaper_description android:description} Short description of the component's purpose or behavior.
{@link #Wallpaper_settingsActivity android:settingsActivity} Component name of an activity that allows the user to modify + the settings for this service.
{@link #Wallpaper_thumbnail android:thumbnail} Reference to a the wallpaper's thumbnail bitmap.
+ @see #Wallpaper_author + @see #Wallpaper_description + @see #Wallpaper_settingsActivity + @see #Wallpaper_thumbnail + */ + public static final int[] Wallpaper = { + 0x01010020, 0x01010225, 0x010102a5, 0x010102b4 + }; + /** +

+ @attr description + Name of the author of this component, e.g. Google. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#author}. + @attr name android:author + */ + public static final int Wallpaper_author = 3; + /** +

+ @attr description + Short description of the component's purpose or behavior. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#description}. + @attr name android:description + */ + public static final int Wallpaper_description = 0; + /** +

+ @attr description + Component name of an activity that allows the user to modify + the settings for this service. + + +

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#settingsActivity}. + @attr name android:settingsActivity + */ + public static final int Wallpaper_settingsActivity = 1; + /** +

+ @attr description + Reference to a the wallpaper's thumbnail bitmap. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#thumbnail}. + @attr name android:thumbnail + */ + public static final int Wallpaper_thumbnail = 2; + /** Use wallpaper-preview as the root tag of the XML resource that + describes a wallpaper preview. +

Includes the following attributes:

+ + + + + +
AttributeDescription
{@link #WallpaperPreviewInfo_staticWallpaperPreview android:staticWallpaperPreview} A resource id of a static drawable.
+ @see #WallpaperPreviewInfo_staticWallpaperPreview + */ + public static final int[] WallpaperPreviewInfo = { + 0x01010331 + }; + /** +

+ @attr description + A resource id of a static drawable. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#staticWallpaperPreview}. + @attr name android:staticWallpaperPreview + */ + public static final int WallpaperPreviewInfo_staticWallpaperPreview = 0; + /** @hide +

Includes the following attributes:

+ + + + + + + + +
AttributeDescription
{@link #WeightedLinearLayout_majorWeightMax android:majorWeightMax}
{@link #WeightedLinearLayout_majorWeightMin android:majorWeightMin}
{@link #WeightedLinearLayout_minorWeightMax android:minorWeightMax}
{@link #WeightedLinearLayout_minorWeightMin android:minorWeightMin}
+ @see #WeightedLinearLayout_majorWeightMax + @see #WeightedLinearLayout_majorWeightMin + @see #WeightedLinearLayout_minorWeightMax + @see #WeightedLinearLayout_minorWeightMin + */ + public static final int[] WeightedLinearLayout = { + 0x0101043e, 0x0101043f, 0x01010440, 0x01010441 + }; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#majorWeightMax} + attribute's value can be found in the {@link #WeightedLinearLayout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:majorWeightMax + */ + public static final int WeightedLinearLayout_majorWeightMax = 2; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#majorWeightMin} + attribute's value can be found in the {@link #WeightedLinearLayout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:majorWeightMin + */ + public static final int WeightedLinearLayout_majorWeightMin = 0; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#minorWeightMax} + attribute's value can be found in the {@link #WeightedLinearLayout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:minorWeightMax + */ + public static final int WeightedLinearLayout_minorWeightMax = 3; + /** +

This symbol is the offset where the {@link com.android.internal.R.attr#minorWeightMin} + attribute's value can be found in the {@link #WeightedLinearLayout} array. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. + @attr name com.android.internal:minorWeightMin + */ + public static final int WeightedLinearLayout_minorWeightMin = 1; + /** The set of attributes that describe a Windows's theme. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #Window_backgroundDimAmount android:backgroundDimAmount} Default background dim amount when a menu, dialog, or something similar pops up.
{@link #Window_backgroundDimEnabled android:backgroundDimEnabled} Control whether dimming behind the window is enabled.
{@link #Window_textColor android:textColor} Color of text (usually same as colorForeground).
{@link #Window_windowActionBar android:windowActionBar} Flag indicating whether this window should have an Action Bar + in place of the usual title bar.
{@link #Window_windowActionBarOverlay android:windowActionBarOverlay} Flag indicating whether this window's Action Bar should overlay + application content.
{@link #Window_windowActionModeOverlay android:windowActionModeOverlay} Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar).
{@link #Window_windowAnimationStyle android:windowAnimationStyle} Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}.
{@link #Window_windowBackground android:windowBackground} Drawable to use as the overall window background.
{@link #Window_windowCloseOnTouchOutside android:windowCloseOnTouchOutside} Control whether a container should automatically close itself if + the user touches outside of it.
{@link #Window_windowContentOverlay android:windowContentOverlay} This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title.
{@link #Window_windowDisablePreview android:windowDisablePreview} Flag allowing you to disable the preview animation for a window.
{@link #Window_windowEnableSplitTouch android:windowEnableSplitTouch} Flag indicating that this window should allow touches to be split + across other windows that also support split touch.
{@link #Window_windowFixedHeightMajor android:windowFixedHeightMajor} A fixed height for the window along the major axis of the screen, + that is, when in portrait.
{@link #Window_windowFixedHeightMinor android:windowFixedHeightMinor} A fixed height for the window along the minor axis of the screen, + that is, when in landscape.
{@link #Window_windowFixedWidthMajor android:windowFixedWidthMajor} A fixed width for the window along the major axis of the screen, + that is, when in landscape.
{@link #Window_windowFixedWidthMinor android:windowFixedWidthMinor} A fixed width for the window along the minor axis of the screen, + that is, when in portrait.
{@link #Window_windowFrame android:windowFrame} Drawable to use as a frame around the window.
{@link #Window_windowFullscreen android:windowFullscreen} Flag indicating whether this window should fill the entire screen.
{@link #Window_windowIsFloating android:windowIsFloating} Flag indicating whether this is a floating window.
{@link #Window_windowIsTranslucent android:windowIsTranslucent} Flag indicating whether this is a translucent window.
{@link #Window_windowMinWidthMajor android:windowMinWidthMajor} The minimum width the window is allowed to be, along the major + axis of the screen.
{@link #Window_windowMinWidthMinor android:windowMinWidthMinor} The minimum width the window is allowed to be, along the minor + axis of the screen.
{@link #Window_windowNoDisplay android:windowNoDisplay} Flag indicating that this window should not be displayed at all.
{@link #Window_windowNoTitle android:windowNoTitle} Flag indicating whether there should be no title on this window.
{@link #Window_windowOverscan android:windowOverscan} Flag indicating whether this window should extend into overscan region.
{@link #Window_windowShowWallpaper android:windowShowWallpaper} Flag indicating that this window's background should be the + user's current wallpaper.
{@link #Window_windowSoftInputMode android:windowSoftInputMode} Defines the default soft input state that this window would + like when it is displayed.
{@link #Window_windowSplitActionBar android:windowSplitActionBar} Flag indicating that the action bar should be split to provide more + room for elements.
{@link #Window_windowTranslucentNavigation android:windowTranslucentNavigation} Flag indicating whether this window requests a translucent navigation bar.
{@link #Window_windowTranslucentStatus android:windowTranslucentStatus} Flag indicating whether this window requests a translucent status bar.
+ @see #Window_backgroundDimAmount + @see #Window_backgroundDimEnabled + @see #Window_textColor + @see #Window_windowActionBar + @see #Window_windowActionBarOverlay + @see #Window_windowActionModeOverlay + @see #Window_windowAnimationStyle + @see #Window_windowBackground + @see #Window_windowCloseOnTouchOutside + @see #Window_windowContentOverlay + @see #Window_windowDisablePreview + @see #Window_windowEnableSplitTouch + @see #Window_windowFixedHeightMajor + @see #Window_windowFixedHeightMinor + @see #Window_windowFixedWidthMajor + @see #Window_windowFixedWidthMinor + @see #Window_windowFrame + @see #Window_windowFullscreen + @see #Window_windowIsFloating + @see #Window_windowIsTranslucent + @see #Window_windowMinWidthMajor + @see #Window_windowMinWidthMinor + @see #Window_windowNoDisplay + @see #Window_windowNoTitle + @see #Window_windowOverscan + @see #Window_windowShowWallpaper + @see #Window_windowSoftInputMode + @see #Window_windowSplitActionBar + @see #Window_windowTranslucentNavigation + @see #Window_windowTranslucentStatus + */ + public static final int[] Window = { + 0x01010032, 0x01010054, 0x01010055, 0x01010056, + 0x01010057, 0x01010058, 0x01010059, 0x01010098, + 0x010100ae, 0x0101020d, 0x0101021e, 0x0101021f, + 0x01010222, 0x0101022b, 0x01010292, 0x010102cd, + 0x010102dd, 0x010102e4, 0x01010317, 0x01010356, + 0x01010357, 0x0101035b, 0x010103cf, 0x010103ef, + 0x010103f0, 0x010103fa, 0x01010424, 0x01010425, + 0x01010426, 0x01010427 + }; + /** +

+ @attr description + Default background dim amount when a menu, dialog, or something similar pops up. + + +

Must be a floating point value, such as "1.2". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimAmount}. + @attr name android:backgroundDimAmount + */ + public static final int Window_backgroundDimAmount = 0; + /** +

+ @attr description + Control whether dimming behind the window is enabled. The default + theme does not set this value, meaning it is based on whether the + window is floating. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#backgroundDimEnabled}. + @attr name android:backgroundDimEnabled + */ + public static final int Window_backgroundDimEnabled = 11; + /** +

+ @attr description + Color of text (usually same as colorForeground). + + +

May be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

May be a color value, in the form of "#rgb", "#argb", +"#rrggbb", or "#aarrggbb". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#textColor}. + @attr name android:textColor + */ + public static final int Window_textColor = 7; + /** +

+ @attr description + Flag indicating whether this window should have an Action Bar + in place of the usual title bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBar}. + @attr name android:windowActionBar + */ + public static final int Window_windowActionBar = 15; + /** +

+ @attr description + Flag indicating whether this window's Action Bar should overlay + application content. Does nothing if the window would not + have an Action Bar. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionBarOverlay}. + @attr name android:windowActionBarOverlay + */ + public static final int Window_windowActionBarOverlay = 17; + /** +

+ @attr description + Flag indicating whether action modes should overlay window content + when there is not reserved space for their UI (such as an Action Bar). + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowActionModeOverlay}. + @attr name android:windowActionModeOverlay + */ + public static final int Window_windowActionModeOverlay = 16; + /** +

+ @attr description + Reference to a style resource holding + the set of window animations to use, which can be + any of the attributes defined by + {@link android.R.styleable#WindowAnimation}. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowAnimationStyle}. + @attr name android:windowAnimationStyle + */ + public static final int Window_windowAnimationStyle = 8; + /** +

+ @attr description + Drawable to use as the overall window background. As of + {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may + be a selector that uses state_accelerated to pick a non-solid + color when running on devices that can draw such a bitmap + with complex compositing on top at 60fps. + +

There are a few special considerations to use when setting this + drawable: +

    +
  • This information will be used to infer the pixel format + for your window's surface. If the drawable has any + non-opaque pixels, your window will be translucent + (32 bpp). +
  • If you want to draw the entire background + yourself, you should set this drawable to some solid + color that closely matches that background (so the + system's preview of your window will match), and + then in code manually set your window's background to + null so it will not be drawn. +
+ + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowBackground}. + @attr name android:windowBackground + */ + public static final int Window_windowBackground = 1; + /** +

+ @attr description + Control whether a container should automatically close itself if + the user touches outside of it. This only applies to activities + and dialogs. + +

Note: this attribute will only be respected for applications + that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB} + or later. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowCloseOnTouchOutside}. + @attr name android:windowCloseOnTouchOutside + */ + public static final int Window_windowCloseOnTouchOutside = 21; + /** +

+ @attr description + This Drawable is overlaid over the foreground of the Window's content area, usually + to place a shadow below the title. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowContentOverlay}. + @attr name android:windowContentOverlay + */ + public static final int Window_windowContentOverlay = 6; + /** +

+ @attr description + Flag allowing you to disable the preview animation for a window. + The default value is false; if set to true, the system can never + use the window's theme to show a preview of it before your + actual instance is shown to the user. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowDisablePreview}. + @attr name android:windowDisablePreview + */ + public static final int Window_windowDisablePreview = 12; + /** +

+ @attr description + Flag indicating that this window should allow touches to be split + across other windows that also support split touch. + The default value is true for applications with a targetSdkVersion + of Honeycomb or newer; false otherwise. + When this flag is false, the first pointer that goes down determines + the window to which all subsequent touches go until all pointers go up. + When this flag is true, each pointer (not necessarily the first) that + goes down determines the window to which all subsequent touches of that + pointer will go until that pointers go up thereby enabling touches + with multiple pointers to be split across multiple windows. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnableSplitTouch}. + @attr name android:windowEnableSplitTouch + */ + public static final int Window_windowEnableSplitTouch = 18; + /** +

+ @attr description + A fixed height for the window along the major axis of the screen, + that is, when in portrait. Can be either an absolute dimension + or a fraction of the screen size in that dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowFixedHeightMajor + */ + public static final int Window_windowFixedHeightMajor = 29; + /** +

+ @attr description + A fixed height for the window along the minor axis of the screen, + that is, when in landscape. Can be either an absolute dimension + or a fraction of the screen size in that dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowFixedHeightMinor + */ + public static final int Window_windowFixedHeightMinor = 27; + /** +

+ @attr description + A fixed width for the window along the major axis of the screen, + that is, when in landscape. Can be either an absolute dimension + or a fraction of the screen size in that dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowFixedWidthMajor + */ + public static final int Window_windowFixedWidthMajor = 26; + /** +

+ @attr description + A fixed width for the window along the minor axis of the screen, + that is, when in portrait. Can be either an absolute dimension + or a fraction of the screen size in that dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowFixedWidthMinor + */ + public static final int Window_windowFixedWidthMinor = 28; + /** +

+ @attr description + Drawable to use as a frame around the window. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFrame}. + @attr name android:windowFrame + */ + public static final int Window_windowFrame = 2; + /** +

+ @attr description + Flag indicating whether this window should fill the entire screen. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowFullscreen}. + @attr name android:windowFullscreen + */ + public static final int Window_windowFullscreen = 9; + /** +

+ @attr description + Flag indicating whether this is a floating window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsFloating}. + @attr name android:windowIsFloating + */ + public static final int Window_windowIsFloating = 4; + /** +

+ @attr description + Flag indicating whether this is a translucent window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowIsTranslucent}. + @attr name android:windowIsTranslucent + */ + public static final int Window_windowIsTranslucent = 5; + /** +

+ @attr description + The minimum width the window is allowed to be, along the major + axis of the screen. That is, when in landscape. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowMinWidthMajor}. + @attr name android:windowMinWidthMajor + */ + public static final int Window_windowMinWidthMajor = 19; + /** +

+ @attr description + The minimum width the window is allowed to be, along the minor + axis of the screen. That is, when in portrait. Can be either + an absolute dimension or a fraction of the screen size in that + dimension. + + +

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". +Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), +in (inches), mm (millimeters). +

May be a fractional value, which is a floating point number appended with either % or %p, such as "14.5%". +The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to +some parent container. +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowMinWidthMinor}. + @attr name android:windowMinWidthMinor + */ + public static final int Window_windowMinWidthMinor = 20; + /** +

+ @attr description + Flag indicating that this window should not be displayed at all. + The default value is false; if set to true, and this window is + the main window of an Activity, then it will never actually + be added to the window manager. This means that your activity + must immediately quit without waiting for user interaction, + because there will be no such interaction coming. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoDisplay}. + @attr name android:windowNoDisplay + */ + public static final int Window_windowNoDisplay = 10; + /** +

+ @attr description + Flag indicating whether there should be no title on this window. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowNoTitle}. + @attr name android:windowNoTitle + */ + public static final int Window_windowNoTitle = 3; + /** +

+ @attr description + Flag indicating whether this window should extend into overscan region. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowOverscan}. + @attr name android:windowOverscan + */ + public static final int Window_windowOverscan = 22; + /** +

+ @attr description + Flag indicating that this window's background should be the + user's current wallpaper. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowWallpaper}. + @attr name android:windowShowWallpaper + */ + public static final int Window_windowShowWallpaper = 14; + /** +

+ @attr description + Defines the default soft input state that this window would + like when it is displayed. Corresponds + to {@link android.view.WindowManager.LayoutParams#softInputMode}. + + +

Must be one or more (separated by '|') of the following constant values.

+ ++++ + + + + + + + + + + +
ConstantValueDescription
stateUnspecified0 Not specified, use what the system thinks is best. This + is the default.
stateUnchanged1 Leave the soft input window as-is, in whatever state it + last was.
stateHidden2 Make the soft input area hidden when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysHidden3 Always make the soft input area hidden when this window + has input focus.
stateVisible4 Make the soft input area visible when normally appropriate + (when the user is navigating forward to your window).
stateAlwaysVisible5 Always make the soft input area visible when this window + has input focus.
adjustUnspecified0x00 The window resize/pan adjustment has not been specified, + the system will automatically select between resize and pan + modes, depending + on whether the content of the window has any layout views + that can scroll their contents. If there is such a view, + then the window will be resized, with the assumption being + that the resizeable area can be reduced to make room for + the input UI.
adjustResize0x10 Always resize the window: the content area of the window is + reduced to make room for the soft input area.
adjustPan0x20 Don't resize the window to make room for the soft input area; + instead pan the contents of the window as focus moves inside + of it so that the user can see what they are typing. This is + generally less desireable than panning because the user may + need to close the input area to get at and interact with + parts of the window.
adjustNothing0x30 Don't resize or pan the window to make room for the + soft input area; the window is never adjusted for it.
+

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowSoftInputMode}. + @attr name android:windowSoftInputMode + */ + public static final int Window_windowSoftInputMode = 13; + /** +

+ @attr description + Flag indicating that the action bar should be split to provide more + room for elements. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This is a private symbol. + @attr name com.android.internal:windowSplitActionBar + */ + public static final int Window_windowSplitActionBar = 25; + /** +

+ @attr description + Flag indicating whether this window requests a translucent navigation bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentNavigation}. + @attr name android:windowTranslucentNavigation + */ + public static final int Window_windowTranslucentNavigation = 24; + /** +

+ @attr description + Flag indicating whether this window requests a translucent status bar. Corresponds + to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. + + +

Must be a boolean value, either "true" or "false". +

This may also be a reference to a resource (in the form +"@[package:]type:name") or +theme attribute (in the form +"?[package:][type:]name") +containing a value of this type. +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowTranslucentStatus}. + @attr name android:windowTranslucentStatus + */ + public static final int Window_windowTranslucentStatus = 23; + /** Window animation class attributes. +

Includes the following attributes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
{@link #WindowAnimation_activityCloseEnterAnimation android:activityCloseEnterAnimation} When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen).
{@link #WindowAnimation_activityCloseExitAnimation android:activityCloseExitAnimation} When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen).
{@link #WindowAnimation_activityOpenEnterAnimation android:activityOpenEnterAnimation} When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen).
{@link #WindowAnimation_activityOpenExitAnimation android:activityOpenExitAnimation} When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen).
{@link #WindowAnimation_taskCloseEnterAnimation android:taskCloseEnterAnimation} When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen).
{@link #WindowAnimation_taskCloseExitAnimation android:taskCloseExitAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen).
{@link #WindowAnimation_taskOpenEnterAnimation android:taskOpenEnterAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen).
{@link #WindowAnimation_taskOpenExitAnimation android:taskOpenExitAnimation} When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen).
{@link #WindowAnimation_taskToBackEnterAnimation android:taskToBackEnterAnimation} When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen).
{@link #WindowAnimation_taskToBackExitAnimation android:taskToBackExitAnimation} When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen).
{@link #WindowAnimation_taskToFrontEnterAnimation android:taskToFrontEnterAnimation} When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen).
{@link #WindowAnimation_taskToFrontExitAnimation android:taskToFrontExitAnimation} When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperCloseEnterAnimation android:wallpaperCloseEnterAnimation} When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen).
{@link #WindowAnimation_wallpaperCloseExitAnimation android:wallpaperCloseExitAnimation} When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen).
{@link #WindowAnimation_wallpaperIntraCloseEnterAnimation android:wallpaperIntraCloseEnterAnimation} When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen).
{@link #WindowAnimation_wallpaperIntraCloseExitAnimation android:wallpaperIntraCloseExitAnimation} When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperIntraOpenEnterAnimation android:wallpaperIntraOpenEnterAnimation} When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen).
{@link #WindowAnimation_wallpaperIntraOpenExitAnimation android:wallpaperIntraOpenExitAnimation} When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen).
{@link #WindowAnimation_wallpaperOpenEnterAnimation android:wallpaperOpenEnterAnimation} When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen).
{@link #WindowAnimation_wallpaperOpenExitAnimation android:wallpaperOpenExitAnimation} When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen).
{@link #WindowAnimation_windowEnterAnimation android:windowEnterAnimation} The animation used when a window is being added.
{@link #WindowAnimation_windowExitAnimation android:windowExitAnimation} The animation used when a window is being removed.
{@link #WindowAnimation_windowHideAnimation android:windowHideAnimation} The animation used when a window is going from VISIBLE to INVISIBLE.
{@link #WindowAnimation_windowShowAnimation android:windowShowAnimation} The animation used when a window is going from INVISIBLE to VISIBLE.
+ @see #WindowAnimation_activityCloseEnterAnimation + @see #WindowAnimation_activityCloseExitAnimation + @see #WindowAnimation_activityOpenEnterAnimation + @see #WindowAnimation_activityOpenExitAnimation + @see #WindowAnimation_taskCloseEnterAnimation + @see #WindowAnimation_taskCloseExitAnimation + @see #WindowAnimation_taskOpenEnterAnimation + @see #WindowAnimation_taskOpenExitAnimation + @see #WindowAnimation_taskToBackEnterAnimation + @see #WindowAnimation_taskToBackExitAnimation + @see #WindowAnimation_taskToFrontEnterAnimation + @see #WindowAnimation_taskToFrontExitAnimation + @see #WindowAnimation_wallpaperCloseEnterAnimation + @see #WindowAnimation_wallpaperCloseExitAnimation + @see #WindowAnimation_wallpaperIntraCloseEnterAnimation + @see #WindowAnimation_wallpaperIntraCloseExitAnimation + @see #WindowAnimation_wallpaperIntraOpenEnterAnimation + @see #WindowAnimation_wallpaperIntraOpenExitAnimation + @see #WindowAnimation_wallpaperOpenEnterAnimation + @see #WindowAnimation_wallpaperOpenExitAnimation + @see #WindowAnimation_windowEnterAnimation + @see #WindowAnimation_windowExitAnimation + @see #WindowAnimation_windowHideAnimation + @see #WindowAnimation_windowShowAnimation + */ + public static final int[] WindowAnimation = { + 0x010100b4, 0x010100b5, 0x010100b6, 0x010100b7, + 0x010100b8, 0x010100b9, 0x010100ba, 0x010100bb, + 0x010100bc, 0x010100bd, 0x010100be, 0x010100bf, + 0x010100c0, 0x010100c1, 0x010100c2, 0x010100c3, + 0x01010293, 0x01010294, 0x01010295, 0x01010296, + 0x01010297, 0x01010298, 0x01010299, 0x0101029a + }; + /** +

+ @attr description + When closing the current activity, this is the animation that is + run on the next activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityCloseEnterAnimation}. + @attr name android:activityCloseEnterAnimation + */ + public static final int WindowAnimation_activityCloseEnterAnimation = 6; + /** +

+ @attr description + When closing the current activity, this is the animation that is + run on the current activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityCloseExitAnimation}. + @attr name android:activityCloseExitAnimation + */ + public static final int WindowAnimation_activityCloseExitAnimation = 7; + /** +

+ @attr description + When opening a new activity, this is the animation that is + run on the next activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityOpenEnterAnimation}. + @attr name android:activityOpenEnterAnimation + */ + public static final int WindowAnimation_activityOpenEnterAnimation = 4; + /** +

+ @attr description + When opening a new activity, this is the animation that is + run on the previous activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#activityOpenExitAnimation}. + @attr name android:activityOpenExitAnimation + */ + public static final int WindowAnimation_activityOpenExitAnimation = 5; + /** +

+ @attr description + When closing the last activity of a task, this is the animation that is + run on the activity of the next task (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskCloseEnterAnimation}. + @attr name android:taskCloseEnterAnimation + */ + public static final int WindowAnimation_taskCloseEnterAnimation = 10; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskCloseExitAnimation}. + @attr name android:taskCloseExitAnimation + */ + public static final int WindowAnimation_taskCloseExitAnimation = 11; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the new task (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskOpenEnterAnimation}. + @attr name android:taskOpenEnterAnimation + */ + public static final int WindowAnimation_taskOpenEnterAnimation = 8; + /** +

+ @attr description + When opening an activity in a new task, this is the animation that is + run on the activity of the old task (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskOpenExitAnimation}. + @attr name android:taskOpenExitAnimation + */ + public static final int WindowAnimation_taskOpenExitAnimation = 9; + /** +

+ @attr description + When sending the current task to the background, this is the + animation that is run on the top activity of the task behind + it (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToBackEnterAnimation}. + @attr name android:taskToBackEnterAnimation + */ + public static final int WindowAnimation_taskToBackEnterAnimation = 14; + /** +

+ @attr description + When sending the current task to the background, this is the + animation that is run on the top activity of the current task + (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToBackExitAnimation}. + @attr name android:taskToBackExitAnimation + */ + public static final int WindowAnimation_taskToBackExitAnimation = 15; + /** +

+ @attr description + When bringing an existing task to the foreground, this is the + animation that is run on the top activity of the task being brought + to the foreground (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToFrontEnterAnimation}. + @attr name android:taskToFrontEnterAnimation + */ + public static final int WindowAnimation_taskToFrontEnterAnimation = 12; + /** +

+ @attr description + When bringing an existing task to the foreground, this is the + animation that is run on the current foreground activity + (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#taskToFrontExitAnimation}. + @attr name android:taskToFrontExitAnimation + */ + public static final int WindowAnimation_taskToFrontExitAnimation = 13; + /** +

+ @attr description + When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the new activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperCloseEnterAnimation}. + @attr name android:wallpaperCloseEnterAnimation + */ + public static final int WindowAnimation_wallpaperCloseEnterAnimation = 18; + /** +

+ @attr description + When opening a new activity that hides the wallpaper, while + currently showing the wallpaper, this is the animation that + is run on the old wallpaper activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperCloseExitAnimation}. + @attr name android:wallpaperCloseExitAnimation + */ + public static final int WindowAnimation_wallpaperCloseExitAnimation = 19; + /** +

+ @attr description + When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the previous activity + (which is entering the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraCloseEnterAnimation}. + @attr name android:wallpaperIntraCloseEnterAnimation + */ + public static final int WindowAnimation_wallpaperIntraCloseEnterAnimation = 22; + /** +

+ @attr description + When closing a foreround activity that is on top of the wallpaper + when the previous activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraCloseExitAnimation}. + @attr name android:wallpaperIntraCloseExitAnimation + */ + public static final int WindowAnimation_wallpaperIntraCloseExitAnimation = 23; + /** +

+ @attr description + When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the new activity + (which is entering the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraOpenEnterAnimation}. + @attr name android:wallpaperIntraOpenEnterAnimation + */ + public static final int WindowAnimation_wallpaperIntraOpenEnterAnimation = 20; + /** +

+ @attr description + When opening a new activity that is on top of the wallpaper + when the current activity is also on top of the wallpaper, + this is the animation that is run on the current activity + (which is exiting the screen). The wallpaper remains + static behind the animation. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperIntraOpenExitAnimation}. + @attr name android:wallpaperIntraOpenExitAnimation + */ + public static final int WindowAnimation_wallpaperIntraOpenExitAnimation = 21; + /** +

+ @attr description + When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the new wallpaper activity (which is entering the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperOpenEnterAnimation}. + @attr name android:wallpaperOpenEnterAnimation + */ + public static final int WindowAnimation_wallpaperOpenEnterAnimation = 16; + /** +

+ @attr description + When opening a new activity that shows the wallpaper, while + currently not showing the wallpaper, this is the animation that + is run on the current activity (which is exiting the screen). + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#wallpaperOpenExitAnimation}. + @attr name android:wallpaperOpenExitAnimation + */ + public static final int WindowAnimation_wallpaperOpenExitAnimation = 17; + /** +

+ @attr description + The animation used when a window is being added. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowEnterAnimation}. + @attr name android:windowEnterAnimation + */ + public static final int WindowAnimation_windowEnterAnimation = 0; + /** +

+ @attr description + The animation used when a window is being removed. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowExitAnimation}. + @attr name android:windowExitAnimation + */ + public static final int WindowAnimation_windowExitAnimation = 1; + /** +

+ @attr description + The animation used when a window is going from VISIBLE to INVISIBLE. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowHideAnimation}. + @attr name android:windowHideAnimation + */ + public static final int WindowAnimation_windowHideAnimation = 3; + /** +

+ @attr description + The animation used when a window is going from INVISIBLE to VISIBLE. + + +

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". +

This corresponds to the global attribute + resource symbol {@link android.R.attr#windowShowAnimation}. + @attr name android:windowShowAnimation + */ + public static final int WindowAnimation_windowShowAnimation = 2; + }; +} diff --git a/src/api-impl/com/android/internal/util/ArrayUtils.java b/src/api-impl/com/android/internal/util/ArrayUtils.java new file mode 100644 index 00000000..9137d3cc --- /dev/null +++ b/src/api-impl/com/android/internal/util/ArrayUtils.java @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.util; + +import java.lang.reflect.Array; + +// XXX these should be changed to reflect the actual memory allocator we use. +// it looks like right now objects want to be powers of 2 minus 8 +// and the array size eats another 4 bytes + +/** + * ArrayUtils contains some methods that you can call to find out + * the most efficient increments by which to grow arrays. + */ +public class ArrayUtils +{ + private static Object[] EMPTY = new Object[0]; + private static final int CACHE_SIZE = 73; + private static Object[] sCache = new Object[CACHE_SIZE]; + + private ArrayUtils() { /* cannot be instantiated */ } + + public static int idealByteArraySize(int need) { + for (int i = 4; i < 32; i++) + if (need <= (1 << i) - 12) + return (1 << i) - 12; + + return need; + } + + public static int idealBooleanArraySize(int need) { + return idealByteArraySize(need); + } + + public static int idealShortArraySize(int need) { + return idealByteArraySize(need * 2) / 2; + } + + public static int idealCharArraySize(int need) { + return idealByteArraySize(need * 2) / 2; + } + + public static int idealIntArraySize(int need) { + return idealByteArraySize(need * 4) / 4; + } + + public static int idealFloatArraySize(int need) { + return idealByteArraySize(need * 4) / 4; + } + + public static int idealObjectArraySize(int need) { + return idealByteArraySize(need * 4) / 4; + } + + public static int idealLongArraySize(int need) { + return idealByteArraySize(need * 8) / 8; + } + + /** + * Checks if the beginnings of two byte arrays are equal. + * + * @param array1 the first byte array + * @param array2 the second byte array + * @param length the number of bytes to check + * @return true if they're equal, false otherwise + */ + public static boolean equals(byte[] array1, byte[] array2, int length) { + if (length < 0) { + throw new IllegalArgumentException(); + } + + if (array1 == array2) { + return true; + } + if (array1 == null || array2 == null || array1.length < length || array2.length < length) { + return false; + } + for (int i = 0; i < length; i++) { + if (array1[i] != array2[i]) { + return false; + } + } + return true; + } + + /** + * Returns an empty array of the specified type. The intent is that + * it will return the same empty array every time to avoid reallocation, + * although this is not guaranteed. + */ + public static T[] emptyArray(Class kind) { + if (kind == Object.class) { + return (T[]) EMPTY; + } + + int bucket = ((System.identityHashCode(kind) / 8) & 0x7FFFFFFF) % CACHE_SIZE; + Object cache = sCache[bucket]; + + if (cache == null || cache.getClass().getComponentType() != kind) { + cache = Array.newInstance(kind, 0); + sCache[bucket] = cache; + + // Log.e("cache", "new empty " + kind.getName() + " at " + bucket); + } + + return (T[]) cache; + } + + /** + * Checks that value is present as at least one of the elements of the array. + * @param array the array to check in + * @param value the value to check for + * @return true if the value is present in the array + */ + public static boolean contains(T[] array, T value) { + return indexOf(array, value) != -1; + } + + /** + * Return first index of {@code value} in {@code array}, or {@code -1} if + * not found. + */ + public static int indexOf(T[] array, T value) { + for (int i = 0; i < array.length; i++) { + if (array[i] == null) { + if (value == null) return i; + } else { + if (value != null && array[i].equals(value)) return i; + } + } + return -1; + } + + /** + * Test if all {@code check} items are contained in {@code array}. + */ + public static boolean containsAll(T[] array, T[] check) { + for (T checkItem : check) { + if (!contains(array, checkItem)) { + return false; + } + } + return true; + } + + public static boolean contains(int[] array, int value) { + for (int element : array) { + if (element == value) { + return true; + } + } + return false; + } + + public static long total(long[] array) { + long total = 0; + for (long value : array) { + total += value; + } + return total; + } + + /** + * Appends an element to a copy of the array and returns the copy. + * @param array The original array, or null to represent an empty array. + * @param element The element to add. + * @return A new array that contains all of the elements of the original array + * with the specified element added at the end. + */ + @SuppressWarnings("unchecked") + public static T[] appendElement(Class kind, T[] array, T element) { + final T[] result; + final int end; + if (array != null) { + end = array.length; + result = (T[])Array.newInstance(kind, end + 1); + System.arraycopy(array, 0, result, 0, end); + } else { + end = 0; + result = (T[])Array.newInstance(kind, 1); + } + result[end] = element; + return result; + } + + /** + * Removes an element from a copy of the array and returns the copy. + * If the element is not present, then the original array is returned unmodified. + * @param array The original array, or null to represent an empty array. + * @param element The element to remove. + * @return A new array that contains all of the elements of the original array + * except the first copy of the specified element removed. If the specified element + * was not present, then returns the original array. Returns null if the result + * would be an empty array. + */ + @SuppressWarnings("unchecked") + public static T[] removeElement(Class kind, T[] array, T element) { + if (array != null) { + final int length = array.length; + for (int i = 0; i < length; i++) { + if (array[i] == element) { + if (length == 1) { + return null; + } + T[] result = (T[])Array.newInstance(kind, length - 1); + System.arraycopy(array, 0, result, 0, i); + System.arraycopy(array, i + 1, result, i, length - i - 1); + return result; + } + } + } + return array; + } + + public static int[] appendInt(int[] cur, int val) { + if (cur == null) { + return new int[] { val }; + } + final int N = cur.length; + for (int i = 0; i < N; i++) { + if (cur[i] == val) { + return cur; + } + } + int[] ret = new int[N + 1]; + System.arraycopy(cur, 0, ret, 0, N); + ret[N] = val; + return ret; + } + + public static int[] removeInt(int[] cur, int val) { + if (cur == null) { + return null; + } + final int N = cur.length; + for (int i = 0; i < N; i++) { + if (cur[i] == val) { + int[] ret = new int[N - 1]; + if (i > 0) { + System.arraycopy(cur, 0, ret, 0, i); + } + if (i < (N - 1)) { + System.arraycopy(cur, i + 1, ret, i, N - i - 1); + } + return ret; + } + } + return cur; + } +} diff --git a/src/api-impl/com/android/internal/util/FastXmlSerializer.java b/src/api-impl/com/android/internal/util/FastXmlSerializer.java new file mode 100644 index 00000000..7a040801 --- /dev/null +++ b/src/api-impl/com/android/internal/util/FastXmlSerializer.java @@ -0,0 +1,398 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.util; + +import org.xmlpull.v1.XmlSerializer; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.io.Writer; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.CoderResult; +import java.nio.charset.IllegalCharsetNameException; +import java.nio.charset.UnsupportedCharsetException; + +/** + * This is a quick and dirty implementation of XmlSerializer that isn't horribly + * painfully slow like the normal one. It only does what is needed for the + * specific XML files being written with it. + */ +public class FastXmlSerializer implements XmlSerializer { + private static final String ESCAPE_TABLE[] = new String[] { + null, null, null, null, null, null, null, null, // 0-7 + null, null, null, null, null, null, null, null, // 8-15 + null, null, null, null, null, null, null, null, // 16-23 + null, null, null, null, null, null, null, null, // 24-31 + null, null, """, null, null, null, "&", null, // 32-39 + null, null, null, null, null, null, null, null, // 40-47 + null, null, null, null, null, null, null, null, // 48-55 + null, null, null, null, "<", null, ">", null, // 56-63 + }; + + private static final int BUFFER_LEN = 8192; + + private static String sSpace = " "; + + private final char[] mText = new char[BUFFER_LEN]; + private int mPos; + + private Writer mWriter; + + private OutputStream mOutputStream; + private CharsetEncoder mCharset; + private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); + + private boolean mIndent = false; + private boolean mInTag; + + private int mNesting = 0; + private boolean mLineStart = true; + + private void append(char c) throws IOException { + int pos = mPos; + if (pos >= (BUFFER_LEN-1)) { + flush(); + pos = mPos; + } + mText[pos] = c; + mPos = pos+1; + } + + private void append(String str, int i, final int length) throws IOException { + if (length > BUFFER_LEN) { + final int end = i + length; + while (i < end) { + int next = i + BUFFER_LEN; + append(str, i, next BUFFER_LEN) { + flush(); + pos = mPos; + } + str.getChars(i, i+length, mText, pos); + mPos = pos + length; + } + + private void append(char[] buf, int i, final int length) throws IOException { + if (length > BUFFER_LEN) { + final int end = i + length; + while (i < end) { + int next = i + BUFFER_LEN; + append(buf, i, next BUFFER_LEN) { + flush(); + pos = mPos; + } + System.arraycopy(buf, i, mText, pos, length); + mPos = pos + length; + } + + private void append(String str) throws IOException { + append(str, 0, str.length()); + } + + private void appendIndent(int indent) throws IOException { + indent *= 4; + if (indent > sSpace.length()) { + indent = sSpace.length(); + } + append(sSpace, 0, indent); + } + + private void escapeAndAppendString(final String string) throws IOException { + final int N = string.length(); + final char NE = (char)ESCAPE_TABLE.length; + final String[] escapes = ESCAPE_TABLE; + int lastPos = 0; + int pos; + for (pos=0; pos= NE) continue; + String escape = escapes[c]; + if (escape == null) continue; + if (lastPos < pos) append(string, lastPos, pos-lastPos); + lastPos = pos + 1; + append(escape); + } + if (lastPos < pos) append(string, lastPos, pos-lastPos); + } + + private void escapeAndAppendString(char[] buf, int start, int len) throws IOException { + final char NE = (char)ESCAPE_TABLE.length; + final String[] escapes = ESCAPE_TABLE; + int end = start+len; + int lastPos = start; + int pos; + for (pos=start; pos= NE) continue; + String escape = escapes[c]; + if (escape == null) continue; + if (lastPos < pos) append(buf, lastPos, pos-lastPos); + lastPos = pos + 1; + append(escape); + } + if (lastPos < pos) append(buf, lastPos, pos-lastPos); + } + + public XmlSerializer attribute(String namespace, String name, String value) throws IOException, + IllegalArgumentException, IllegalStateException { + append(' '); + if (namespace != null) { + append(namespace); + append(':'); + } + append(name); + append("=\""); + + escapeAndAppendString(value); + append('"'); + mLineStart = false; + return this; + } + + public void cdsect(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void comment(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void docdecl(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void endDocument() throws IOException, IllegalArgumentException, IllegalStateException { + flush(); + } + + public XmlSerializer endTag(String namespace, String name) throws IOException, + IllegalArgumentException, IllegalStateException { + mNesting--; + if (mInTag) { + append(" />\n"); + } else { + if (mIndent && mLineStart) { + appendIndent(mNesting); + } + append("\n"); + } + mLineStart = true; + mInTag = false; + return this; + } + + public void entityRef(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + private void flushBytes() throws IOException { + int position; + if ((position = mBytes.position()) > 0) { + mBytes.flip(); + mOutputStream.write(mBytes.array(), 0, position); + mBytes.clear(); + } + } + + public void flush() throws IOException { + //Log.i("PackageManager", "flush mPos=" + mPos); + if (mPos > 0) { + if (mOutputStream != null) { + CharBuffer charBuffer = CharBuffer.wrap(mText, 0, mPos); + CoderResult result = mCharset.encode(charBuffer, mBytes, true); + while (true) { + if (result.isError()) { + throw new IOException(result.toString()); + } else if (result.isOverflow()) { + flushBytes(); + result = mCharset.encode(charBuffer, mBytes, true); + continue; + } + break; + } + flushBytes(); + mOutputStream.flush(); + } else { + mWriter.write(mText, 0, mPos); + mWriter.flush(); + } + mPos = 0; + } + } + + public int getDepth() { + throw new UnsupportedOperationException(); + } + + public boolean getFeature(String name) { + throw new UnsupportedOperationException(); + } + + public String getName() { + throw new UnsupportedOperationException(); + } + + public String getNamespace() { + throw new UnsupportedOperationException(); + } + + public String getPrefix(String namespace, boolean generatePrefix) + throws IllegalArgumentException { + throw new UnsupportedOperationException(); + } + + public Object getProperty(String name) { + throw new UnsupportedOperationException(); + } + + public void ignorableWhitespace(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void processingInstruction(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void setFeature(String name, boolean state) throws IllegalArgumentException, + IllegalStateException { + if (name.equals("http://xmlpull.org/v1/doc/features.html#indent-output")) { + mIndent = true; + return; + } + throw new UnsupportedOperationException(); + } + + public void setOutput(OutputStream os, String encoding) throws IOException, + IllegalArgumentException, IllegalStateException { + if (os == null) + throw new IllegalArgumentException(); + if (true) { + try { + mCharset = Charset.forName(encoding).newEncoder(); + } catch (IllegalCharsetNameException e) { + throw (UnsupportedEncodingException) (new UnsupportedEncodingException( + encoding).initCause(e)); + } catch (UnsupportedCharsetException e) { + throw (UnsupportedEncodingException) (new UnsupportedEncodingException( + encoding).initCause(e)); + } + mOutputStream = os; + } else { + setOutput( + encoding == null + ? new OutputStreamWriter(os) + : new OutputStreamWriter(os, encoding)); + } + } + + public void setOutput(Writer writer) throws IOException, IllegalArgumentException, + IllegalStateException { + mWriter = writer; + } + + public void setPrefix(String prefix, String namespace) throws IOException, + IllegalArgumentException, IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void setProperty(String name, Object value) throws IllegalArgumentException, + IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void startDocument(String encoding, Boolean standalone) throws IOException, + IllegalArgumentException, IllegalStateException { + append("\n"); + mLineStart = true; + } + + public XmlSerializer startTag(String namespace, String name) throws IOException, + IllegalArgumentException, IllegalStateException { + if (mInTag) { + append(">\n"); + } + if (mIndent) { + appendIndent(mNesting); + } + mNesting++; + append('<'); + if (namespace != null) { + append(namespace); + append(':'); + } + append(name); + mInTag = true; + mLineStart = false; + return this; + } + + public XmlSerializer text(char[] buf, int start, int len) throws IOException, + IllegalArgumentException, IllegalStateException { + if (mInTag) { + append(">"); + mInTag = false; + } + escapeAndAppendString(buf, start, len); + if (mIndent) { + mLineStart = buf[start+len-1] == '\n'; + } + return this; + } + + public XmlSerializer text(String text) throws IOException, IllegalArgumentException, + IllegalStateException { + if (mInTag) { + append(">"); + mInTag = false; + } + escapeAndAppendString(text); + if (mIndent) { + mLineStart = text.length() > 0 && (text.charAt(text.length()-1) == '\n'); + } + return this; + } + +} diff --git a/src/api-impl/com/android/internal/util/XmlUtils.java b/src/api-impl/com/android/internal/util/XmlUtils.java new file mode 100644 index 00000000..0b74cf32 --- /dev/null +++ b/src/api-impl/com/android/internal/util/XmlUtils.java @@ -0,0 +1,966 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.util; + +import android.util.Xml; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.ProtocolException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** {@hide} */ +public class XmlUtils { + + public static void skipCurrentTag(XmlPullParser parser) + throws XmlPullParserException, IOException { + int outerDepth = parser.getDepth(); + int type; + while ((type=parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG + || parser.getDepth() > outerDepth)) { + } + } + + public static final int + convertValueToList(CharSequence value, String[] options, int defaultValue) + { + if (null != value) { + for (int i = 0; i < options.length; i++) { + if (value.equals(options[i])) + return i; + } + } + + return defaultValue; + } + + public static final boolean + convertValueToBoolean(CharSequence value, boolean defaultValue) + { + boolean result = false; + + if (null == value) + return defaultValue; + + if (value.equals("1") + || value.equals("true") + || value.equals("TRUE")) + result = true; + + return result; + } + + public static final int + convertValueToInt(CharSequence charSeq, int defaultValue) + { + if (null == charSeq) + return defaultValue; + + String nm = charSeq.toString(); + + // XXX This code is copied from Integer.decode() so we don't + // have to instantiate an Integer! + + int value; + int sign = 1; + int index = 0; + int len = nm.length(); + int base = 10; + + if ('-' == nm.charAt(0)) { + sign = -1; + index++; + } + + if ('0' == nm.charAt(index)) { + // Quick check for a zero by itself + if (index == (len - 1)) + return 0; + + char c = nm.charAt(index + 1); + + if ('x' == c || 'X' == c) { + index += 2; + base = 16; + } else { + index++; + base = 8; + } + } + else if ('#' == nm.charAt(index)) + { + index++; + base = 16; + } + + return Integer.parseInt(nm.substring(index), base) * sign; + } + + public static int convertValueToUnsignedInt(String value, int defaultValue) { + if (null == value) { + return defaultValue; + } + + return parseUnsignedIntAttribute(value); + } + + public static int parseUnsignedIntAttribute(CharSequence charSeq) { + String value = charSeq.toString(); + + long bits; + int index = 0; + int len = value.length(); + int base = 10; + + if ('0' == value.charAt(index)) { + // Quick check for zero by itself + if (index == (len - 1)) + return 0; + + char c = value.charAt(index + 1); + + if ('x' == c || 'X' == c) { // check for hex + index += 2; + base = 16; + } else { // check for octal + index++; + base = 8; + } + } else if ('#' == value.charAt(index)) { + index++; + base = 16; + } + + return (int) Long.parseLong(value.substring(index), base); + } + + /** + * Flatten a Map into an output stream as XML. The map can later be + * read back with readMapXml(). + * + * @param val The map to be flattened. + * @param out Where to write the XML data. + * + * @see #writeMapXml(Map, String, XmlSerializer) + * @see #writeListXml + * @see #writeValueXml + * @see #readMapXml + */ + public static final void writeMapXml(Map val, OutputStream out) + throws XmlPullParserException, java.io.IOException { + XmlSerializer serializer = new FastXmlSerializer(); + serializer.setOutput(out, "utf-8"); + serializer.startDocument(null, true); + serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); + writeMapXml(val, null, serializer); + serializer.endDocument(); + } + + /** + * Flatten a List into an output stream as XML. The list can later be + * read back with readListXml(). + * + * @param val The list to be flattened. + * @param out Where to write the XML data. + * + * @see #writeListXml(List, String, XmlSerializer) + * @see #writeMapXml + * @see #writeValueXml + * @see #readListXml + */ + public static final void writeListXml(List val, OutputStream out) + throws XmlPullParserException, java.io.IOException + { + XmlSerializer serializer = Xml.newSerializer(); + serializer.setOutput(out, "utf-8"); + serializer.startDocument(null, true); + serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); + writeListXml(val, null, serializer); + serializer.endDocument(); + } + + /** + * Flatten a Map into an XmlSerializer. The map can later be read back + * with readThisMapXml(). + * + * @param val The map to be flattened. + * @param name Name attribute to include with this list's tag, or null for + * none. + * @param out XmlSerializer to write the map into. + * + * @see #writeMapXml(Map, OutputStream) + * @see #writeListXml + * @see #writeValueXml + * @see #readMapXml + */ + public static final void writeMapXml(Map val, String name, XmlSerializer out) + throws XmlPullParserException, java.io.IOException + { + if (val == null) { + out.startTag(null, "null"); + out.endTag(null, "null"); + return; + } + + Set s = val.entrySet(); + Iterator i = s.iterator(); + + out.startTag(null, "map"); + if (name != null) { + out.attribute(null, "name", name); + } + + while (i.hasNext()) { + Map.Entry e = (Map.Entry)i.next(); + writeValueXml(e.getValue(), (String)e.getKey(), out); + } + + out.endTag(null, "map"); + } + + /** + * Flatten a List into an XmlSerializer. The list can later be read back + * with readThisListXml(). + * + * @param val The list to be flattened. + * @param name Name attribute to include with this list's tag, or null for + * none. + * @param out XmlSerializer to write the list into. + * + * @see #writeListXml(List, OutputStream) + * @see #writeMapXml + * @see #writeValueXml + * @see #readListXml + */ + public static final void writeListXml(List val, String name, XmlSerializer out) + throws XmlPullParserException, java.io.IOException + { + if (val == null) { + out.startTag(null, "null"); + out.endTag(null, "null"); + return; + } + + out.startTag(null, "list"); + if (name != null) { + out.attribute(null, "name", name); + } + + int N = val.size(); + int i=0; + while (i < N) { + writeValueXml(val.get(i), null, out); + i++; + } + + out.endTag(null, "list"); + } + + public static final void writeSetXml(Set val, String name, XmlSerializer out) + throws XmlPullParserException, java.io.IOException { + if (val == null) { + out.startTag(null, "null"); + out.endTag(null, "null"); + return; + } + + out.startTag(null, "set"); + if (name != null) { + out.attribute(null, "name", name); + } + + for (Object v : val) { + writeValueXml(v, null, out); + } + + out.endTag(null, "set"); + } + + /** + * Flatten a byte[] into an XmlSerializer. The list can later be read back + * with readThisByteArrayXml(). + * + * @param val The byte array to be flattened. + * @param name Name attribute to include with this array's tag, or null for + * none. + * @param out XmlSerializer to write the array into. + * + * @see #writeMapXml + * @see #writeValueXml + */ + public static final void writeByteArrayXml(byte[] val, String name, + XmlSerializer out) + throws XmlPullParserException, java.io.IOException { + + if (val == null) { + out.startTag(null, "null"); + out.endTag(null, "null"); + return; + } + + out.startTag(null, "byte-array"); + if (name != null) { + out.attribute(null, "name", name); + } + + final int N = val.length; + out.attribute(null, "num", Integer.toString(N)); + + StringBuilder sb = new StringBuilder(val.length*2); + for (int i=0; i>4; + sb.append(h >= 10 ? ('a'+h-10) : ('0'+h)); + h = b&0xff; + sb.append(h >= 10 ? ('a'+h-10) : ('0'+h)); + } + + out.text(sb.toString()); + + out.endTag(null, "byte-array"); + } + + /** + * Flatten an int[] into an XmlSerializer. The list can later be read back + * with readThisIntArrayXml(). + * + * @param val The int array to be flattened. + * @param name Name attribute to include with this array's tag, or null for + * none. + * @param out XmlSerializer to write the array into. + * + * @see #writeMapXml + * @see #writeValueXml + * @see #readThisIntArrayXml + */ + public static final void writeIntArrayXml(int[] val, String name, + XmlSerializer out) + throws XmlPullParserException, java.io.IOException { + + if (val == null) { + out.startTag(null, "null"); + out.endTag(null, "null"); + return; + } + + out.startTag(null, "int-array"); + if (name != null) { + out.attribute(null, "name", name); + } + + final int N = val.length; + out.attribute(null, "num", Integer.toString(N)); + + for (int i=0; iafter the tag that begins the map. + * + * @param parser The XmlPullParser from which to read the map data. + * @param endTag Name of the tag that will end the map, usually "map". + * @param name An array of one string, used to return the name attribute + * of the map's tag. + * + * @return HashMap The newly generated map. + * + * @see #readMapXml + */ + public static final HashMap readThisMapXml(XmlPullParser parser, String endTag, String[] name) + throws XmlPullParserException, java.io.IOException + { + HashMap map = new HashMap(); + + int eventType = parser.getEventType(); + do { + if (eventType == parser.START_TAG) { + Object val = readThisValueXml(parser, name); + if (name[0] != null) { + //System.out.println("Adding to map: " + name + " -> " + val); + map.put(name[0], val); + } else { + throw new XmlPullParserException( + "Map value without name attribute: " + parser.getName()); + } + } else if (eventType == parser.END_TAG) { + if (parser.getName().equals(endTag)) { + return map; + } + throw new XmlPullParserException( + "Expected " + endTag + " end tag at: " + parser.getName()); + } + eventType = parser.next(); + } while (eventType != parser.END_DOCUMENT); + + throw new XmlPullParserException( + "Document ended before " + endTag + " end tag"); + } + + /** + * Read an ArrayList object from an XmlPullParser. The XML data could + * previously have been generated by writeListXml(). The XmlPullParser + * must be positioned after the tag that begins the list. + * + * @param parser The XmlPullParser from which to read the list data. + * @param endTag Name of the tag that will end the list, usually "list". + * @param name An array of one string, used to return the name attribute + * of the list's tag. + * + * @return HashMap The newly generated list. + * + * @see #readListXml + */ + public static final ArrayList readThisListXml(XmlPullParser parser, String endTag, String[] name) + throws XmlPullParserException, java.io.IOException + { + ArrayList list = new ArrayList(); + + int eventType = parser.getEventType(); + do { + if (eventType == parser.START_TAG) { + Object val = readThisValueXml(parser, name); + list.add(val); + //System.out.println("Adding to list: " + val); + } else if (eventType == parser.END_TAG) { + if (parser.getName().equals(endTag)) { + return list; + } + throw new XmlPullParserException( + "Expected " + endTag + " end tag at: " + parser.getName()); + } + eventType = parser.next(); + } while (eventType != parser.END_DOCUMENT); + + throw new XmlPullParserException( + "Document ended before " + endTag + " end tag"); + } + + /** + * Read a HashSet object from an XmlPullParser. The XML data could previously + * have been generated by writeSetXml(). The XmlPullParser must be positioned + * after the tag that begins the set. + * + * @param parser The XmlPullParser from which to read the set data. + * @param endTag Name of the tag that will end the set, usually "set". + * @param name An array of one string, used to return the name attribute + * of the set's tag. + * + * @return HashSet The newly generated set. + * + * @throws XmlPullParserException + * @throws java.io.IOException + * + * @see #readSetXml + */ + public static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name) + throws XmlPullParserException, java.io.IOException { + HashSet set = new HashSet(); + + int eventType = parser.getEventType(); + do { + if (eventType == parser.START_TAG) { + Object val = readThisValueXml(parser, name); + set.add(val); + //System.out.println("Adding to set: " + val); + } else if (eventType == parser.END_TAG) { + if (parser.getName().equals(endTag)) { + return set; + } + throw new XmlPullParserException( + "Expected " + endTag + " end tag at: " + parser.getName()); + } + eventType = parser.next(); + } while (eventType != parser.END_DOCUMENT); + + throw new XmlPullParserException( + "Document ended before " + endTag + " end tag"); + } + + /** + * Read an int[] object from an XmlPullParser. The XML data could + * previously have been generated by writeIntArrayXml(). The XmlPullParser + * must be positioned after the tag that begins the list. + * + * @param parser The XmlPullParser from which to read the list data. + * @param endTag Name of the tag that will end the list, usually "list". + * @param name An array of one string, used to return the name attribute + * of the list's tag. + * + * @return Returns a newly generated int[]. + * + * @see #readListXml + */ + public static final int[] readThisIntArrayXml(XmlPullParser parser, + String endTag, String[] name) + throws XmlPullParserException, java.io.IOException { + + int num; + try { + num = Integer.parseInt(parser.getAttributeValue(null, "num")); + } catch (NullPointerException e) { + throw new XmlPullParserException( + "Need num attribute in byte-array"); + } catch (NumberFormatException e) { + throw new XmlPullParserException( + "Not a number in num attribute in byte-array"); + } + + int[] array = new int[num]; + int i = 0; + + int eventType = parser.getEventType(); + do { + if (eventType == parser.START_TAG) { + if (parser.getName().equals("item")) { + try { + array[i] = Integer.parseInt( + parser.getAttributeValue(null, "value")); + } catch (NullPointerException e) { + throw new XmlPullParserException( + "Need value attribute in item"); + } catch (NumberFormatException e) { + throw new XmlPullParserException( + "Not a number in value attribute in item"); + } + } else { + throw new XmlPullParserException( + "Expected item tag at: " + parser.getName()); + } + } else if (eventType == parser.END_TAG) { + if (parser.getName().equals(endTag)) { + return array; + } else if (parser.getName().equals("item")) { + i++; + } else { + throw new XmlPullParserException( + "Expected " + endTag + " end tag at: " + + parser.getName()); + } + } + eventType = parser.next(); + } while (eventType != parser.END_DOCUMENT); + + throw new XmlPullParserException( + "Document ended before " + endTag + " end tag"); + } + + /** + * Read a flattened object from an XmlPullParser. The XML data could + * previously have been written with writeMapXml(), writeListXml(), or + * writeValueXml(). The XmlPullParser must be positioned at the + * tag that defines the value. + * + * @param parser The XmlPullParser from which to read the object. + * @param name An array of one string, used to return the name attribute + * of the value's tag. + * + * @return Object The newly generated value object. + * + * @see #readMapXml + * @see #readListXml + * @see #writeValueXml + */ + public static final Object readValueXml(XmlPullParser parser, String[] name) + throws XmlPullParserException, java.io.IOException + { + int eventType = parser.getEventType(); + do { + if (eventType == parser.START_TAG) { + return readThisValueXml(parser, name); + } else if (eventType == parser.END_TAG) { + throw new XmlPullParserException( + "Unexpected end tag at: " + parser.getName()); + } else if (eventType == parser.TEXT) { + throw new XmlPullParserException( + "Unexpected text: " + parser.getText()); + } + eventType = parser.next(); + } while (eventType != parser.END_DOCUMENT); + + throw new XmlPullParserException( + "Unexpected end of document"); + } + + private static final Object readThisValueXml(XmlPullParser parser, String[] name) + throws XmlPullParserException, java.io.IOException + { + final String valueName = parser.getAttributeValue(null, "name"); + final String tagName = parser.getName(); + + //System.out.println("Reading this value tag: " + tagName + ", name=" + valueName); + + Object res; + + if (tagName.equals("null")) { + res = null; + } else if (tagName.equals("string")) { + String value = ""; + int eventType; + while ((eventType = parser.next()) != parser.END_DOCUMENT) { + if (eventType == parser.END_TAG) { + if (parser.getName().equals("string")) { + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + value); + return value; + } + throw new XmlPullParserException( + "Unexpected end tag in : " + parser.getName()); + } else if (eventType == parser.TEXT) { + value += parser.getText(); + } else if (eventType == parser.START_TAG) { + throw new XmlPullParserException( + "Unexpected start tag in : " + parser.getName()); + } + } + throw new XmlPullParserException( + "Unexpected end of document in "); + } else if ((res = readThisPrimitiveValueXml(parser, tagName)) != null) { + // all work already done by readThisPrimitiveValueXml + } else if (tagName.equals("int-array")) { + parser.next(); + res = readThisIntArrayXml(parser, "int-array", name); + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + res); + return res; + } else if (tagName.equals("map")) { + parser.next(); + res = readThisMapXml(parser, "map", name); + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + res); + return res; + } else if (tagName.equals("list")) { + parser.next(); + res = readThisListXml(parser, "list", name); + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + res); + return res; + } else if (tagName.equals("set")) { + parser.next(); + res = readThisSetXml(parser, "set", name); + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + res); + return res; + } else { + throw new XmlPullParserException( + "Unknown tag: " + tagName); + } + + // Skip through to end tag. + int eventType; + while ((eventType = parser.next()) != parser.END_DOCUMENT) { + if (eventType == parser.END_TAG) { + if (parser.getName().equals(tagName)) { + name[0] = valueName; + //System.out.println("Returning value for " + valueName + ": " + res); + return res; + } + throw new XmlPullParserException( + "Unexpected end tag in <" + tagName + ">: " + parser.getName()); + } else if (eventType == parser.TEXT) { + throw new XmlPullParserException( + "Unexpected text in <" + tagName + ">: " + parser.getName()); + } else if (eventType == parser.START_TAG) { + throw new XmlPullParserException( + "Unexpected start tag in <" + tagName + ">: " + parser.getName()); + } + } + throw new XmlPullParserException( + "Unexpected end of document in <" + tagName + ">"); + } + + private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName) + throws XmlPullParserException, java.io.IOException + { + try { + if (tagName.equals("int")) { + return Integer.parseInt(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("long")) { + return Long.valueOf(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("float")) { + return new Float(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("double")) { + return new Double(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("boolean")) { + return Boolean.valueOf(parser.getAttributeValue(null, "value")); + } else { + return null; + } + } catch (NullPointerException e) { + throw new XmlPullParserException("Need value attribute in <" + tagName + ">"); + } catch (NumberFormatException e) { + throw new XmlPullParserException( + "Not a number in value attribute in <" + tagName + ">"); + } + } + + public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException + { + int type; + while ((type=parser.next()) != parser.START_TAG + && type != parser.END_DOCUMENT) { + ; + } + + if (type != parser.START_TAG) { + throw new XmlPullParserException("No start tag found"); + } + + if (!parser.getName().equals(firstElementName)) { + throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() + + ", expected " + firstElementName); + } + } + + public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException + { + int type; + while ((type=parser.next()) != parser.START_TAG + && type != parser.END_DOCUMENT) { + ; + } + } + + public static boolean nextElementWithin(XmlPullParser parser, int outerDepth) + throws IOException, XmlPullParserException { + for (;;) { + int type = parser.next(); + if (type == XmlPullParser.END_DOCUMENT + || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) { + return false; + } + if (type == XmlPullParser.START_TAG + && parser.getDepth() == outerDepth + 1) { + return true; + } + } + } + + public static int readIntAttribute(XmlPullParser in, String name) throws IOException { + final String value = in.getAttributeValue(null, name); + try { + return Integer.parseInt(value); + } catch (NumberFormatException e) { + throw new ProtocolException("problem parsing " + name + "=" + value + " as int"); + } + } + + public static void writeIntAttribute(XmlSerializer out, String name, int value) + throws IOException { + out.attribute(null, name, Integer.toString(value)); + } + + public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) { + final String value = in.getAttributeValue(null, name); + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + public static long readLongAttribute(XmlPullParser in, String name) throws IOException { + final String value = in.getAttributeValue(null, name); + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + throw new ProtocolException("problem parsing " + name + "=" + value + " as long"); + } + } + + public static void writeLongAttribute(XmlSerializer out, String name, long value) + throws IOException { + out.attribute(null, name, Long.toString(value)); + } + + public static boolean readBooleanAttribute(XmlPullParser in, String name) { + final String value = in.getAttributeValue(null, name); + return Boolean.parseBoolean(value); + } + + public static void writeBooleanAttribute(XmlSerializer out, String name, boolean value) + throws IOException { + out.attribute(null, name, Boolean.toString(value)); + } +} diff --git a/src/api-impl/com/google/android/gles_jni/EGLImpl.java b/src/api-impl/com/google/android/gles_jni/EGLImpl.java new file mode 100644 index 00000000..c2d9ed4a --- /dev/null +++ b/src/api-impl/com/google/android/gles_jni/EGLImpl.java @@ -0,0 +1,64 @@ +package com.google.android.gles_jni; + +import javax.microedition.khronos.egl.*; + +public class EGLImpl implements EGL10 { + private native long native_eglCreateContext(long egl_display, long egl_config, EGLContext share_context, int[] attrib_list); + + public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list) { + long native_egl_context = native_eglCreateContext(display.native_egl_display, config.native_egl_config, share_context, attrib_list); + if (native_egl_context == 0) { + return EGL10.EGL_NO_CONTEXT; + } + return new EGLContext(native_egl_context); + } + + private native boolean native_eglChooseConfig(long egl_display, int[] attrib_list, long[] egl_configs, int config_size, int[] num_config); + + public boolean eglChooseConfig(EGLDisplay display, int[] attrib_list, EGLConfig[] configs, int config_size, int[] num_config) { + long[] native_egl_configs = null; + + if(config_size != 0) { + if(configs == null) { + throw new java.lang.IllegalArgumentException("app error: eglChooseConfig called with non-zero 'config_size' ("+config_size+"), but with null 'configs' array"); + } + native_egl_configs = new long[config_size]; + } + + boolean ret = native_eglChooseConfig(display.native_egl_display, attrib_list, native_egl_configs, config_size, num_config); + + if(configs != null) { + for(int i = 0; i < configs.length; i++) { + configs[i] = new EGLConfig(native_egl_configs[i]); + } + } + + return ret; + } + + + public boolean eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap) { return false; } + public EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list) { return null; } + public EGLSurface eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list) { return null; } + public EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list) { return null; } + public boolean eglDestroyContext(EGLDisplay display, EGLContext context) { return false; } + public boolean eglDestroySurface(EGLDisplay display, EGLSurface surface) { return false; } + public boolean eglGetConfigAttrib(EGLDisplay display, EGLConfig config, int attribute, int[] value) { return false; } + public boolean eglGetConfigs(EGLDisplay display, EGLConfig[] configs, int config_size, int[] num_config) { return false; } + public EGLContext eglGetCurrentContext() { return null; } + public EGLDisplay eglGetCurrentDisplay() { return null; } + public EGLSurface eglGetCurrentSurface(int readdraw) { return null; } + public EGLDisplay eglGetDisplay(Object native_display) { return null; } + public int eglGetError() { return EGL_SUCCESS; } // don't let yourself get fooled, this is also a stub :P + public boolean eglInitialize(EGLDisplay display, int[] major_minor) { return false; } + public boolean eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context) { return false; } + public boolean eglQueryContext(EGLDisplay display, EGLContext context, int attribute, int[] value) { return false; } + public String eglQueryString(EGLDisplay display, int name) { return "FIXME"; } + public boolean eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value) { return false; } + /** @hide **/ + public boolean eglReleaseThread() { return false; } + public boolean eglSwapBuffers(EGLDisplay display, EGLSurface surface) { return false; } + public boolean eglTerminate(EGLDisplay display) { return false; } + public boolean eglWaitGL() { return false; } + public boolean eglWaitNative(int engine, Object bindTarget) { return false; } +} diff --git a/src/api-impl/com/google/android/gles_jni/GLImpl.java b/src/api-impl/com/google/android/gles_jni/GLImpl.java new file mode 100644 index 00000000..bf98d0ea --- /dev/null +++ b/src/api-impl/com/google/android/gles_jni/GLImpl.java @@ -0,0 +1,2215 @@ +/* //device/java/android/com/google/android/gles_jni/GLImpl.java +** +** Copyright 2006, 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. +*/ + +// This source file is automatically generated + +package com.google.android.gles_jni; + +/*import android.app.AppGlobals; +import android.content.pm.ApplicationInfo; +import android.content.pm.IPackageManager; +import android.os.Build; +import android.os.UserHandle; +import android.util.Log; +*/ +import java.nio.Buffer; +import javax.microedition.khronos.opengles.GL10; +import javax.microedition.khronos.opengles.GL10Ext; +import javax.microedition.khronos.opengles.GL11; +import javax.microedition.khronos.opengles.GL11Ext; +import javax.microedition.khronos.opengles.GL11ExtensionPack; + +public class GLImpl implements GL10, GL10Ext, GL11, GL11Ext, GL11ExtensionPack { + // Private accessors for native code + + /*native private static void _nativeClassInit(); + static { + _nativeClassInit(); + }*/ + + Buffer _colorPointer = null; + Buffer _normalPointer = null; + Buffer _texCoordPointer = null; + Buffer _vertexPointer = null; + Buffer _pointSizePointerOES = null; + Buffer _matrixIndexPointerOES = null; + Buffer _weightPointerOES = null; + + private boolean haveCheckedExtensions; + private boolean have_OES_blend_equation_separate; + private boolean have_OES_blend_subtract; + private boolean have_OES_framebuffer_object; + private boolean have_OES_texture_cube_map; + + public GLImpl() { + } + + public void glGetPointerv(int pname, java.nio.Buffer[] params) { + throw new UnsupportedOperationException("glGetPointerv"); + } + + /*private static boolean allowIndirectBuffers(String appName) { + boolean result = false; + int version = 0; + IPackageManager pm = AppGlobals.getPackageManager(); + try { + ApplicationInfo applicationInfo = pm.getApplicationInfo(appName, 0, UserHandle.myUserId()); + if (applicationInfo != null) { + version = applicationInfo.targetSdkVersion; + } + } catch (android.os.RemoteException e) { + // ignore + } + Log.e("OpenGLES", String.format( + "Application %s (SDK target %d) called a GL11 Pointer method with an indirect Buffer.", + appName, version)); + if (version <= Build.VERSION_CODES.CUPCAKE) { + result = true; + } + return result; + }*/ + + /* FIXME - actually hook these up */ + + // C function void glActiveTexture ( GLenum texture ) + + public native void glActiveTexture( + int texture + ); + + // C function void glAlphaFunc ( GLenum func, GLclampf ref ) + + public native void glAlphaFunc( + int func, + float ref + ); + + // C function void glAlphaFuncx ( GLenum func, GLclampx ref ) + + public native void glAlphaFuncx( + int func, + int ref + ); + + // C function void glBindTexture ( GLenum target, GLuint texture ) + + public native void glBindTexture( + int target, + int texture + ); + + // C function void glBlendFunc ( GLenum sfactor, GLenum dfactor ) + + public native void glBlendFunc( + int sfactor, + int dfactor + ); + + // C function void glClear ( GLbitfield mask ) + + public native void glClear( + int mask + ); + + // C function void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) + + public native void glClearColor( + float red, + float green, + float blue, + float alpha + ); + + // C function void glClearColorx ( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha ) + + public native void glClearColorx( + int red, + int green, + int blue, + int alpha + ); + + // C function void glClearDepthf ( GLclampf depth ) + + public native void glClearDepthf( + float depth + ); + + // C function void glClearDepthx ( GLclampx depth ) + + public native void glClearDepthx( + int depth + ); + + // C function void glClearStencil ( GLint s ) + + public native void glClearStencil( + int s + ); + + // C function void glClientActiveTexture ( GLenum texture ) + + public native void glClientActiveTexture( + int texture + ); + + // C function void glColor4f ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) + + public native void glColor4f( + float red, + float green, + float blue, + float alpha + ); + + // C function void glColor4x ( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha ) + + public native void glColor4x( + int red, + int green, + int blue, + int alpha + ); + + // C function void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) + + public native void glColorMask( + boolean red, + boolean green, + boolean blue, + boolean alpha + ); + + // C function void glColorPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glColorPointerBounds( + int size, + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glColorPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ) { + glColorPointerBounds( + size, + type, + stride, + pointer, + pointer.remaining() + ); + if ((size == 4) && + ((type == GL_FLOAT) || + (type == GL_UNSIGNED_BYTE) || + (type == GL_FIXED)) && + (stride >= 0)) { + _colorPointer = pointer; + } + } + + // C function void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) + + public native void glCompressedTexImage2D( + int target, + int level, + int internalformat, + int width, + int height, + int border, + int imageSize, + java.nio.Buffer data + ); + + // C function void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) + + public native void glCompressedTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int width, + int height, + int format, + int imageSize, + java.nio.Buffer data + ); + + // C function void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) + + public native void glCopyTexImage2D( + int target, + int level, + int internalformat, + int x, + int y, + int width, + int height, + int border + ); + + // C function void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) + + public native void glCopyTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int x, + int y, + int width, + int height + ); + + // C function void glCullFace ( GLenum mode ) + + public native void glCullFace( + int mode + ); + + // C function void glDeleteTextures ( GLsizei n, const GLuint *textures ) + + public native void glDeleteTextures( + int n, + int[] textures, + int offset + ); + + // C function void glDeleteTextures ( GLsizei n, const GLuint *textures ) + + public native void glDeleteTextures( + int n, + java.nio.IntBuffer textures + ); + + // C function void glDepthFunc ( GLenum func ) + + public native void glDepthFunc( + int func + ); + + // C function void glDepthMask ( GLboolean flag ) + + public native void glDepthMask( + boolean flag + ); + + // C function void glDepthRangef ( GLclampf zNear, GLclampf zFar ) + + public native void glDepthRangef( + float zNear, + float zFar + ); + + // C function void glDepthRangex ( GLclampx zNear, GLclampx zFar ) + + public native void glDepthRangex( + int zNear, + int zFar + ); + + // C function void glDisable ( GLenum cap ) + + public native void glDisable( + int cap + ); + + // C function void glDisableClientState ( GLenum array ) + + public native void glDisableClientState( + int array + ); + + // C function void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) + + public native void glDrawArrays( + int mode, + int first, + int count + ); + + // C function void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) + + public native void glDrawElements( + int mode, + int count, + int type, + java.nio.Buffer indices + ); + + // C function void glEnable ( GLenum cap ) + + public native void glEnable( + int cap + ); + + // C function void glEnableClientState ( GLenum array ) + + public native void glEnableClientState( + int array + ); + + // C function void glFinish ( void ) + + public native void glFinish( + ); + + // C function void glFlush ( void ) + + public native void glFlush( + ); + + // C function void glFogf ( GLenum pname, GLfloat param ) + + public native void glFogf( + int pname, + float param + ); + + // C function void glFogfv ( GLenum pname, const GLfloat *params ) + + public native void glFogfv( + int pname, + float[] params, + int offset + ); + + // C function void glFogfv ( GLenum pname, const GLfloat *params ) + + public native void glFogfv( + int pname, + java.nio.FloatBuffer params + ); + + // C function void glFogx ( GLenum pname, GLfixed param ) + + public native void glFogx( + int pname, + int param + ); + + // C function void glFogxv ( GLenum pname, const GLfixed *params ) + + public native void glFogxv( + int pname, + int[] params, + int offset + ); + + // C function void glFogxv ( GLenum pname, const GLfixed *params ) + + public native void glFogxv( + int pname, + java.nio.IntBuffer params + ); + + // C function void glFrontFace ( GLenum mode ) + + public native void glFrontFace( + int mode + ); + + // C function void glFrustumf ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) + + public native void glFrustumf( + float left, + float right, + float bottom, + float top, + float zNear, + float zFar + ); + + // C function void glFrustumx ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) + + public native void glFrustumx( + int left, + int right, + int bottom, + int top, + int zNear, + int zFar + ); + + // C function void glGenTextures ( GLsizei n, GLuint *textures ) + + public native void glGenTextures( + int n, + int[] textures, + int offset + ); + + // C function void glGenTextures ( GLsizei n, GLuint *textures ) + + public native void glGenTextures( + int n, + java.nio.IntBuffer textures + ); + + // C function GLenum glGetError ( void ) + + public native int glGetError( + ); + + // C function void glGetIntegerv ( GLenum pname, GLint *params ) + + public native void glGetIntegerv( + int pname, + int[] params, + int offset + ); + + // C function void glGetIntegerv ( GLenum pname, GLint *params ) + + public native void glGetIntegerv( + int pname, + java.nio.IntBuffer params + ); + + // C function const GLubyte * glGetString ( GLenum name ) + + public native String _glGetString( + int name + ); + + public String glGetString( + int name + ) {/* + String returnValue; + returnValue = _glGetString( + name + ); + return returnValue;*/ + return "FIXME"; + } + + // C function void glHint ( GLenum target, GLenum mode ) + + public native void glHint( + int target, + int mode + ); + + // C function void glLightModelf ( GLenum pname, GLfloat param ) + + public native void glLightModelf( + int pname, + float param + ); + + // C function void glLightModelfv ( GLenum pname, const GLfloat *params ) + + public native void glLightModelfv( + int pname, + float[] params, + int offset + ); + + // C function void glLightModelfv ( GLenum pname, const GLfloat *params ) + + public native void glLightModelfv( + int pname, + java.nio.FloatBuffer params + ); + + // C function void glLightModelx ( GLenum pname, GLfixed param ) + + public native void glLightModelx( + int pname, + int param + ); + + // C function void glLightModelxv ( GLenum pname, const GLfixed *params ) + + public native void glLightModelxv( + int pname, + int[] params, + int offset + ); + + // C function void glLightModelxv ( GLenum pname, const GLfixed *params ) + + public native void glLightModelxv( + int pname, + java.nio.IntBuffer params + ); + + // C function void glLightf ( GLenum light, GLenum pname, GLfloat param ) + + public native void glLightf( + int light, + int pname, + float param + ); + + // C function void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) + + public native void glLightfv( + int light, + int pname, + float[] params, + int offset + ); + + // C function void glLightfv ( GLenum light, GLenum pname, const GLfloat *params ) + + public native void glLightfv( + int light, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glLightx ( GLenum light, GLenum pname, GLfixed param ) + + public native void glLightx( + int light, + int pname, + int param + ); + + // C function void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) + + public native void glLightxv( + int light, + int pname, + int[] params, + int offset + ); + + // C function void glLightxv ( GLenum light, GLenum pname, const GLfixed *params ) + + public native void glLightxv( + int light, + int pname, + java.nio.IntBuffer params + ); + + // C function void glLineWidth ( GLfloat width ) + + public native void glLineWidth( + float width + ); + + // C function void glLineWidthx ( GLfixed width ) + + public native void glLineWidthx( + int width + ); + + // C function void glLoadIdentity ( void ) + + public native void glLoadIdentity( + ); + + // C function void glLoadMatrixf ( const GLfloat *m ) + + public native void glLoadMatrixf( + float[] m, + int offset + ); + + // C function void glLoadMatrixf ( const GLfloat *m ) + + public native void glLoadMatrixf( + java.nio.FloatBuffer m + ); + + // C function void glLoadMatrixx ( const GLfixed *m ) + + public native void glLoadMatrixx( + int[] m, + int offset + ); + + // C function void glLoadMatrixx ( const GLfixed *m ) + + public native void glLoadMatrixx( + java.nio.IntBuffer m + ); + + // C function void glLogicOp ( GLenum opcode ) + + public native void glLogicOp( + int opcode + ); + + // C function void glMaterialf ( GLenum face, GLenum pname, GLfloat param ) + + public native void glMaterialf( + int face, + int pname, + float param + ); + + // C function void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) + + public native void glMaterialfv( + int face, + int pname, + float[] params, + int offset + ); + + // C function void glMaterialfv ( GLenum face, GLenum pname, const GLfloat *params ) + + public native void glMaterialfv( + int face, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glMaterialx ( GLenum face, GLenum pname, GLfixed param ) + + public native void glMaterialx( + int face, + int pname, + int param + ); + + // C function void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) + + public native void glMaterialxv( + int face, + int pname, + int[] params, + int offset + ); + + // C function void glMaterialxv ( GLenum face, GLenum pname, const GLfixed *params ) + + public native void glMaterialxv( + int face, + int pname, + java.nio.IntBuffer params + ); + + // C function void glMatrixMode ( GLenum mode ) + + public native void glMatrixMode( + int mode + ); + + // C function void glMultMatrixf ( const GLfloat *m ) + + public native void glMultMatrixf( + float[] m, + int offset + ); + + // C function void glMultMatrixf ( const GLfloat *m ) + + public native void glMultMatrixf( + java.nio.FloatBuffer m + ); + + // C function void glMultMatrixx ( const GLfixed *m ) + + public native void glMultMatrixx( + int[] m, + int offset + ); + + // C function void glMultMatrixx ( const GLfixed *m ) + + public native void glMultMatrixx( + java.nio.IntBuffer m + ); + + // C function void glMultiTexCoord4f ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) + + public native void glMultiTexCoord4f( + int target, + float s, + float t, + float r, + float q + ); + + // C function void glMultiTexCoord4x ( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q ) + + public native void glMultiTexCoord4x( + int target, + int s, + int t, + int r, + int q + ); + + // C function void glNormal3f ( GLfloat nx, GLfloat ny, GLfloat nz ) + + public native void glNormal3f( + float nx, + float ny, + float nz + ); + + // C function void glNormal3x ( GLfixed nx, GLfixed ny, GLfixed nz ) + + public native void glNormal3x( + int nx, + int ny, + int nz + ); + + // C function void glNormalPointer ( GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glNormalPointerBounds( + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glNormalPointer( + int type, + int stride, + java.nio.Buffer pointer + ) { + glNormalPointerBounds( + type, + stride, + pointer, + pointer.remaining() + ); + if (((type == GL_FLOAT) || + (type == GL_BYTE) || + (type == GL_SHORT) || + (type == GL_FIXED)) && + (stride >= 0)) { + _normalPointer = pointer; + } + } + + // C function void glOrthof ( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar ) + + public native void glOrthof( + float left, + float right, + float bottom, + float top, + float zNear, + float zFar + ); + + // C function void glOrthox ( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar ) + + public native void glOrthox( + int left, + int right, + int bottom, + int top, + int zNear, + int zFar + ); + + // C function void glPixelStorei ( GLenum pname, GLint param ) + + public native void glPixelStorei( + int pname, + int param + ); + + // C function void glPointSize ( GLfloat size ) + + public native void glPointSize( + float size + ); + + // C function void glPointSizex ( GLfixed size ) + + public native void glPointSizex( + int size + ); + + // C function void glPolygonOffset ( GLfloat factor, GLfloat units ) + + public native void glPolygonOffset( + float factor, + float units + ); + + // C function void glPolygonOffsetx ( GLfixed factor, GLfixed units ) + + public native void glPolygonOffsetx( + int factor, + int units + ); + + // C function void glPopMatrix ( void ) + + public native void glPopMatrix( + ); + + // C function void glPushMatrix ( void ) + + public native void glPushMatrix( + ); + + // C function void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) + + public native void glReadPixels( + int x, + int y, + int width, + int height, + int format, + int type, + java.nio.Buffer pixels + ); + + // C function void glRotatef ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) + + public native void glRotatef( + float angle, + float x, + float y, + float z + ); + + // C function void glRotatex ( GLfixed angle, GLfixed x, GLfixed y, GLfixed z ) + + public native void glRotatex( + int angle, + int x, + int y, + int z + ); + + // C function void glSampleCoverage ( GLclampf value, GLboolean invert ) + + public native void glSampleCoverage( + float value, + boolean invert + ); + + // C function void glSampleCoveragex ( GLclampx value, GLboolean invert ) + + public native void glSampleCoveragex( + int value, + boolean invert + ); + + // C function void glScalef ( GLfloat x, GLfloat y, GLfloat z ) + + public native void glScalef( + float x, + float y, + float z + ); + + // C function void glScalex ( GLfixed x, GLfixed y, GLfixed z ) + + public native void glScalex( + int x, + int y, + int z + ); + + // C function void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) + + public native void glScissor( + int x, + int y, + int width, + int height + ); + + // C function void glShadeModel ( GLenum mode ) + + public native void glShadeModel( + int mode + ); + + // C function void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) + + public native void glStencilFunc( + int func, + int ref, + int mask + ); + + // C function void glStencilMask ( GLuint mask ) + + public native void glStencilMask( + int mask + ); + + // C function void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) + + public native void glStencilOp( + int fail, + int zfail, + int zpass + ); + + // C function void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glTexCoordPointerBounds( + int size, + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glTexCoordPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ) { + glTexCoordPointerBounds( + size, + type, + stride, + pointer, + pointer.remaining() + ); + if (((size == 2) || + (size == 3) || + (size == 4)) && + ((type == GL_FLOAT) || + (type == GL_BYTE) || + (type == GL_SHORT) || + (type == GL_FIXED)) && + (stride >= 0)) { + _texCoordPointer = pointer; + } + } + + // C function void glTexEnvf ( GLenum target, GLenum pname, GLfloat param ) + + public native void glTexEnvf( + int target, + int pname, + float param + ); + + // C function void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) + + public native void glTexEnvfv( + int target, + int pname, + float[] params, + int offset + ); + + // C function void glTexEnvfv ( GLenum target, GLenum pname, const GLfloat *params ) + + public native void glTexEnvfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glTexEnvx ( GLenum target, GLenum pname, GLfixed param ) + + public native void glTexEnvx( + int target, + int pname, + int param + ); + + // C function void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) + + public native void glTexEnvxv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glTexEnvxv ( GLenum target, GLenum pname, const GLfixed *params ) + + public native void glTexEnvxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) + + public native void glTexImage2D( + int target, + int level, + int internalformat, + int width, + int height, + int border, + int format, + int type, + java.nio.Buffer pixels + ); + + // C function void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) + + public native void glTexParameterf( + int target, + int pname, + float param + ); + + // C function void glTexParameterx ( GLenum target, GLenum pname, GLfixed param ) + + public native void glTexParameterx( + int target, + int pname, + int param + ); + + // C function void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) + + public native void glTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int width, + int height, + int format, + int type, + java.nio.Buffer pixels + ); + + // C function void glTranslatef ( GLfloat x, GLfloat y, GLfloat z ) + + public native void glTranslatef( + float x, + float y, + float z + ); + + // C function void glTranslatex ( GLfixed x, GLfixed y, GLfixed z ) + + public native void glTranslatex( + int x, + int y, + int z + ); + + // C function void glVertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glVertexPointerBounds( + int size, + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glVertexPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ) { + glVertexPointerBounds( + size, + type, + stride, + pointer, + pointer.remaining() + ); + if (((size == 2) || + (size == 3) || + (size == 4)) && + ((type == GL_FLOAT) || + (type == GL_BYTE) || + (type == GL_SHORT) || + (type == GL_FIXED)) && + (stride >= 0)) { + _vertexPointer = pointer; + } + } + + // C function void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) + + public native void glViewport( + int x, + int y, + int width, + int height + ); + + // C function GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) + + public native int glQueryMatrixxOES( + int[] mantissa, + int mantissaOffset, + int[] exponent, + int exponentOffset + ); + + // C function GLbitfield glQueryMatrixxOES ( GLfixed *mantissa, GLint *exponent ) + + public native int glQueryMatrixxOES( + java.nio.IntBuffer mantissa, + java.nio.IntBuffer exponent + ); + + // C function void glBindBuffer ( GLenum target, GLuint buffer ) + + public native void glBindBuffer( + int target, + int buffer + ); + + // C function void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) + + public native void glBufferData( + int target, + int size, + java.nio.Buffer data, + int usage + ); + + // C function void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) + + public native void glBufferSubData( + int target, + int offset, + int size, + java.nio.Buffer data + ); + + // C function void glClipPlanef ( GLenum plane, const GLfloat *equation ) + + public native void glClipPlanef( + int plane, + float[] equation, + int offset + ); + + // C function void glClipPlanef ( GLenum plane, const GLfloat *equation ) + + public native void glClipPlanef( + int plane, + java.nio.FloatBuffer equation + ); + + // C function void glClipPlanex ( GLenum plane, const GLfixed *equation ) + + public native void glClipPlanex( + int plane, + int[] equation, + int offset + ); + + // C function void glClipPlanex ( GLenum plane, const GLfixed *equation ) + + public native void glClipPlanex( + int plane, + java.nio.IntBuffer equation + ); + + // C function void glColor4ub ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) + + public native void glColor4ub( + byte red, + byte green, + byte blue, + byte alpha + ); + + // C function void glColorPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) + + public native void glColorPointer( + int size, + int type, + int stride, + int offset + ); + + // C function void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) + + public native void glDeleteBuffers( + int n, + int[] buffers, + int offset + ); + + // C function void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) + + public native void glDeleteBuffers( + int n, + java.nio.IntBuffer buffers + ); + + // C function void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) + + public native void glDrawElements( + int mode, + int count, + int type, + int offset + ); + + // C function void glGenBuffers ( GLsizei n, GLuint *buffers ) + + public native void glGenBuffers( + int n, + int[] buffers, + int offset + ); + + // C function void glGenBuffers ( GLsizei n, GLuint *buffers ) + + public native void glGenBuffers( + int n, + java.nio.IntBuffer buffers + ); + + // C function void glGetBooleanv ( GLenum pname, GLboolean *params ) + + public native void glGetBooleanv( + int pname, + boolean[] params, + int offset + ); + + // C function void glGetBooleanv ( GLenum pname, GLboolean *params ) + + public native void glGetBooleanv( + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) + + public native void glGetBufferParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) + + public native void glGetBufferParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) + + public native void glGetClipPlanef( + int pname, + float[] eqn, + int offset + ); + + // C function void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) + + public native void glGetClipPlanef( + int pname, + java.nio.FloatBuffer eqn + ); + + // C function void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) + + public native void glGetClipPlanex( + int pname, + int[] eqn, + int offset + ); + + // C function void glGetClipPlanex ( GLenum pname, GLfixed *eqn ) + + public native void glGetClipPlanex( + int pname, + java.nio.IntBuffer eqn + ); + + // C function void glGetFixedv ( GLenum pname, GLfixed *params ) + + public native void glGetFixedv( + int pname, + int[] params, + int offset + ); + + // C function void glGetFixedv ( GLenum pname, GLfixed *params ) + + public native void glGetFixedv( + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetFloatv ( GLenum pname, GLfloat *params ) + + public native void glGetFloatv( + int pname, + float[] params, + int offset + ); + + // C function void glGetFloatv ( GLenum pname, GLfloat *params ) + + public native void glGetFloatv( + int pname, + java.nio.FloatBuffer params + ); + + // C function void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) + + public native void glGetLightfv( + int light, + int pname, + float[] params, + int offset + ); + + // C function void glGetLightfv ( GLenum light, GLenum pname, GLfloat *params ) + + public native void glGetLightfv( + int light, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) + + public native void glGetLightxv( + int light, + int pname, + int[] params, + int offset + ); + + // C function void glGetLightxv ( GLenum light, GLenum pname, GLfixed *params ) + + public native void glGetLightxv( + int light, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) + + public native void glGetMaterialfv( + int face, + int pname, + float[] params, + int offset + ); + + // C function void glGetMaterialfv ( GLenum face, GLenum pname, GLfloat *params ) + + public native void glGetMaterialfv( + int face, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) + + public native void glGetMaterialxv( + int face, + int pname, + int[] params, + int offset + ); + + // C function void glGetMaterialxv ( GLenum face, GLenum pname, GLfixed *params ) + + public native void glGetMaterialxv( + int face, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) + + public native void glGetTexEnviv( + int env, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexEnviv ( GLenum env, GLenum pname, GLint *params ) + + public native void glGetTexEnviv( + int env, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) + + public native void glGetTexEnvxv( + int env, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexEnvxv ( GLenum env, GLenum pname, GLfixed *params ) + + public native void glGetTexEnvxv( + int env, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) + + public native void glGetTexParameterfv( + int target, + int pname, + float[] params, + int offset + ); + + // C function void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) + + public native void glGetTexParameterfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) + + public native void glGetTexParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) + + public native void glGetTexParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) + + public native void glGetTexParameterxv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexParameterxv ( GLenum target, GLenum pname, GLfixed *params ) + + public native void glGetTexParameterxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function GLboolean glIsBuffer ( GLuint buffer ) + + public native boolean glIsBuffer( + int buffer + ); + + // C function GLboolean glIsEnabled ( GLenum cap ) + + public native boolean glIsEnabled( + int cap + ); + + // C function GLboolean glIsTexture ( GLuint texture ) + + public native boolean glIsTexture( + int texture + ); + + // C function void glNormalPointer ( GLenum type, GLsizei stride, GLint offset ) + + public native void glNormalPointer( + int type, + int stride, + int offset + ); + + // C function void glPointParameterf ( GLenum pname, GLfloat param ) + + public native void glPointParameterf( + int pname, + float param + ); + + // C function void glPointParameterfv ( GLenum pname, const GLfloat *params ) + + public native void glPointParameterfv( + int pname, + float[] params, + int offset + ); + + // C function void glPointParameterfv ( GLenum pname, const GLfloat *params ) + + public native void glPointParameterfv( + int pname, + java.nio.FloatBuffer params + ); + + // C function void glPointParameterx ( GLenum pname, GLfixed param ) + + public native void glPointParameterx( + int pname, + int param + ); + + // C function void glPointParameterxv ( GLenum pname, const GLfixed *params ) + + public native void glPointParameterxv( + int pname, + int[] params, + int offset + ); + + // C function void glPointParameterxv ( GLenum pname, const GLfixed *params ) + + public native void glPointParameterxv( + int pname, + java.nio.IntBuffer params + ); + + // C function void glPointSizePointerOES ( GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glPointSizePointerOESBounds( + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glPointSizePointerOES( + int type, + int stride, + java.nio.Buffer pointer + ) { + glPointSizePointerOESBounds( + type, + stride, + pointer, + pointer.remaining() + ); + if (((type == GL_FLOAT) || + (type == GL_FIXED)) && + (stride >= 0)) { + _pointSizePointerOES = pointer; + } + } + + // C function void glTexCoordPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) + + public native void glTexCoordPointer( + int size, + int type, + int stride, + int offset + ); + + // C function void glTexEnvi ( GLenum target, GLenum pname, GLint param ) + + public native void glTexEnvi( + int target, + int pname, + int param + ); + + // C function void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) + + public native void glTexEnviv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glTexEnviv ( GLenum target, GLenum pname, const GLint *params ) + + public native void glTexEnviv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) + + public native void glTexParameterfv( + int target, + int pname, + float[] params, + int offset + ); + + // C function void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) + + public native void glTexParameterfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glTexParameteri ( GLenum target, GLenum pname, GLint param ) + + public native void glTexParameteri( + int target, + int pname, + int param + ); + + // C function void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) + + public native void glTexParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) + + public native void glTexParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) + + public native void glTexParameterxv( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glTexParameterxv ( GLenum target, GLenum pname, const GLfixed *params ) + + public native void glTexParameterxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glVertexPointer ( GLint size, GLenum type, GLsizei stride, GLint offset ) + + public native void glVertexPointer( + int size, + int type, + int stride, + int offset + ); + + // C function void glCurrentPaletteMatrixOES ( GLuint matrixpaletteindex ) + + public native void glCurrentPaletteMatrixOES( + int matrixpaletteindex + ); + + // C function void glDrawTexfOES ( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height ) + + public native void glDrawTexfOES( + float x, + float y, + float z, + float width, + float height + ); + + // C function void glDrawTexfvOES ( const GLfloat *coords ) + + public native void glDrawTexfvOES( + float[] coords, + int offset + ); + + // C function void glDrawTexfvOES ( const GLfloat *coords ) + + public native void glDrawTexfvOES( + java.nio.FloatBuffer coords + ); + + // C function void glDrawTexiOES ( GLint x, GLint y, GLint z, GLint width, GLint height ) + + public native void glDrawTexiOES( + int x, + int y, + int z, + int width, + int height + ); + + // C function void glDrawTexivOES ( const GLint *coords ) + + public native void glDrawTexivOES( + int[] coords, + int offset + ); + + // C function void glDrawTexivOES ( const GLint *coords ) + + public native void glDrawTexivOES( + java.nio.IntBuffer coords + ); + + // C function void glDrawTexsOES ( GLshort x, GLshort y, GLshort z, GLshort width, GLshort height ) + + public native void glDrawTexsOES( + short x, + short y, + short z, + short width, + short height + ); + + // C function void glDrawTexsvOES ( const GLshort *coords ) + + public native void glDrawTexsvOES( + short[] coords, + int offset + ); + + // C function void glDrawTexsvOES ( const GLshort *coords ) + + public native void glDrawTexsvOES( + java.nio.ShortBuffer coords + ); + + // C function void glDrawTexxOES ( GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height ) + + public native void glDrawTexxOES( + int x, + int y, + int z, + int width, + int height + ); + + // C function void glDrawTexxvOES ( const GLfixed *coords ) + + public native void glDrawTexxvOES( + int[] coords, + int offset + ); + + // C function void glDrawTexxvOES ( const GLfixed *coords ) + + public native void glDrawTexxvOES( + java.nio.IntBuffer coords + ); + + // C function void glLoadPaletteFromModelViewMatrixOES ( void ) + + public native void glLoadPaletteFromModelViewMatrixOES( + ); + + // C function void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glMatrixIndexPointerOESBounds( + int size, + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glMatrixIndexPointerOES( + int size, + int type, + int stride, + java.nio.Buffer pointer + ) { + glMatrixIndexPointerOESBounds( + size, + type, + stride, + pointer, + pointer.remaining() + ); + if (((size == 2) || + (size == 3) || + (size == 4)) && + ((type == GL_FLOAT) || + (type == GL_BYTE) || + (type == GL_SHORT) || + (type == GL_FIXED)) && + (stride >= 0)) { + _matrixIndexPointerOES = pointer; + } + } + + // C function void glMatrixIndexPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) + + public native void glMatrixIndexPointerOES( + int size, + int type, + int stride, + int offset + ); + + // C function void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) + + private native void glWeightPointerOESBounds( + int size, + int type, + int stride, + java.nio.Buffer pointer, + int remaining + ); + + public void glWeightPointerOES( + int size, + int type, + int stride, + java.nio.Buffer pointer + ) { + glWeightPointerOESBounds( + size, + type, + stride, + pointer, + pointer.remaining() + ); + } + + // C function void glWeightPointerOES ( GLint size, GLenum type, GLsizei stride, GLint offset ) + + public native void glWeightPointerOES( + int size, + int type, + int stride, + int offset + ); + + // C function void glBindFramebufferOES ( GLint target, GLint framebuffer ) + + public native void glBindFramebufferOES( + int target, + int framebuffer + ); + + // C function void glBindRenderbufferOES ( GLint target, GLint renderbuffer ) + + public native void glBindRenderbufferOES( + int target, + int renderbuffer + ); + + // C function void glBlendEquation ( GLint mode ) + + public native void glBlendEquation( + int mode + ); + + // C function void glBlendEquationSeparate ( GLint modeRGB, GLint modeAlpha ) + + public native void glBlendEquationSeparate( + int modeRGB, + int modeAlpha + ); + + // C function void glBlendFuncSeparate ( GLint srcRGB, GLint dstRGB, GLint srcAlpha, GLint dstAlpha ) + + public native void glBlendFuncSeparate( + int srcRGB, + int dstRGB, + int srcAlpha, + int dstAlpha + ); + + // C function GLint glCheckFramebufferStatusOES ( GLint target ) + + public native int glCheckFramebufferStatusOES( + int target + ); + + // C function void glDeleteFramebuffersOES ( GLint n, GLuint *framebuffers ) + + public native void glDeleteFramebuffersOES( + int n, + int[] framebuffers, + int offset + ); + + // C function void glDeleteFramebuffersOES ( GLint n, GLuint *framebuffers ) + + public native void glDeleteFramebuffersOES( + int n, + java.nio.IntBuffer framebuffers + ); + + // C function void glDeleteRenderbuffersOES ( GLint n, GLuint *renderbuffers ) + + public native void glDeleteRenderbuffersOES( + int n, + int[] renderbuffers, + int offset + ); + + // C function void glDeleteRenderbuffersOES ( GLint n, GLuint *renderbuffers ) + + public native void glDeleteRenderbuffersOES( + int n, + java.nio.IntBuffer renderbuffers + ); + + // C function void glFramebufferRenderbufferOES ( GLint target, GLint attachment, GLint renderbuffertarget, GLint renderbuffer ) + + public native void glFramebufferRenderbufferOES( + int target, + int attachment, + int renderbuffertarget, + int renderbuffer + ); + + // C function void glFramebufferTexture2DOES ( GLint target, GLint attachment, GLint textarget, GLint texture, GLint level ) + + public native void glFramebufferTexture2DOES( + int target, + int attachment, + int textarget, + int texture, + int level + ); + + // C function void glGenerateMipmapOES ( GLint target ) + + public native void glGenerateMipmapOES( + int target + ); + + // C function void glGenFramebuffersOES ( GLint n, GLuint *framebuffers ) + + public native void glGenFramebuffersOES( + int n, + int[] framebuffers, + int offset + ); + + // C function void glGenFramebuffersOES ( GLint n, GLuint *framebuffers ) + + public native void glGenFramebuffersOES( + int n, + java.nio.IntBuffer framebuffers + ); + + // C function void glGenRenderbuffersOES ( GLint n, GLuint *renderbuffers ) + + public native void glGenRenderbuffersOES( + int n, + int[] renderbuffers, + int offset + ); + + // C function void glGenRenderbuffersOES ( GLint n, GLuint *renderbuffers ) + + public native void glGenRenderbuffersOES( + int n, + java.nio.IntBuffer renderbuffers + ); + + // C function void glGetFramebufferAttachmentParameterivOES ( GLint target, GLint attachment, GLint pname, GLint *params ) + + public native void glGetFramebufferAttachmentParameterivOES( + int target, + int attachment, + int pname, + int[] params, + int offset + ); + + // C function void glGetFramebufferAttachmentParameterivOES ( GLint target, GLint attachment, GLint pname, GLint *params ) + + public native void glGetFramebufferAttachmentParameterivOES( + int target, + int attachment, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetRenderbufferParameterivOES ( GLint target, GLint pname, GLint *params ) + + public native void glGetRenderbufferParameterivOES( + int target, + int pname, + int[] params, + int offset + ); + + // C function void glGetRenderbufferParameterivOES ( GLint target, GLint pname, GLint *params ) + + public native void glGetRenderbufferParameterivOES( + int target, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexGenfv ( GLint coord, GLint pname, GLfloat *params ) + + public native void glGetTexGenfv( + int coord, + int pname, + float[] params, + int offset + ); + + // C function void glGetTexGenfv ( GLint coord, GLint pname, GLfloat *params ) + + public native void glGetTexGenfv( + int coord, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glGetTexGeniv ( GLint coord, GLint pname, GLint *params ) + + public native void glGetTexGeniv( + int coord, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexGeniv ( GLint coord, GLint pname, GLint *params ) + + public native void glGetTexGeniv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + // C function void glGetTexGenxv ( GLint coord, GLint pname, GLint *params ) + + public native void glGetTexGenxv( + int coord, + int pname, + int[] params, + int offset + ); + + // C function void glGetTexGenxv ( GLint coord, GLint pname, GLint *params ) + + public native void glGetTexGenxv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + // C function GLboolean glIsFramebufferOES ( GLint framebuffer ) + + public native boolean glIsFramebufferOES( + int framebuffer + ); + + // C function GLboolean glIsRenderbufferOES ( GLint renderbuffer ) + + public native boolean glIsRenderbufferOES( + int renderbuffer + ); + + // C function void glRenderbufferStorageOES ( GLint target, GLint internalformat, GLint width, GLint height ) + + public native void glRenderbufferStorageOES( + int target, + int internalformat, + int width, + int height + ); + + // C function void glTexGenf ( GLint coord, GLint pname, GLfloat param ) + + public native void glTexGenf( + int coord, + int pname, + float param + ); + + // C function void glTexGenfv ( GLint coord, GLint pname, GLfloat *params ) + + public native void glTexGenfv( + int coord, + int pname, + float[] params, + int offset + ); + + // C function void glTexGenfv ( GLint coord, GLint pname, GLfloat *params ) + + public native void glTexGenfv( + int coord, + int pname, + java.nio.FloatBuffer params + ); + + // C function void glTexGeni ( GLint coord, GLint pname, GLint param ) + + public native void glTexGeni( + int coord, + int pname, + int param + ); + + // C function void glTexGeniv ( GLint coord, GLint pname, GLint *params ) + + public native void glTexGeniv( + int coord, + int pname, + int[] params, + int offset + ); + + // C function void glTexGeniv ( GLint coord, GLint pname, GLint *params ) + + public native void glTexGeniv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + // C function void glTexGenx ( GLint coord, GLint pname, GLint param ) + + public native void glTexGenx( + int coord, + int pname, + int param + ); + + // C function void glTexGenxv ( GLint coord, GLint pname, GLint *params ) + + public native void glTexGenxv( + int coord, + int pname, + int[] params, + int offset + ); + + // C function void glTexGenxv ( GLint coord, GLint pname, GLint *params ) + + public native void glTexGenxv( + int coord, + int pname, + java.nio.IntBuffer params + ); + +} diff --git a/src/api-impl/com/google/android/vending/licensing/LicenseChecker.java b/src/api-impl/com/google/android/vending/licensing/LicenseChecker.java new file mode 100644 index 00000000..e061cac4 --- /dev/null +++ b/src/api-impl/com/google/android/vending/licensing/LicenseChecker.java @@ -0,0 +1,15 @@ +package com.google.android.vending.licensing; + +import android.content.Context; + +public class LicenseChecker { + public LicenseChecker(Context context, Policy policy, String encodedPublicKey) { + // TODO: do something here? + } + + public synchronized void checkAccess(LicenseCheckerCallback callback) { + // this is not ideal, but it doesn't make sense to spend much effort on doing this "properly" when the effort required to bypass this doesn't scale with the effort spent by us + // also, it might not be possible to do this "properly" without having the real google play store in the equation, which is not desirable for a multitude of reasons... + callback.allow(0x0100/*Policy.LICENSED*/); + } +} diff --git a/src/api-impl/com/google/android/vending/licensing/LicenseCheckerCallback.java b/src/api-impl/com/google/android/vending/licensing/LicenseCheckerCallback.java new file mode 100644 index 00000000..34d88044 --- /dev/null +++ b/src/api-impl/com/google/android/vending/licensing/LicenseCheckerCallback.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.vending.licensing; + +/** + * Callback for the license checker library. + *

+ * Upon checking with the Market server and conferring with the {@link Policy}, + * the library calls the appropriate callback method to communicate the result. + *

+ * The callback does not occur in the original checking thread. Your + * application should post to the appropriate handling thread or lock + * accordingly. + *

+ * The reason that is passed back with allow/dontAllow is the base status handed + * to the policy for allowed/disallowing the license. Policy.RETRY will call + * allow or dontAllow depending on other statistics associated with the policy, + * while in most cases Policy.NOT_LICENSED will call dontAllow and + * Policy.LICENSED will Allow. + */ +public interface LicenseCheckerCallback { + + /** + * Allow use. App should proceed as normal. + * + * @param reason Policy.LICENSED or Policy.RETRY typically. (although in + * theory the policy can return Policy.NOT_LICENSED here as well) + */ + public void allow(int reason); + + /** + * Don't allow use. App should inform user and take appropriate action. + * + * @param reason Policy.NOT_LICENSED or Policy.RETRY. (although in theory + * the policy can return Policy.LICENSED here as well --- + * perhaps the call to the LVL took too long, for example) + */ + public void dontAllow(int reason); + + /** Application error codes. */ + public static final int ERROR_INVALID_PACKAGE_NAME = 1; + public static final int ERROR_NON_MATCHING_UID = 2; + public static final int ERROR_NOT_MARKET_MANAGED = 3; + public static final int ERROR_CHECK_IN_PROGRESS = 4; + public static final int ERROR_INVALID_PUBLIC_KEY = 5; + public static final int ERROR_MISSING_PERMISSION = 6; + + /** + * Error in application code. Caller did not call or set up license checker + * correctly. Should be considered fatal. + */ + public void applicationError(int errorCode); +} + diff --git a/src/api-impl/com/google/android/vending/licensing/Policy.java b/src/api-impl/com/google/android/vending/licensing/Policy.java new file mode 100644 index 00000000..8338e2e4 --- /dev/null +++ b/src/api-impl/com/google/android/vending/licensing/Policy.java @@ -0,0 +1,5 @@ +package com.google.android.vending.licensing; + +public interface Policy { + +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGL.java b/src/api-impl/javax/microedition/khronos/egl/EGL.java new file mode 100644 index 00000000..18f8ae63 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGL.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2006 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 javax.microedition.khronos.egl; + +public interface EGL { +} + diff --git a/src/api-impl/javax/microedition/khronos/egl/EGL10.java b/src/api-impl/javax/microedition/khronos/egl/EGL10.java new file mode 100644 index 00000000..936f6c55 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGL10.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2006 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 javax.microedition.khronos.egl; + +import java.lang.String; + +public interface EGL10 extends EGL { + int EGL_SUCCESS = 0x3000; + int EGL_NOT_INITIALIZED = 0x3001; + int EGL_BAD_ACCESS = 0x3002; + int EGL_BAD_ALLOC = 0x3003; + int EGL_BAD_ATTRIBUTE = 0x3004; + int EGL_BAD_CONFIG = 0x3005; + int EGL_BAD_CONTEXT = 0x3006; + int EGL_BAD_CURRENT_SURFACE = 0x3007; + int EGL_BAD_DISPLAY = 0x3008; + int EGL_BAD_MATCH = 0x3009; + int EGL_BAD_NATIVE_PIXMAP = 0x300A; + int EGL_BAD_NATIVE_WINDOW = 0x300B; + int EGL_BAD_PARAMETER = 0x300C; + int EGL_BAD_SURFACE = 0x300D; + int EGL_BUFFER_SIZE = 0x3020; + int EGL_ALPHA_SIZE = 0x3021; + int EGL_BLUE_SIZE = 0x3022; + int EGL_GREEN_SIZE = 0x3023; + int EGL_RED_SIZE = 0x3024; + int EGL_DEPTH_SIZE = 0x3025; + int EGL_STENCIL_SIZE = 0x3026; + int EGL_CONFIG_CAVEAT = 0x3027; + int EGL_CONFIG_ID = 0x3028; + int EGL_LEVEL = 0x3029; + int EGL_MAX_PBUFFER_HEIGHT = 0x302A; + int EGL_MAX_PBUFFER_PIXELS = 0x302B; + int EGL_MAX_PBUFFER_WIDTH = 0x302C; + int EGL_NATIVE_RENDERABLE = 0x302D; + int EGL_NATIVE_VISUAL_ID = 0x302E; + int EGL_NATIVE_VISUAL_TYPE = 0x302F; + int EGL_SAMPLES = 0x3031; + int EGL_SAMPLE_BUFFERS = 0x3032; + int EGL_SURFACE_TYPE = 0x3033; + int EGL_TRANSPARENT_TYPE = 0x3034; + int EGL_TRANSPARENT_BLUE_VALUE = 0x3035; + int EGL_TRANSPARENT_GREEN_VALUE = 0x3036; + int EGL_TRANSPARENT_RED_VALUE = 0x3037; + int EGL_NONE = 0x3038; + int EGL_LUMINANCE_SIZE = 0x303D; + int EGL_ALPHA_MASK_SIZE = 0x303E; + int EGL_COLOR_BUFFER_TYPE = 0x303F; + int EGL_RENDERABLE_TYPE = 0x3040; + int EGL_SLOW_CONFIG = 0x3050; + int EGL_NON_CONFORMANT_CONFIG = 0x3051; + int EGL_TRANSPARENT_RGB = 0x3052; + int EGL_RGB_BUFFER = 0x308E; + int EGL_LUMINANCE_BUFFER = 0x308F; + int EGL_VENDOR = 0x3053; + int EGL_VERSION = 0x3054; + int EGL_EXTENSIONS = 0x3055; + int EGL_HEIGHT = 0x3056; + int EGL_WIDTH = 0x3057; + int EGL_LARGEST_PBUFFER = 0x3058; + int EGL_RENDER_BUFFER = 0x3086; + int EGL_COLORSPACE = 0x3087; + int EGL_ALPHA_FORMAT = 0x3088; + int EGL_HORIZONTAL_RESOLUTION = 0x3090; + int EGL_VERTICAL_RESOLUTION = 0x3091; + int EGL_PIXEL_ASPECT_RATIO = 0x3092; + int EGL_CONTEXT_CLIENT_VERSION = 0x3098; + int EGL_SINGLE_BUFFER = 0x3085; + int EGL_CORE_NATIVE_ENGINE = 0x305B; + int EGL_DRAW = 0x3059; + int EGL_READ = 0x305A; + + int EGL_DONT_CARE = -1; + + int EGL_PBUFFER_BIT = 0x01; + int EGL_PIXMAP_BIT = 0x02; + int EGL_WINDOW_BIT = 0x04; + + Object EGL_DEFAULT_DISPLAY = null; + EGLDisplay EGL_NO_DISPLAY = null;//new com.google.android.gles_jni.EGLDisplayImpl(0); + EGLContext EGL_NO_CONTEXT = null;//new com.google.android.gles_jni.EGLContextImpl(0); + EGLSurface EGL_NO_SURFACE = null;//new com.google.android.gles_jni.EGLSurfaceImpl(0); + + boolean eglChooseConfig(EGLDisplay display, int[] attrib_list, EGLConfig[] configs, int config_size, int[] num_config); + boolean eglCopyBuffers(EGLDisplay display, EGLSurface surface, Object native_pixmap); + EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list); + EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list); + EGLSurface eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list); + EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, Object native_window, int[] attrib_list); + boolean eglDestroyContext(EGLDisplay display, EGLContext context); + boolean eglDestroySurface(EGLDisplay display, EGLSurface surface); + boolean eglGetConfigAttrib(EGLDisplay display, EGLConfig config, int attribute, int[] value); + boolean eglGetConfigs(EGLDisplay display, EGLConfig[] configs, int config_size, int[] num_config); + EGLContext eglGetCurrentContext(); + EGLDisplay eglGetCurrentDisplay(); + EGLSurface eglGetCurrentSurface(int readdraw); + EGLDisplay eglGetDisplay(Object native_display); + int eglGetError(); + boolean eglInitialize(EGLDisplay display, int[] major_minor); + boolean eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context); + boolean eglQueryContext(EGLDisplay display, EGLContext context, int attribute, int[] value); + String eglQueryString(EGLDisplay display, int name); + boolean eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value); + /** @hide **/ + boolean eglReleaseThread(); + boolean eglSwapBuffers(EGLDisplay display, EGLSurface surface); + boolean eglTerminate(EGLDisplay display); + boolean eglWaitGL(); + boolean eglWaitNative(int engine, Object bindTarget); +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGL11.java b/src/api-impl/javax/microedition/khronos/egl/EGL11.java new file mode 100644 index 00000000..41d62e6b --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGL11.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2006 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 javax.microedition.khronos.egl; + +public interface EGL11 extends EGL10 { + int EGL_CONTEXT_LOST = 0x300E; +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGLConfig.java b/src/api-impl/javax/microedition/khronos/egl/EGLConfig.java new file mode 100644 index 00000000..37a5aeaf --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGLConfig.java @@ -0,0 +1,9 @@ +package javax.microedition.khronos.egl; + +public class EGLConfig { + public long native_egl_config = 0; + + public EGLConfig(long native_egl_config) { + this.native_egl_config = native_egl_config; + } +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGLContext.java b/src/api-impl/javax/microedition/khronos/egl/EGLContext.java new file mode 100644 index 00000000..d6e44983 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGLContext.java @@ -0,0 +1,23 @@ +package javax.microedition.khronos.egl; + +import javax.microedition.khronos.opengles.GL; + +public class EGLContext +{ + private static final EGL EGL_INSTANCE = new com.google.android.gles_jni.EGLImpl(); + private static final GL GL_INSTANCE = new com.google.android.gles_jni.GLImpl(); // FIXME - not all GLs are created equal + public long native_egl_context = 0; + + public static EGL getEGL() { + return EGL_INSTANCE; + } + + // FIXME - not all GLs are created equal + public static GL getGL() { + return GL_INSTANCE; + } + + public EGLContext(long native_egl_context) { + this.native_egl_context = native_egl_context; + } +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGLDisplay.java b/src/api-impl/javax/microedition/khronos/egl/EGLDisplay.java new file mode 100644 index 00000000..75ddfa59 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGLDisplay.java @@ -0,0 +1,9 @@ +package javax.microedition.khronos.egl; + +public class EGLDisplay { + public long native_egl_display = 0; + + public EGLDisplay(long native_egl_display) { + this.native_egl_display = native_egl_display; + } +} diff --git a/src/api-impl/javax/microedition/khronos/egl/EGLSurface.java b/src/api-impl/javax/microedition/khronos/egl/EGLSurface.java new file mode 100644 index 00000000..e1d08d36 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/egl/EGLSurface.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2006 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 javax.microedition.khronos.egl; + +public abstract class EGLSurface +{ +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL.java b/src/api-impl/javax/microedition/khronos/opengles/GL.java new file mode 100644 index 00000000..3b78f3d2 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL.java @@ -0,0 +1,22 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL.java +** +** Copyright 2006, 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 javax.microedition.khronos.opengles; + +public interface GL { +} + diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL10.java b/src/api-impl/javax/microedition/khronos/opengles/GL10.java new file mode 100644 index 00000000..4fcfb520 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL10.java @@ -0,0 +1,972 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL10.java +** +** Copyright 2006, 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. +*/ + +// This source file is automatically generated + +package javax.microedition.khronos.opengles; + +public interface GL10 extends GL { + int GL_ADD = 0x0104; + int GL_ALIASED_LINE_WIDTH_RANGE = 0x846E; + int GL_ALIASED_POINT_SIZE_RANGE = 0x846D; + int GL_ALPHA = 0x1906; + int GL_ALPHA_BITS = 0x0D55; + int GL_ALPHA_TEST = 0x0BC0; + int GL_ALWAYS = 0x0207; + int GL_AMBIENT = 0x1200; + int GL_AMBIENT_AND_DIFFUSE = 0x1602; + int GL_AND = 0x1501; + int GL_AND_INVERTED = 0x1504; + int GL_AND_REVERSE = 0x1502; + int GL_BACK = 0x0405; + int GL_BLEND = 0x0BE2; + int GL_BLUE_BITS = 0x0D54; + int GL_BYTE = 0x1400; + int GL_CCW = 0x0901; + int GL_CLAMP_TO_EDGE = 0x812F; + int GL_CLEAR = 0x1500; + int GL_COLOR_ARRAY = 0x8076; + int GL_COLOR_BUFFER_BIT = 0x4000; + int GL_COLOR_LOGIC_OP = 0x0BF2; + int GL_COLOR_MATERIAL = 0x0B57; + int GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3; + int GL_CONSTANT_ATTENUATION = 0x1207; + int GL_COPY = 0x1503; + int GL_COPY_INVERTED = 0x150C; + int GL_CULL_FACE = 0x0B44; + int GL_CW = 0x0900; + int GL_DECAL = 0x2101; + int GL_DECR = 0x1E03; + int GL_DEPTH_BITS = 0x0D56; + int GL_DEPTH_BUFFER_BIT = 0x0100; + int GL_DEPTH_TEST = 0x0B71; + int GL_DIFFUSE = 0x1201; + int GL_DITHER = 0x0BD0; + int GL_DONT_CARE = 0x1100; + int GL_DST_ALPHA = 0x0304; + int GL_DST_COLOR = 0x0306; + int GL_EMISSION = 0x1600; + int GL_EQUAL = 0x0202; + int GL_EQUIV = 0x1509; + int GL_EXP = 0x0800; + int GL_EXP2 = 0x0801; + int GL_EXTENSIONS = 0x1F03; + int GL_FALSE = 0; + int GL_FASTEST = 0x1101; + int GL_FIXED = 0x140C; + int GL_FLAT = 0x1D00; + int GL_FLOAT = 0x1406; + int GL_FOG = 0x0B60; + int GL_FOG_COLOR = 0x0B66; + int GL_FOG_DENSITY = 0x0B62; + int GL_FOG_END = 0x0B64; + int GL_FOG_HINT = 0x0C54; + int GL_FOG_MODE = 0x0B65; + int GL_FOG_START = 0x0B63; + int GL_FRONT = 0x0404; + int GL_FRONT_AND_BACK = 0x0408; + int GL_GEQUAL = 0x0206; + int GL_GREATER = 0x0204; + int GL_GREEN_BITS = 0x0D53; + int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B; + int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A; + int GL_INCR = 0x1E02; + int GL_INVALID_ENUM = 0x0500; + int GL_INVALID_OPERATION = 0x0502; + int GL_INVALID_VALUE = 0x0501; + int GL_INVERT = 0x150A; + int GL_KEEP = 0x1E00; + int GL_LEQUAL = 0x0203; + int GL_LESS = 0x0201; + int GL_LIGHT_MODEL_AMBIENT = 0x0B53; + int GL_LIGHT_MODEL_TWO_SIDE = 0x0B52; + int GL_LIGHT0 = 0x4000; + int GL_LIGHT1 = 0x4001; + int GL_LIGHT2 = 0x4002; + int GL_LIGHT3 = 0x4003; + int GL_LIGHT4 = 0x4004; + int GL_LIGHT5 = 0x4005; + int GL_LIGHT6 = 0x4006; + int GL_LIGHT7 = 0x4007; + int GL_LIGHTING = 0x0B50; + int GL_LINE_LOOP = 0x0002; + int GL_LINE_SMOOTH = 0x0B20; + int GL_LINE_SMOOTH_HINT = 0x0C52; + int GL_LINE_STRIP = 0x0003; + int GL_LINEAR = 0x2601; + int GL_LINEAR_ATTENUATION = 0x1208; + int GL_LINEAR_MIPMAP_LINEAR = 0x2703; + int GL_LINEAR_MIPMAP_NEAREST = 0x2701; + int GL_LINES = 0x0001; + int GL_LUMINANCE = 0x1909; + int GL_LUMINANCE_ALPHA = 0x190A; + int GL_MAX_ELEMENTS_INDICES = 0x80E9; + int GL_MAX_ELEMENTS_VERTICES = 0x80E8; + int GL_MAX_LIGHTS = 0x0D31; + int GL_MAX_MODELVIEW_STACK_DEPTH = 0x0D36; + int GL_MAX_PROJECTION_STACK_DEPTH = 0x0D38; + int GL_MAX_TEXTURE_SIZE = 0x0D33; + int GL_MAX_TEXTURE_STACK_DEPTH = 0x0D39; + int GL_MAX_TEXTURE_UNITS = 0x84E2; + int GL_MAX_VIEWPORT_DIMS = 0x0D3A; + int GL_MODELVIEW = 0x1700; + int GL_MODULATE = 0x2100; + int GL_MULTISAMPLE = 0x809D; + int GL_NAND = 0x150E; + int GL_NEAREST = 0x2600; + int GL_NEAREST_MIPMAP_LINEAR = 0x2702; + int GL_NEAREST_MIPMAP_NEAREST = 0x2700; + int GL_NEVER = 0x0200; + int GL_NICEST = 0x1102; + int GL_NO_ERROR = 0; + int GL_NOOP = 0x1505; + int GL_NOR = 0x1508; + int GL_NORMAL_ARRAY = 0x8075; + int GL_NORMALIZE = 0x0BA1; + int GL_NOTEQUAL = 0x0205; + int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + int GL_ONE = 1; + int GL_ONE_MINUS_DST_ALPHA = 0x0305; + int GL_ONE_MINUS_DST_COLOR = 0x0307; + int GL_ONE_MINUS_SRC_ALPHA = 0x0303; + int GL_ONE_MINUS_SRC_COLOR = 0x0301; + int GL_OR = 0x1507; + int GL_OR_INVERTED = 0x150D; + int GL_OR_REVERSE = 0x150B; + int GL_OUT_OF_MEMORY = 0x0505; + int GL_PACK_ALIGNMENT = 0x0D05; + int GL_PALETTE4_R5_G6_B5_OES = 0x8B92; + int GL_PALETTE4_RGB5_A1_OES = 0x8B94; + int GL_PALETTE4_RGB8_OES = 0x8B90; + int GL_PALETTE4_RGBA4_OES = 0x8B93; + int GL_PALETTE4_RGBA8_OES = 0x8B91; + int GL_PALETTE8_R5_G6_B5_OES = 0x8B97; + int GL_PALETTE8_RGB5_A1_OES = 0x8B99; + int GL_PALETTE8_RGB8_OES = 0x8B95; + int GL_PALETTE8_RGBA4_OES = 0x8B98; + int GL_PALETTE8_RGBA8_OES = 0x8B96; + int GL_PERSPECTIVE_CORRECTION_HINT = 0x0C50; + int GL_POINT_SMOOTH = 0x0B10; + int GL_POINT_SMOOTH_HINT = 0x0C51; + int GL_POINTS = 0x0000; + int GL_POINT_FADE_THRESHOLD_SIZE = 0x8128; + int GL_POINT_SIZE = 0x0B11; + int GL_POLYGON_OFFSET_FILL = 0x8037; + int GL_POLYGON_SMOOTH_HINT = 0x0C53; + int GL_POSITION = 0x1203; + int GL_PROJECTION = 0x1701; + int GL_QUADRATIC_ATTENUATION = 0x1209; + int GL_RED_BITS = 0x0D52; + int GL_RENDERER = 0x1F01; + int GL_REPEAT = 0x2901; + int GL_REPLACE = 0x1E01; + int GL_RESCALE_NORMAL = 0x803A; + int GL_RGB = 0x1907; + int GL_RGBA = 0x1908; + int GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + int GL_SAMPLE_ALPHA_TO_ONE = 0x809F; + int GL_SAMPLE_COVERAGE = 0x80A0; + int GL_SCISSOR_TEST = 0x0C11; + int GL_SET = 0x150F; + int GL_SHININESS = 0x1601; + int GL_SHORT = 0x1402; + int GL_SMOOTH = 0x1D01; + int GL_SMOOTH_LINE_WIDTH_RANGE = 0x0B22; + int GL_SMOOTH_POINT_SIZE_RANGE = 0x0B12; + int GL_SPECULAR = 0x1202; + int GL_SPOT_CUTOFF = 0x1206; + int GL_SPOT_DIRECTION = 0x1204; + int GL_SPOT_EXPONENT = 0x1205; + int GL_SRC_ALPHA = 0x0302; + int GL_SRC_ALPHA_SATURATE = 0x0308; + int GL_SRC_COLOR = 0x0300; + int GL_STACK_OVERFLOW = 0x0503; + int GL_STACK_UNDERFLOW = 0x0504; + int GL_STENCIL_BITS = 0x0D57; + int GL_STENCIL_BUFFER_BIT = 0x0400; + int GL_STENCIL_TEST = 0x0B90; + int GL_SUBPIXEL_BITS = 0x0D50; + int GL_TEXTURE = 0x1702; + int GL_TEXTURE_2D = 0x0DE1; + int GL_TEXTURE_COORD_ARRAY = 0x8078; + int GL_TEXTURE_ENV = 0x2300; + int GL_TEXTURE_ENV_COLOR = 0x2201; + int GL_TEXTURE_ENV_MODE = 0x2200; + int GL_TEXTURE_MAG_FILTER = 0x2800; + int GL_TEXTURE_MIN_FILTER = 0x2801; + int GL_TEXTURE_WRAP_S = 0x2802; + int GL_TEXTURE_WRAP_T = 0x2803; + int GL_TEXTURE0 = 0x84C0; + int GL_TEXTURE1 = 0x84C1; + int GL_TEXTURE2 = 0x84C2; + int GL_TEXTURE3 = 0x84C3; + int GL_TEXTURE4 = 0x84C4; + int GL_TEXTURE5 = 0x84C5; + int GL_TEXTURE6 = 0x84C6; + int GL_TEXTURE7 = 0x84C7; + int GL_TEXTURE8 = 0x84C8; + int GL_TEXTURE9 = 0x84C9; + int GL_TEXTURE10 = 0x84CA; + int GL_TEXTURE11 = 0x84CB; + int GL_TEXTURE12 = 0x84CC; + int GL_TEXTURE13 = 0x84CD; + int GL_TEXTURE14 = 0x84CE; + int GL_TEXTURE15 = 0x84CF; + int GL_TEXTURE16 = 0x84D0; + int GL_TEXTURE17 = 0x84D1; + int GL_TEXTURE18 = 0x84D2; + int GL_TEXTURE19 = 0x84D3; + int GL_TEXTURE20 = 0x84D4; + int GL_TEXTURE21 = 0x84D5; + int GL_TEXTURE22 = 0x84D6; + int GL_TEXTURE23 = 0x84D7; + int GL_TEXTURE24 = 0x84D8; + int GL_TEXTURE25 = 0x84D9; + int GL_TEXTURE26 = 0x84DA; + int GL_TEXTURE27 = 0x84DB; + int GL_TEXTURE28 = 0x84DC; + int GL_TEXTURE29 = 0x84DD; + int GL_TEXTURE30 = 0x84DE; + int GL_TEXTURE31 = 0x84DF; + int GL_TRIANGLE_FAN = 0x0006; + int GL_TRIANGLE_STRIP = 0x0005; + int GL_TRIANGLES = 0x0004; + int GL_TRUE = 1; + int GL_UNPACK_ALIGNMENT = 0x0CF5; + int GL_UNSIGNED_BYTE = 0x1401; + int GL_UNSIGNED_SHORT = 0x1403; + int GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033; + int GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034; + int GL_UNSIGNED_SHORT_5_6_5 = 0x8363; + int GL_VENDOR = 0x1F00; + int GL_VERSION = 0x1F02; + int GL_VERTEX_ARRAY = 0x8074; + int GL_XOR = 0x1506; + int GL_ZERO = 0; + + void glActiveTexture( + int texture + ); + + void glAlphaFunc( + int func, + float ref + ); + + void glAlphaFuncx( + int func, + int ref + ); + + void glBindTexture( + int target, + int texture + ); + + void glBlendFunc( + int sfactor, + int dfactor + ); + + void glClear( + int mask + ); + + void glClearColor( + float red, + float green, + float blue, + float alpha + ); + + void glClearColorx( + int red, + int green, + int blue, + int alpha + ); + + void glClearDepthf( + float depth + ); + + void glClearDepthx( + int depth + ); + + void glClearStencil( + int s + ); + + void glClientActiveTexture( + int texture + ); + + void glColor4f( + float red, + float green, + float blue, + float alpha + ); + + void glColor4x( + int red, + int green, + int blue, + int alpha + ); + + void glColorMask( + boolean red, + boolean green, + boolean blue, + boolean alpha + ); + + void glColorPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ); + + void glCompressedTexImage2D( + int target, + int level, + int internalformat, + int width, + int height, + int border, + int imageSize, + java.nio.Buffer data + ); + + void glCompressedTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int width, + int height, + int format, + int imageSize, + java.nio.Buffer data + ); + + void glCopyTexImage2D( + int target, + int level, + int internalformat, + int x, + int y, + int width, + int height, + int border + ); + + void glCopyTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int x, + int y, + int width, + int height + ); + + void glCullFace( + int mode + ); + + void glDeleteTextures( + int n, + int[] textures, + int offset + ); + + void glDeleteTextures( + int n, + java.nio.IntBuffer textures + ); + + void glDepthFunc( + int func + ); + + void glDepthMask( + boolean flag + ); + + void glDepthRangef( + float zNear, + float zFar + ); + + void glDepthRangex( + int zNear, + int zFar + ); + + void glDisable( + int cap + ); + + void glDisableClientState( + int array + ); + + void glDrawArrays( + int mode, + int first, + int count + ); + + void glDrawElements( + int mode, + int count, + int type, + java.nio.Buffer indices + ); + + void glEnable( + int cap + ); + + void glEnableClientState( + int array + ); + + void glFinish( + ); + + void glFlush( + ); + + void glFogf( + int pname, + float param + ); + + void glFogfv( + int pname, + float[] params, + int offset + ); + + void glFogfv( + int pname, + java.nio.FloatBuffer params + ); + + void glFogx( + int pname, + int param + ); + + void glFogxv( + int pname, + int[] params, + int offset + ); + + void glFogxv( + int pname, + java.nio.IntBuffer params + ); + + void glFrontFace( + int mode + ); + + void glFrustumf( + float left, + float right, + float bottom, + float top, + float zNear, + float zFar + ); + + void glFrustumx( + int left, + int right, + int bottom, + int top, + int zNear, + int zFar + ); + + void glGenTextures( + int n, + int[] textures, + int offset + ); + + void glGenTextures( + int n, + java.nio.IntBuffer textures + ); + + int glGetError( + ); + + void glGetIntegerv( + int pname, + int[] params, + int offset + ); + + void glGetIntegerv( + int pname, + java.nio.IntBuffer params + ); + + public String glGetString( + int name + ); + + void glHint( + int target, + int mode + ); + + void glLightModelf( + int pname, + float param + ); + + void glLightModelfv( + int pname, + float[] params, + int offset + ); + + void glLightModelfv( + int pname, + java.nio.FloatBuffer params + ); + + void glLightModelx( + int pname, + int param + ); + + void glLightModelxv( + int pname, + int[] params, + int offset + ); + + void glLightModelxv( + int pname, + java.nio.IntBuffer params + ); + + void glLightf( + int light, + int pname, + float param + ); + + void glLightfv( + int light, + int pname, + float[] params, + int offset + ); + + void glLightfv( + int light, + int pname, + java.nio.FloatBuffer params + ); + + void glLightx( + int light, + int pname, + int param + ); + + void glLightxv( + int light, + int pname, + int[] params, + int offset + ); + + void glLightxv( + int light, + int pname, + java.nio.IntBuffer params + ); + + void glLineWidth( + float width + ); + + void glLineWidthx( + int width + ); + + void glLoadIdentity( + ); + + void glLoadMatrixf( + float[] m, + int offset + ); + + void glLoadMatrixf( + java.nio.FloatBuffer m + ); + + void glLoadMatrixx( + int[] m, + int offset + ); + + void glLoadMatrixx( + java.nio.IntBuffer m + ); + + void glLogicOp( + int opcode + ); + + void glMaterialf( + int face, + int pname, + float param + ); + + void glMaterialfv( + int face, + int pname, + float[] params, + int offset + ); + + void glMaterialfv( + int face, + int pname, + java.nio.FloatBuffer params + ); + + void glMaterialx( + int face, + int pname, + int param + ); + + void glMaterialxv( + int face, + int pname, + int[] params, + int offset + ); + + void glMaterialxv( + int face, + int pname, + java.nio.IntBuffer params + ); + + void glMatrixMode( + int mode + ); + + void glMultMatrixf( + float[] m, + int offset + ); + + void glMultMatrixf( + java.nio.FloatBuffer m + ); + + void glMultMatrixx( + int[] m, + int offset + ); + + void glMultMatrixx( + java.nio.IntBuffer m + ); + + void glMultiTexCoord4f( + int target, + float s, + float t, + float r, + float q + ); + + void glMultiTexCoord4x( + int target, + int s, + int t, + int r, + int q + ); + + void glNormal3f( + float nx, + float ny, + float nz + ); + + void glNormal3x( + int nx, + int ny, + int nz + ); + + void glNormalPointer( + int type, + int stride, + java.nio.Buffer pointer + ); + + void glOrthof( + float left, + float right, + float bottom, + float top, + float zNear, + float zFar + ); + + void glOrthox( + int left, + int right, + int bottom, + int top, + int zNear, + int zFar + ); + + void glPixelStorei( + int pname, + int param + ); + + void glPointSize( + float size + ); + + void glPointSizex( + int size + ); + + void glPolygonOffset( + float factor, + float units + ); + + void glPolygonOffsetx( + int factor, + int units + ); + + void glPopMatrix( + ); + + void glPushMatrix( + ); + + void glReadPixels( + int x, + int y, + int width, + int height, + int format, + int type, + java.nio.Buffer pixels + ); + + void glRotatef( + float angle, + float x, + float y, + float z + ); + + void glRotatex( + int angle, + int x, + int y, + int z + ); + + void glSampleCoverage( + float value, + boolean invert + ); + + void glSampleCoveragex( + int value, + boolean invert + ); + + void glScalef( + float x, + float y, + float z + ); + + void glScalex( + int x, + int y, + int z + ); + + void glScissor( + int x, + int y, + int width, + int height + ); + + void glShadeModel( + int mode + ); + + void glStencilFunc( + int func, + int ref, + int mask + ); + + void glStencilMask( + int mask + ); + + void glStencilOp( + int fail, + int zfail, + int zpass + ); + + void glTexCoordPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ); + + void glTexEnvf( + int target, + int pname, + float param + ); + + void glTexEnvfv( + int target, + int pname, + float[] params, + int offset + ); + + void glTexEnvfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + void glTexEnvx( + int target, + int pname, + int param + ); + + void glTexEnvxv( + int target, + int pname, + int[] params, + int offset + ); + + void glTexEnvxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glTexImage2D( + int target, + int level, + int internalformat, + int width, + int height, + int border, + int format, + int type, + java.nio.Buffer pixels + ); + + void glTexParameterf( + int target, + int pname, + float param + ); + + void glTexParameterx( + int target, + int pname, + int param + ); + + void glTexSubImage2D( + int target, + int level, + int xoffset, + int yoffset, + int width, + int height, + int format, + int type, + java.nio.Buffer pixels + ); + + void glTranslatef( + float x, + float y, + float z + ); + + void glTranslatex( + int x, + int y, + int z + ); + + void glVertexPointer( + int size, + int type, + int stride, + java.nio.Buffer pointer + ); + + void glViewport( + int x, + int y, + int width, + int height + ); + +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL10Ext.java b/src/api-impl/javax/microedition/khronos/opengles/GL10Ext.java new file mode 100644 index 00000000..562b20ad --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL10Ext.java @@ -0,0 +1,36 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL10Ext.java +** +** Copyright 2007, 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. +*/ + +// This source file is automatically generated + +package javax.microedition.khronos.opengles; + +public interface GL10Ext extends GL { + + int glQueryMatrixxOES( + int[] mantissa, + int mantissaOffset, + int[] exponent, + int exponentOffset + ); + + int glQueryMatrixxOES( + java.nio.IntBuffer mantissa, + java.nio.IntBuffer exponent + ); + +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL11.java b/src/api-impl/javax/microedition/khronos/opengles/GL11.java new file mode 100644 index 00000000..3ba110cc --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL11.java @@ -0,0 +1,550 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL11.java +** +** Copyright 2006, 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. +*/ + +// This source file is automatically generated + +package javax.microedition.khronos.opengles; + +public interface GL11 extends GL10 { + int GL_ACTIVE_TEXTURE = 0x84E0; + int GL_ADD_SIGNED = 0x8574; + int GL_ALPHA_SCALE = 0x0D1C; + int GL_ALPHA_TEST_FUNC = 0x0BC1; + int GL_ALPHA_TEST_REF = 0x0BC2; + int GL_ARRAY_BUFFER = 0x8892; + int GL_ARRAY_BUFFER_BINDING = 0x8894; + int GL_BLEND_DST = 0x0BE0; + int GL_BLEND_SRC = 0x0BE1; + int GL_BUFFER_ACCESS = 0x88BB; + int GL_BUFFER_SIZE = 0x8764; + int GL_BUFFER_USAGE = 0x8765; + int GL_CLIENT_ACTIVE_TEXTURE = 0x84E1; + int GL_CLIP_PLANE0 = 0x3000; + int GL_CLIP_PLANE1 = 0x3001; + int GL_CLIP_PLANE2 = 0x3002; + int GL_CLIP_PLANE3 = 0x3003; + int GL_CLIP_PLANE4 = 0x3004; + int GL_CLIP_PLANE5 = 0x3005; + int GL_COLOR_ARRAY_BUFFER_BINDING = 0x8898; + int GL_COLOR_ARRAY_POINTER = 0x8090; + int GL_COLOR_ARRAY_SIZE = 0x8081; + int GL_COLOR_ARRAY_STRIDE = 0x8083; + int GL_COLOR_ARRAY_TYPE = 0x8082; + int GL_COLOR_CLEAR_VALUE = 0x0C22; + int GL_COLOR_WRITEMASK = 0x0C23; + int GL_COMBINE = 0x8570; + int GL_COMBINE_ALPHA = 0x8572; + int GL_COMBINE_RGB = 0x8571; + int GL_CONSTANT = 0x8576; + int GL_COORD_REPLACE_OES = 0x8862; + int GL_CULL_FACE_MODE = 0x0B45; + int GL_CURRENT_COLOR = 0x0B00; + int GL_CURRENT_NORMAL = 0x0B02; + int GL_CURRENT_TEXTURE_COORDS = 0x0B03; + int GL_DEPTH_CLEAR_VALUE = 0x0B73; + int GL_DEPTH_FUNC = 0x0B74; + int GL_DEPTH_RANGE = 0x0B70; + int GL_DEPTH_WRITEMASK = 0x0B72; + int GL_DOT3_RGB = 0x86AE; + int GL_DOT3_RGBA = 0x86AF; + int GL_DYNAMIC_DRAW = 0x88E8; + int GL_ELEMENT_ARRAY_BUFFER = 0x8893; + int GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + int GL_FRONT_FACE = 0x0B46; + int GL_GENERATE_MIPMAP = 0x8191; + int GL_GENERATE_MIPMAP_HINT = 0x8192; + int GL_INTERPOLATE = 0x8575; + int GL_LINE_WIDTH = 0x0B21; + int GL_LOGIC_OP_MODE = 0x0BF0; + int GL_MATRIX_MODE = 0x0BA0; + int GL_MAX_CLIP_PLANES = 0x0D32; + int GL_MODELVIEW_MATRIX = 0x0BA6; + int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898D; + int GL_MODELVIEW_STACK_DEPTH = 0x0BA3; + int GL_NORMAL_ARRAY_BUFFER_BINDING = 0x8897; + int GL_NORMAL_ARRAY_POINTER = 0x808F; + int GL_NORMAL_ARRAY_STRIDE = 0x807F; + int GL_NORMAL_ARRAY_TYPE = 0x807E; + int GL_OPERAND0_ALPHA = 0x8598; + int GL_OPERAND0_RGB = 0x8590; + int GL_OPERAND1_ALPHA = 0x8599; + int GL_OPERAND1_RGB = 0x8591; + int GL_OPERAND2_ALPHA = 0x859A; + int GL_OPERAND2_RGB = 0x8592; + int GL_POINT_DISTANCE_ATTENUATION = 0x8129; + int GL_POINT_FADE_THRESHOLD_SIZE = 0x8128; + int GL_POINT_SIZE = 0x0B11; + int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x8B9F; + int GL_POINT_SIZE_ARRAY_OES = 0x8B9C; + int GL_POINT_SIZE_ARRAY_POINTER_OES = 0x898C; + int GL_POINT_SIZE_ARRAY_STRIDE_OES = 0x898B; + int GL_POINT_SIZE_ARRAY_TYPE_OES = 0x898A; + int GL_POINT_SIZE_MAX = 0x8127; + int GL_POINT_SIZE_MIN = 0x8126; + int GL_POINT_SPRITE_OES = 0x8861; + int GL_POLYGON_OFFSET_FACTOR = 0x8038; + int GL_POLYGON_OFFSET_UNITS = 0x2A00; + int GL_PREVIOUS = 0x8578; + int GL_PRIMARY_COLOR = 0x8577; + int GL_PROJECTION_MATRIX = 0x0BA7; + int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898E; + int GL_PROJECTION_STACK_DEPTH = 0x0BA4; + int GL_RGB_SCALE = 0x8573; + int GL_SAMPLE_BUFFERS = 0x80A8; + int GL_SAMPLE_COVERAGE_INVERT = 0x80AB; + int GL_SAMPLE_COVERAGE_VALUE = 0x80AA; + int GL_SAMPLES = 0x80A9; + int GL_SCISSOR_BOX = 0x0C10; + int GL_SHADE_MODEL = 0x0B54; + int GL_SRC0_ALPHA = 0x8588; + int GL_SRC0_RGB = 0x8580; + int GL_SRC1_ALPHA = 0x8589; + int GL_SRC1_RGB = 0x8581; + int GL_SRC2_ALPHA = 0x858A; + int GL_SRC2_RGB = 0x8582; + int GL_STATIC_DRAW = 0x88E4; + int GL_STENCIL_CLEAR_VALUE = 0x0B91; + int GL_STENCIL_FAIL = 0x0B94; + int GL_STENCIL_FUNC = 0x0B92; + int GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95; + int GL_STENCIL_PASS_DEPTH_PASS = 0x0B96; + int GL_STENCIL_REF = 0x0B97; + int GL_STENCIL_VALUE_MASK = 0x0B93; + int GL_STENCIL_WRITEMASK = 0x0B98; + int GL_SUBTRACT = 0x84E7; + int GL_TEXTURE_BINDING_2D = 0x8069; + int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A; + int GL_TEXTURE_COORD_ARRAY_POINTER = 0x8092; + int GL_TEXTURE_COORD_ARRAY_SIZE = 0x8088; + int GL_TEXTURE_COORD_ARRAY_STRIDE = 0x808A; + int GL_TEXTURE_COORD_ARRAY_TYPE = 0x8089; + int GL_TEXTURE_MATRIX = 0x0BA8; + int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898F; + int GL_TEXTURE_STACK_DEPTH = 0x0BA5; + int GL_VERTEX_ARRAY_BUFFER_BINDING = 0x8896; + int GL_VERTEX_ARRAY_POINTER = 0x808E; + int GL_VERTEX_ARRAY_SIZE = 0x807A; + int GL_VERTEX_ARRAY_STRIDE = 0x807C; + int GL_VERTEX_ARRAY_TYPE = 0x807B; + int GL_VIEWPORT = 0x0BA2; + int GL_WRITE_ONLY = 0x88B9; + + void glGetPointerv(int pname, java.nio.Buffer[] params); + void glBindBuffer( + int target, + int buffer + ); + + void glBufferData( + int target, + int size, + java.nio.Buffer data, + int usage + ); + + void glBufferSubData( + int target, + int offset, + int size, + java.nio.Buffer data + ); + + void glClipPlanef( + int plane, + float[] equation, + int offset + ); + + void glClipPlanef( + int plane, + java.nio.FloatBuffer equation + ); + + void glClipPlanex( + int plane, + int[] equation, + int offset + ); + + void glClipPlanex( + int plane, + java.nio.IntBuffer equation + ); + + void glColor4ub( + byte red, + byte green, + byte blue, + byte alpha + ); + + void glColorPointer( + int size, + int type, + int stride, + int offset + ); + + void glDeleteBuffers( + int n, + int[] buffers, + int offset + ); + + void glDeleteBuffers( + int n, + java.nio.IntBuffer buffers + ); + + void glDrawElements( + int mode, + int count, + int type, + int offset + ); + + void glGenBuffers( + int n, + int[] buffers, + int offset + ); + + void glGenBuffers( + int n, + java.nio.IntBuffer buffers + ); + + void glGetBooleanv( + int pname, + boolean[] params, + int offset + ); + + void glGetBooleanv( + int pname, + java.nio.IntBuffer params + ); + + void glGetBufferParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + void glGetBufferParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glGetClipPlanef( + int pname, + float[] eqn, + int offset + ); + + void glGetClipPlanef( + int pname, + java.nio.FloatBuffer eqn + ); + + void glGetClipPlanex( + int pname, + int[] eqn, + int offset + ); + + void glGetClipPlanex( + int pname, + java.nio.IntBuffer eqn + ); + + void glGetFixedv( + int pname, + int[] params, + int offset + ); + + void glGetFixedv( + int pname, + java.nio.IntBuffer params + ); + + void glGetFloatv( + int pname, + float[] params, + int offset + ); + + void glGetFloatv( + int pname, + java.nio.FloatBuffer params + ); + + void glGetLightfv( + int light, + int pname, + float[] params, + int offset + ); + + void glGetLightfv( + int light, + int pname, + java.nio.FloatBuffer params + ); + + void glGetLightxv( + int light, + int pname, + int[] params, + int offset + ); + + void glGetLightxv( + int light, + int pname, + java.nio.IntBuffer params + ); + + void glGetMaterialfv( + int face, + int pname, + float[] params, + int offset + ); + + void glGetMaterialfv( + int face, + int pname, + java.nio.FloatBuffer params + ); + + void glGetMaterialxv( + int face, + int pname, + int[] params, + int offset + ); + + void glGetMaterialxv( + int face, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexEnviv( + int env, + int pname, + int[] params, + int offset + ); + + void glGetTexEnviv( + int env, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexEnvxv( + int env, + int pname, + int[] params, + int offset + ); + + void glGetTexEnvxv( + int env, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexParameterfv( + int target, + int pname, + float[] params, + int offset + ); + + void glGetTexParameterfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + void glGetTexParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + void glGetTexParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexParameterxv( + int target, + int pname, + int[] params, + int offset + ); + + void glGetTexParameterxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + boolean glIsBuffer( + int buffer + ); + + boolean glIsEnabled( + int cap + ); + + boolean glIsTexture( + int texture + ); + + void glNormalPointer( + int type, + int stride, + int offset + ); + + void glPointParameterf( + int pname, + float param + ); + + void glPointParameterfv( + int pname, + float[] params, + int offset + ); + + void glPointParameterfv( + int pname, + java.nio.FloatBuffer params + ); + + void glPointParameterx( + int pname, + int param + ); + + void glPointParameterxv( + int pname, + int[] params, + int offset + ); + + void glPointParameterxv( + int pname, + java.nio.IntBuffer params + ); + + void glPointSizePointerOES( + int type, + int stride, + java.nio.Buffer pointer + ); + + void glTexCoordPointer( + int size, + int type, + int stride, + int offset + ); + + void glTexEnvi( + int target, + int pname, + int param + ); + + void glTexEnviv( + int target, + int pname, + int[] params, + int offset + ); + + void glTexEnviv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glTexParameterfv( + int target, + int pname, + float[] params, + int offset + ); + + void glTexParameterfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + void glTexParameteri( + int target, + int pname, + int param + ); + + void glTexParameteriv( + int target, + int pname, + int[] params, + int offset + ); + + void glTexParameteriv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glTexParameterxv( + int target, + int pname, + int[] params, + int offset + ); + + void glTexParameterxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glVertexPointer( + int size, + int type, + int stride, + int offset + ); + +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL11Ext.java b/src/api-impl/javax/microedition/khronos/opengles/GL11Ext.java new file mode 100644 index 00000000..459a1aba --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL11Ext.java @@ -0,0 +1,153 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL11Ext.java +** +** Copyright 2007, 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. +*/ + +// This source file is automatically generated + +package javax.microedition.khronos.opengles; + +public interface GL11Ext extends GL { + int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E; + int GL_MATRIX_INDEX_ARRAY_OES = 0x8844; + int GL_MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849; + int GL_MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846; + int GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848; + int GL_MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847; + int GL_MATRIX_PALETTE_OES = 0x8840; + int GL_MAX_PALETTE_MATRICES_OES = 0x8842; + int GL_MAX_VERTEX_UNITS_OES = 0x86A4; + int GL_TEXTURE_CROP_RECT_OES = 0x8B9D; + int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E; + int GL_WEIGHT_ARRAY_OES = 0x86AD; + int GL_WEIGHT_ARRAY_POINTER_OES = 0x86AC; + int GL_WEIGHT_ARRAY_SIZE_OES = 0x86AB; + int GL_WEIGHT_ARRAY_STRIDE_OES = 0x86AA; + int GL_WEIGHT_ARRAY_TYPE_OES = 0x86A9; + + void glTexParameterfv(int target, int pname, float[] param, int offset); + + void glCurrentPaletteMatrixOES( + int matrixpaletteindex + ); + + void glDrawTexfOES( + float x, + float y, + float z, + float width, + float height + ); + + void glDrawTexfvOES( + float[] coords, + int offset + ); + + void glDrawTexfvOES( + java.nio.FloatBuffer coords + ); + + void glDrawTexiOES( + int x, + int y, + int z, + int width, + int height + ); + + void glDrawTexivOES( + int[] coords, + int offset + ); + + void glDrawTexivOES( + java.nio.IntBuffer coords + ); + + void glDrawTexsOES( + short x, + short y, + short z, + short width, + short height + ); + + void glDrawTexsvOES( + short[] coords, + int offset + ); + + void glDrawTexsvOES( + java.nio.ShortBuffer coords + ); + + void glDrawTexxOES( + int x, + int y, + int z, + int width, + int height + ); + + void glDrawTexxvOES( + int[] coords, + int offset + ); + + void glDrawTexxvOES( + java.nio.IntBuffer coords + ); + + void glEnable( + int cap + ); + + void glEnableClientState( + int array + ); + + void glLoadPaletteFromModelViewMatrixOES( + ); + + void glMatrixIndexPointerOES( + int size, + int type, + int stride, + java.nio.Buffer pointer + ); + + void glMatrixIndexPointerOES( + int size, + int type, + int stride, + int offset + ); + + void glWeightPointerOES( + int size, + int type, + int stride, + java.nio.Buffer pointer + ); + + void glWeightPointerOES( + int size, + int type, + int stride, + int offset + ); + +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/GL11ExtensionPack.java b/src/api-impl/javax/microedition/khronos/opengles/GL11ExtensionPack.java new file mode 100644 index 00000000..933c91ef --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/GL11ExtensionPack.java @@ -0,0 +1,434 @@ +/* //device/java/android/javax/microedition/khronos/opengles/GL11ExtensionPack.java +** +** Copyright 2007, 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. +*/ + +// This source file is automatically generated + +package javax.microedition.khronos.opengles; + +public interface GL11ExtensionPack extends GL { + int GL_BLEND_DST_ALPHA = 0x80CA; + int GL_BLEND_DST_RGB = 0x80C8; + int GL_BLEND_EQUATION = 0x8009; + int GL_BLEND_EQUATION_ALPHA = 0x883D; + int GL_BLEND_EQUATION_RGB = 0x8009; + int GL_BLEND_SRC_ALPHA = 0x80CB; + int GL_BLEND_SRC_RGB = 0x80C9; + int GL_COLOR_ATTACHMENT0_OES = 0x8CE0; + int GL_COLOR_ATTACHMENT1_OES = 0x8CE1; + int GL_COLOR_ATTACHMENT2_OES = 0x8CE2; + int GL_COLOR_ATTACHMENT3_OES = 0x8CE3; + int GL_COLOR_ATTACHMENT4_OES = 0x8CE4; + int GL_COLOR_ATTACHMENT5_OES = 0x8CE5; + int GL_COLOR_ATTACHMENT6_OES = 0x8CE6; + int GL_COLOR_ATTACHMENT7_OES = 0x8CE7; + int GL_COLOR_ATTACHMENT8_OES = 0x8CE8; + int GL_COLOR_ATTACHMENT9_OES = 0x8CE9; + int GL_COLOR_ATTACHMENT10_OES = 0x8CEA; + int GL_COLOR_ATTACHMENT11_OES = 0x8CEB; + int GL_COLOR_ATTACHMENT12_OES = 0x8CEC; + int GL_COLOR_ATTACHMENT13_OES = 0x8CED; + int GL_COLOR_ATTACHMENT14_OES = 0x8CEE; + int GL_COLOR_ATTACHMENT15_OES = 0x8CEF; + int GL_DECR_WRAP = 0x8508; + int GL_DEPTH_ATTACHMENT_OES = 0x8D00; + int GL_DEPTH_COMPONENT = 0x1902; + int GL_DEPTH_COMPONENT16 = 0x81A5; + int GL_DEPTH_COMPONENT24 = 0x81A6; + int GL_DEPTH_COMPONENT32 = 0x81A7; + int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 0x8CD1; + int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 0x8CD0; + int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3; + int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 0x8CD2; + int GL_FRAMEBUFFER_BINDING_OES = 0x8CA6; + int GL_FRAMEBUFFER_COMPLETE_OES = 0x8CD5; + int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 0x8CD6; + int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 0x8CD9; + int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 0x8CDB; + int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 0x8CDA; + int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 0x8CD7; + int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 0x8CDC; + int GL_FRAMEBUFFER_OES = 0x8D40; + int GL_FRAMEBUFFER_UNSUPPORTED_OES = 0x8CDD; + int GL_FUNC_ADD = 0x8006; + int GL_FUNC_REVERSE_SUBTRACT = 0x800B; + int GL_FUNC_SUBTRACT = 0x800A; + int GL_INCR_WRAP = 0x8507; + int GL_INVALID_FRAMEBUFFER_OPERATION_OES = 0x0506; + int GL_MAX_COLOR_ATTACHMENTS_OES = 0x8CDF; + int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + int GL_MAX_RENDERBUFFER_SIZE_OES = 0x84E8; + int GL_MIRRORED_REPEAT = 0x8370; + int GL_NORMAL_MAP = 0x8511; + int GL_REFLECTION_MAP = 0x8512; + int GL_RENDERBUFFER_ALPHA_SIZE_OES = 0x8D53; + int GL_RENDERBUFFER_BINDING_OES = 0x8CA7; + int GL_RENDERBUFFER_BLUE_SIZE_OES = 0x8D52; + int GL_RENDERBUFFER_DEPTH_SIZE_OES = 0x8D54; + int GL_RENDERBUFFER_GREEN_SIZE_OES = 0x8D51; + int GL_RENDERBUFFER_HEIGHT_OES = 0x8D43; + int GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 0x8D44; + int GL_RENDERBUFFER_OES = 0x8D41; + int GL_RENDERBUFFER_RED_SIZE_OES = 0x8D50; + int GL_RENDERBUFFER_STENCIL_SIZE_OES = 0x8D55; + int GL_RENDERBUFFER_WIDTH_OES = 0x8D42; + int GL_RGB5_A1 = 0x8057; + int GL_RGB565_OES = 0x8D62; + int GL_RGB8 = 0x8051; + int GL_RGBA4 = 0x8056; + int GL_RGBA8 = 0x8058; + int GL_STENCIL_ATTACHMENT_OES = 0x8D20; + int GL_STENCIL_INDEX = 0x1901; + int GL_STENCIL_INDEX1_OES = 0x8D46; + int GL_STENCIL_INDEX4_OES = 0x8D47; + int GL_STENCIL_INDEX8_OES = 0x8D48; + int GL_STR = -1; + int GL_TEXTURE_BINDING_CUBE_MAP = 0x8514; + int GL_TEXTURE_CUBE_MAP = 0x8513; + int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + int GL_TEXTURE_GEN_MODE = 0x2500; + int GL_TEXTURE_GEN_STR = 0x8D60; + + void glBindFramebufferOES( + int target, + int framebuffer + ); + + void glBindRenderbufferOES( + int target, + int renderbuffer + ); + + void glBindTexture( + int target, + int texture + ); + + void glBlendEquation( + int mode + ); + + void glBlendEquationSeparate( + int modeRGB, + int modeAlpha + ); + + void glBlendFuncSeparate( + int srcRGB, + int dstRGB, + int srcAlpha, + int dstAlpha + ); + + int glCheckFramebufferStatusOES( + int target + ); + + void glCompressedTexImage2D( + int target, + int level, + int internalformat, + int width, + int height, + int border, + int imageSize, + java.nio.Buffer data + ); + + void glCopyTexImage2D( + int target, + int level, + int internalformat, + int x, + int y, + int width, + int height, + int border + ); + + void glDeleteFramebuffersOES( + int n, + int[] framebuffers, + int offset + ); + + void glDeleteFramebuffersOES( + int n, + java.nio.IntBuffer framebuffers + ); + + void glDeleteRenderbuffersOES( + int n, + int[] renderbuffers, + int offset + ); + + void glDeleteRenderbuffersOES( + int n, + java.nio.IntBuffer renderbuffers + ); + + void glEnable( + int cap + ); + + void glFramebufferRenderbufferOES( + int target, + int attachment, + int renderbuffertarget, + int renderbuffer + ); + + void glFramebufferTexture2DOES( + int target, + int attachment, + int textarget, + int texture, + int level + ); + + void glGenerateMipmapOES( + int target + ); + + void glGenFramebuffersOES( + int n, + int[] framebuffers, + int offset + ); + + void glGenFramebuffersOES( + int n, + java.nio.IntBuffer framebuffers + ); + + void glGenRenderbuffersOES( + int n, + int[] renderbuffers, + int offset + ); + + void glGenRenderbuffersOES( + int n, + java.nio.IntBuffer renderbuffers + ); + + void glGetFramebufferAttachmentParameterivOES( + int target, + int attachment, + int pname, + int[] params, + int offset + ); + + void glGetFramebufferAttachmentParameterivOES( + int target, + int attachment, + int pname, + java.nio.IntBuffer params + ); + + void glGetIntegerv( + int pname, + int[] params, + int offset + ); + + void glGetIntegerv( + int pname, + java.nio.IntBuffer params + ); + + void glGetRenderbufferParameterivOES( + int target, + int pname, + int[] params, + int offset + ); + + void glGetRenderbufferParameterivOES( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexGenfv( + int coord, + int pname, + float[] params, + int offset + ); + + void glGetTexGenfv( + int coord, + int pname, + java.nio.FloatBuffer params + ); + + void glGetTexGeniv( + int coord, + int pname, + int[] params, + int offset + ); + + void glGetTexGeniv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + void glGetTexGenxv( + int coord, + int pname, + int[] params, + int offset + ); + + void glGetTexGenxv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + boolean glIsFramebufferOES( + int framebuffer + ); + + boolean glIsRenderbufferOES( + int renderbuffer + ); + + void glRenderbufferStorageOES( + int target, + int internalformat, + int width, + int height + ); + + void glStencilOp( + int fail, + int zfail, + int zpass + ); + + void glTexEnvf( + int target, + int pname, + float param + ); + + void glTexEnvfv( + int target, + int pname, + float[] params, + int offset + ); + + void glTexEnvfv( + int target, + int pname, + java.nio.FloatBuffer params + ); + + void glTexEnvx( + int target, + int pname, + int param + ); + + void glTexEnvxv( + int target, + int pname, + int[] params, + int offset + ); + + void glTexEnvxv( + int target, + int pname, + java.nio.IntBuffer params + ); + + void glTexGenf( + int coord, + int pname, + float param + ); + + void glTexGenfv( + int coord, + int pname, + float[] params, + int offset + ); + + void glTexGenfv( + int coord, + int pname, + java.nio.FloatBuffer params + ); + + void glTexGeni( + int coord, + int pname, + int param + ); + + void glTexGeniv( + int coord, + int pname, + int[] params, + int offset + ); + + void glTexGeniv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + void glTexGenx( + int coord, + int pname, + int param + ); + + void glTexGenxv( + int coord, + int pname, + int[] params, + int offset + ); + + void glTexGenxv( + int coord, + int pname, + java.nio.IntBuffer params + ); + + void glTexParameterf( + int target, + int pname, + float param + ); + +} diff --git a/src/api-impl/javax/microedition/khronos/opengles/package.html b/src/api-impl/javax/microedition/khronos/opengles/package.html new file mode 100644 index 00000000..0e3dbee5 --- /dev/null +++ b/src/api-impl/javax/microedition/khronos/opengles/package.html @@ -0,0 +1,8 @@ + + +

Provides a standard OpenGL interface.

+ +

For more information about how to use OpenGL, read the +OpenGL developer guide.

+ + \ No newline at end of file diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build new file mode 100644 index 00000000..c564bafb --- /dev/null +++ b/src/api-impl/meson.build @@ -0,0 +1,222 @@ +hax_jar = jar('hax', [ + 'com/google/android/gles_jni/GLImpl.java', + 'com/google/android/gles_jni/EGLImpl.java', + 'com/google/android/vending/licensing/LicenseCheckerCallback.java', + 'com/google/android/vending/licensing/Policy.java', + 'com/google/android/vending/licensing/LicenseChecker.java', + 'com/android/internal/Manifest.java', + 'com/android/internal/R.java', + 'com/android/internal/util/ArrayUtils.java', + 'com/android/internal/util/XmlUtils.java', + 'com/android/internal/util/FastXmlSerializer.java', + 'javax/microedition/khronos/egl/EGLConfig.java', + 'javax/microedition/khronos/egl/EGL.java', + 'javax/microedition/khronos/egl/EGLSurface.java', + 'javax/microedition/khronos/egl/EGL10.java', + 'javax/microedition/khronos/egl/EGLContext.java', + 'javax/microedition/khronos/egl/EGLDisplay.java', + 'javax/microedition/khronos/egl/EGL11.java', + 'javax/microedition/khronos/opengles/GL10Ext.java', + 'javax/microedition/khronos/opengles/GL11Ext.java', + 'javax/microedition/khronos/opengles/GL11ExtensionPack.java', + 'javax/microedition/khronos/opengles/GL.java', + 'javax/microedition/khronos/opengles/GL10.java', + 'javax/microedition/khronos/opengles/GL11.java', + 'android/app/Activity.java', + 'android/app/AlertDialog.java', + 'android/app/ActivityManager.java', + 'android/app/ProgressDialog.java', + 'android/app/Dialog.java', + 'android/app/Application.java', + 'android/app/IntentService.java', + 'android/app/Service.java', + 'android/app/KeyguardManager.java', + 'android/app/SharedPreferencesImpl.java', + 'android/app/PendingIntent.java', + 'android/net/Uri.java', + 'android/net/NetworkInfo.java', + 'android/net/ConnectivityManager.java', + 'android/graphics/Region.java', + 'android/graphics/BitmapFactory.java', + 'android/graphics/RectF.java', + 'android/graphics/Matrix.java', + 'android/graphics/Bitmap.java', + 'android/graphics/Rect.java', + 'android/graphics/Typeface.java', + 'android/graphics/Paint.java', + 'android/graphics/Path.java', + 'android/graphics/Canvas.java', + 'android/annotation/PrivateApi.java', + 'android/annotation/SuppressLint.java', + 'android/annotation/SdkConstant.java', + 'android/annotation/Widget.java', + 'android/annotation/TargetApi.java', + 'android/preference/PreferenceManager.java', + 'android/os/MemoryFile.java', + 'android/os/Parcelable.java', + 'android/os/Environment.java', + 'android/os/RemoteException.java', + 'android/os/Binder.java', + 'android/os/Handler.java', + 'android/os/HandlerThread.java', + 'android/os/Messenger.java', + 'android/os/Process.java', + 'android/os/ParcelFileDescriptor.java', + 'android/os/Message.java', + 'android/os/SystemClock.java', + 'android/os/ResultReceiver.java', + 'android/os/IMessenger.java', + 'android/os/Trace.java', + 'android/os/PatternMatcher.java', + 'android/os/Looper.java', + 'android/os/Bundle.java', + 'android/os/Build.java', + 'android/os/UserHandle.java', + 'android/os/MessageQueue.java', + 'android/os/AsyncTask.java', + 'android/os/CancellationSignal.java', + 'android/os/IBinder.java', + 'android/Manifest.java', + 'android/telephony/TelephonyManager.java', + 'android/support/v4/app/FragmentActivity.java', + 'android/R.java', + 'android/opengl/EGLConfig.java', + 'android/opengl/GLSurfaceView.java', + 'android/opengl/EGLObjectHandle.java', + 'android/widget/MediaController.java', + 'android/widget/TextView.java', + 'android/widget/ScrollView.java', + 'android/widget/EditText.java', + 'android/widget/ImageView.java', + 'android/widget/LinearLayout.java', + 'android/widget/ProgressBar.java', + 'android/widget/FrameLayout.java', + 'android/widget/RelativeLayout.java', + 'android/database/Cursor.java', + 'android/database/sqlite/SQLiteException.java', + 'android/database/sqlite/SQLiteProgram.java', + 'android/database/sqlite/DatabaseErrorHandler.java', + 'android/database/sqlite/SQLiteOpenHelper.java', + 'android/database/sqlite/SQLiteQuery.java', + 'android/database/sqlite/SQLiteCursorDriver.java', + 'android/database/sqlite/SQLiteCursor.java', + 'android/database/sqlite/SQLiteDatabase.java', + 'android/database/sqlite/SQLiteDirectCursorDriver.java', + 'android/util/Log.java', + 'android/util/ContainerHelpers.java', + 'android/util/MapCollections.java', + 'android/util/AndroidException.java', + 'android/util/PrefixPrinter.java', + 'android/util/Base64.java', + 'android/util/TypedValue.java', + 'android/util/DecompiledXmlResourceParser.java', + 'android/util/Slog.java', + 'android/util/SparseIntArray.java', + 'android/util/XmlPullAttributes.java', + 'android/util/Base64OutputStream.java', + 'android/util/SparseArray.java', + 'android/util/LongSparseArray.java', + 'android/util/Xml.java', + 'android/util/LayoutDirection.java', + 'android/util/DisplayMetrics.java', + 'android/util/ArrayMap.java', + 'android/util/Printer.java', + 'android/util/AndroidRuntimeException.java', + 'android/util/StateSet.java', + 'android/util/Base64InputStream.java', + 'android/util/AttributeSet.java', + 'android/util/Base64DataException.java', + 'android/webkit/WebView.java', + 'android/webkit/WebSettings.java', + 'android/media/AudioTrack.java', + 'android/media/MediaPlayer.java', + 'android/media/AudioManager.java', + 'android/media/SoundPool.java', + 'android/location/LocationListener.java', + 'android/location/Criteria.java', + 'android/view/Menu.java', + 'android/view/ViewParent.java', + 'android/view/Surface.java', + 'android/view/Window.java', + 'android/view/ViewManager.java', + 'android/view/WindowManager.java', + 'android/view/ViewGroup.java', + 'android/view/SurfaceHolder.java', + 'android/view/InputEvent.java', + 'android/view/View.java', + 'android/view/LayoutInflater.java', + 'android/view/ViewTreeObserver.java', + 'android/view/MotionEvent.java', + 'android/view/SurfaceView.java', + 'android/view/WindowManagerImpl.java', + 'android/view/Gravity.java', + 'android/view/Display.java', + 'android/hardware/SensorEventListener.java', + 'android/hardware/Sensor.java', + 'android/hardware/SensorManager.java', + 'android/text/TextUtils.java', + 'android/text/Spannable.java', + 'android/text/ClipboardManager.java', + 'android/text/Spanned.java', + 'android/text/Html.java', + 'android/text/TextPaint.java', + 'android/text/util/Linkify.java', + 'android/text/SpannableStringInternal.java', + 'android/text/TextWatcher.java', + 'android/text/SpannedString.java', + 'android/text/GetChars.java', + 'android/text/NoCopySpan.java', + 'android/text/SpannableString.java', + 'android/text/InputFilter.java', + 'android/text/SpanWatcher.java', + 'android/content/BroadcastReceiver.java', + 'android/content/Context.java', + 'android/content/ActivityNotFoundException.java', + 'android/content/DialogInterface.java', + 'android/content/OperationApplicationException.java', + 'android/content/res/ColorStateList.java', + 'android/content/res/XmlResourceParser.java', + 'android/content/res/XmlBlock.java', + 'android/content/res/AssetFileDescriptor.java', + 'android/content/res/AssetManager.java', + 'android/content/res/StringBlock.java', + 'android/content/res/CompatibilityInfo.java', + 'android/content/res/Configuration.java', + 'android/content/res/Resources.java', + 'android/content/res/TypedArray.java', + 'android/content/Intent.java', + 'android/content/ComponentName.java', + 'android/content/pm/ConfigurationInfo.java', + 'android/content/pm/ActivityInfo.java', + 'android/content/pm/ServiceInfo.java', + 'android/content/pm/VerifierInfo.java', + 'android/content/pm/FeatureInfo.java', + 'android/content/pm/PermissionGroupInfo.java', + 'android/content/pm/ApplicationInfo.java', + 'android/content/pm/PackageManager.java', + 'android/content/pm/Signature.java', + 'android/content/pm/PathPermission.java', + 'android/content/pm/ProviderInfo.java', + 'android/content/pm/PackageUserState.java', + 'android/content/pm/InstrumentationInfo.java', + 'android/content/pm/PackageInfo.java', + 'android/content/pm/ManifestDigest.java', + 'android/content/pm/PackageParser.java', + 'android/content/pm/PermissionInfo.java', + 'android/content/pm/ComponentInfo.java', + 'android/content/pm/PackageItemInfo.java', + 'android/content/IntentSender.java', + 'android/content/SharedPreferences.java', + 'android/content/ServiceConnection.java', + 'android/content/ContentResolver.java', + 'android/content/ContentValues.java', + 'android/provider/Settings.java' + ], + dependencies: [ + declare_dependency(link_with: hax_arsc_parser_jar) + ], + java_args: [ + '-bootclasspath', join_paths(dir_base, 'jars/core-libart-hostdex_classes.jar'), + '-source', '1.7', '-target', '1.7', + '-h', join_paths(dir_base, 'src/api-impl-jni/generated_headers') + ]) diff --git a/src/arsc_parser/README.md b/src/arsc_parser/README.md new file mode 100644 index 00000000..41ff1754 --- /dev/null +++ b/src/arsc_parser/README.md @@ -0,0 +1,7 @@ +taken from https://github.com/ibilux/ArscResourcesParser +TODO: dig up what license this uses + +# ArscResourcesParser +A tool for decoding Android resources.arsc file using java, for decoding .arsc resources file and getting information from apk file. + +Thanks to @dutlxq2014 for his work on ApkParser. diff --git a/src/arsc_parser/com/hq/arscresourcesparser/ArscResourcesParser.java b/src/arsc_parser/com/hq/arscresourcesparser/ArscResourcesParser.java new file mode 100644 index 00000000..8bb59471 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/ArscResourcesParser.java @@ -0,0 +1,86 @@ +package com.hq.arscresourcesparser; + +import com.hq.arscresourcesparser.arsc.ArscFile; +import com.hq.arscresourcesparser.arsc.ResTableEntry; +import com.hq.arscresourcesparser.arsc.ResTableValueEntry; +import com.hq.arscresourcesparser.arsc.ResTableMapEntry; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.ByteArrayOutputStream; +import java.net.URL; + +//import java.util.zip.ZipEntry; +//import java.util.zip.ZipFile; + +public class ArscResourcesParser { + public final int TYPE_COLOR = 1; + public final int TYPE_DRAWABLE = 2; + public final int TYPE_LAYOUT = 3; + public final int TYPE_DIMEN = 4; + public final int TYPE_STRING = 5; + public final int TYPE_ARRAY = 6; + public final int TYPE_STYLE = 7; + public final int TYPE_MENU = 8; + public final int TYPE_ID = 9; + + private ArscFile arscFile; + + public ArscResourcesParser(URL file) { + try { + InputStream amis = file.openStream(); + System.out.println(amis); + + byte[] buffer = new byte[1000]; + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + try { + int temp; + + while ((temp = amis.read(buffer)) != -1) { + byteArrayOutputStream.write(buffer, 0, temp); + } + } catch (IOException e) { + // Display the exception/s on the console + System.out.println(e); + } + + byte[] byteArray = byteArrayOutputStream.toByteArray(); + + arscFile = new ArscFile(); + arscFile.parse(byteArray); + amis.close(); + } catch (IOException e) { + System.out.println("ArscResourcesParser: IOException raised: " + e.toString()); + } + } + + public String getResource(int resId) { + ResTableValueEntry res = (ResTableValueEntry)arscFile.getResource(resId); + + if(res == null) { + return "oops, arscFile.getResource returned null"; + } + + return res.resValue.toString(); + } + + public String getResourceByName(String name, int typeId) { + ResTableValueEntry res = (ResTableValueEntry)arscFile.getResourceByName(name, typeId); + + return res.resValue.toString(); + } + + public String[] getResourceArray(int resId) { + ResTableMapEntry resArray = (ResTableMapEntry)arscFile.getResource(resId); + + return resArray.asStringArray(); + } + + public int getResourceId(String name, int typeId) { + System.out.println("¯¯ in getResourceId"); + ResTableValueEntry res = (ResTableValueEntry)arscFile.getResourceByName(name, typeId); + + return res.entryId; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ArscFile.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ArscFile.java new file mode 100644 index 00000000..cc392e07 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ArscFile.java @@ -0,0 +1,104 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.ByteArrayInputStream; + +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ArscFile { + + private static final String TAG = ArscFile.class.getSimpleName(); + + private static final int RES_TABLE_TYPE = 0x0002; + private static final int RES_STRING_POOL_TYPE = 0x0001; + private static final int RES_TABLE_PACKAGE_TYPE = 0x0200; + + private ByteArrayInputStream mStreamer; + public ResFileHeaderChunk arscHeader; + public ResStringPoolChunk resStringPoolChunk; + public ResTablePackageChunk resTablePackageChunk; + + public ArscFile() { + + } + + public void parse(byte[] sBuf) throws IOException { + mStreamer = new ByteArrayInputStream(sBuf); + + byte[] headBytes; + byte[] chunkBytes; + long cursor = 0; + ChunkHeader header; + + // Preload file header. The chunkSize represents the complete file length. + chunkBytes = new byte[ResFileHeaderChunk.LENGTH]; + mStreamer.read(chunkBytes, 0, chunkBytes.length); + header = ChunkHeader.parseFrom(new PositionInputStream(new ByteArrayInputStream(chunkBytes))); + if (header.type != RES_TABLE_TYPE) { + return; + } + // Post load file header. + mStreamer.reset(); + chunkBytes = new byte[header.headerSize]; + cursor += mStreamer.read(chunkBytes, 0, chunkBytes.length); + arscHeader = ResFileHeaderChunk.parseFrom(new PositionInputStream(new ByteArrayInputStream(chunkBytes))); + + do { + headBytes = new byte[ChunkHeader.LENGTH]; + cursor += mStreamer.read(headBytes, 0, headBytes.length); + header = ChunkHeader.parseFrom(new PositionInputStream(new ByteArrayInputStream(headBytes))); + + // Chunk size = ChunkInfo + BodySize + chunkBytes = new byte[(int) header.chunkSize]; + System.arraycopy(headBytes, 0, chunkBytes, 0, ChunkHeader.LENGTH); + cursor += mStreamer.read(chunkBytes, ChunkHeader.LENGTH, (int) header.chunkSize - ChunkHeader.LENGTH); + //LogUtil.i(TAG, header.toRowString().replace("\n", ""), "cursor=0x" + PrintUtil.hex4(cursor)); + + switch (header.type) { + case RES_STRING_POOL_TYPE: + resStringPoolChunk = ResStringPoolChunk.parseFrom(new PositionInputStream(new ByteArrayInputStream(chunkBytes))); + break; + case RES_TABLE_PACKAGE_TYPE: + resTablePackageChunk = ResTablePackageChunk.parseFrom(new PositionInputStream(new ByteArrayInputStream(chunkBytes)), resStringPoolChunk); + break; + default: + //LogUtil.e("Unknown type: 0x" + PrintUtil.hex2(header.type)); + } + + } while (cursor < sBuf.length); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(4096); + builder.append(arscHeader).append('\n'); + builder.append(resStringPoolChunk).append('\n'); + builder.append(resTablePackageChunk).append('\n'); + return builder.toString(); + } + + public String buildPublicXml() { + return resTablePackageChunk.buildEntry2String(); + } + + public ResTableEntry getResource(int resId) { + long pkgId = (resId & 0xff000000L) >> 24; + //short packageId = (short) (resId >> 24 & 0xff); + if (resTablePackageChunk.pkgId == pkgId) { + return resTablePackageChunk.getResource(resId); + } else { + return null; + } + } + + public ResTableEntry getResourceByName(String name, int typeId) { + return resTablePackageChunk.getResourceByName(name, typeId); // don't check the pkgId, this thing only supports one anyway + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/BaseTypeChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/BaseTypeChunk.java new file mode 100644 index 00000000..049d974f --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/BaseTypeChunk.java @@ -0,0 +1,23 @@ +package com.hq.arscresourcesparser.arsc; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public abstract class BaseTypeChunk { + + public abstract String getChunkName(); + + public abstract long getEntryCount(); + + public abstract String getType(); + + public abstract int getTypeId(); + + public abstract void translateValues(ResStringPoolChunk globalStringPool, + ResStringPoolChunk typeStringPool, + ResStringPoolChunk keyStringPool); +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ChunkHeader.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ChunkHeader.java new file mode 100644 index 00000000..80adace4 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ChunkHeader.java @@ -0,0 +1,29 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ChunkHeader { + + public static final int LENGTH = 2 + 2 + 4; + public int type; + public int headerSize; + public long chunkSize; + + public static ChunkHeader parseFrom(PositionInputStream mStreamer) throws IOException { + ChunkHeader chunk = new ChunkHeader(); + chunk.type = Utils.readShort(mStreamer); + chunk.headerSize = Utils.readShort(mStreamer); + chunk.chunkSize = Utils.readInt(mStreamer); + return chunk; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResFileHeaderChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResFileHeaderChunk.java new file mode 100644 index 00000000..7ae41cf1 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResFileHeaderChunk.java @@ -0,0 +1,28 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResFileHeaderChunk { + + public static final int LENGTH = 12; + + public ChunkHeader header; + public long packageCount; + + public static ResFileHeaderChunk parseFrom(PositionInputStream mStreamer) throws IOException { + ResFileHeaderChunk chunk = new ResFileHeaderChunk(); + chunk.header = ChunkHeader.parseFrom(mStreamer); + chunk.packageCount = Utils.readInt(mStreamer); + return chunk; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolChunk.java new file mode 100644 index 00000000..65790b67 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolChunk.java @@ -0,0 +1,134 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ResStringPoolChunk { + + // If set, the string index is sorted by the string values (based on strcmp16()). + private static final int SORTED_FLAG = 1; + // String pool is encoded in UTF-8 + private static final int UTF8_FLAG = 1 << 8; + + // Header Block 0x001c + public ChunkHeader header; + // Number of style span arrays in the pool (number of uint32_t indices + // follow the string indices). + public long stringCount; + // Number of style span arrays in the pool (number of uint32_t indices + // follow the string indices). + public long styleCount; + public long flags; + // Index from header of the string data (Offset from this chunk starting). + public long stringsStart; + // Index from header of the style data. + public long stylesStart; + // Data Block + public long stringOffsetArray[]; // Offset from string pool. The first one is 0x00000000 + public long styleOffsetArray[]; + public List strings; + public List styles; + + public static ResStringPoolChunk parseFrom(PositionInputStream mStreamer) throws IOException { + long baseCursor = mStreamer.getPosition(); + + ResStringPoolChunk chunk = new ResStringPoolChunk(); + chunk.header = ChunkHeader.parseFrom(mStreamer); + chunk.stringCount = Utils.readInt(mStreamer); + chunk.styleCount = Utils.readInt(mStreamer); + chunk.flags = Utils.readInt(mStreamer); // read flag + chunk.stringsStart = Utils.readInt(mStreamer); + chunk.stylesStart = Utils.readInt(mStreamer); + + // the string index is sorted by the string values if true + boolean sorted = (chunk.flags & SORTED_FLAG) != 0; + // string use utf-8 format if true, otherwise utf-16 + boolean utf8 = (chunk.flags & UTF8_FLAG) != 0; + + long[] strOffsets = chunk.stringOffsetArray = new long[(int) chunk.stringCount]; + long[] styleOffsets = chunk.styleOffsetArray = new long[(int) chunk.styleCount]; + List strings = chunk.strings = new ArrayList<>((int) chunk.stringCount); + List styles = chunk.styles = new ArrayList<>((int) chunk.styleCount); + + // read strings offset + for (int i = 0; i < chunk.stringCount; ++i) { + strOffsets[i] = Utils.readInt(mStreamer); + } + for (int i = 0; i < chunk.styleCount; ++i) { + styleOffsets[i] = Utils.readInt(mStreamer); + } + for (int i = 0; i < chunk.stringCount; ++i) { + long start = baseCursor + chunk.stringsStart + strOffsets[i]; + mStreamer.seek(start); + //int len = (Utils.readShort(mStreamer) & 0x7f00) >> 8; + //int len = Utils.readShort(mStreamer); + /* + * Each String entry contains Length header (2 bytes to 4 bytes) + Actual String + [0x00] + * Length header sometime contain duplicate values e.g. 20 20 + * Actual string sometime contains 00, which need to be ignored + * Ending zero might be 2 byte or 4 byte + * + * TODO: Consider both Length bytes and String length > 32767 characters + */ + /* + int len =0; + byte[] buf2 = new byte[2]; + mStreamer.read(buf2); + if (buf2[0] == buf2[1]) // Its repeating, happens for Non-Manifest file. e.g. 20 20 + len = buf2[0]; + else + len = Utils.getShort(buf2); + */ + if (utf8) { + // The lengths are encoded in the same way as for the 16-bit format + // but using 8-bit rather than 16-bit integers. + int strlen = Utils.readUInt8(mStreamer); + int len = Utils.readUInt8(mStreamer); + String str = Utils.readString(mStreamer, len); + strings.add(str); + } else { + // The length is encoded as either one or two 16-bit integers as per the commentRef... + //int len = (Utils.readShort(mStreamer) & 0x7f00) >> 8; + int len = Utils.readShort(mStreamer); + String str = Utils.readString16(mStreamer, len * 2); + strings.add(str); + } + //String str = Utils.readString16(mStreamer, len); // The last byte is 0x00 + //String str = s.readNullEndString(len); // The last byte is 0x00 + } + for (int i = 0; i < chunk.styleCount; ++i) { + long start = baseCursor + chunk.stylesStart + styleOffsets[i]; + mStreamer.seek(start); + int len = (Utils.readShort(mStreamer) & 0x7f00) >> 8; + //String str = Utils.readString32(mStreamer, len); // The last byte is 0x00 + String str = Utils.readString(mStreamer, len); + styles.add(str); + } + + return chunk; + } + + public String getString(int idx) { + try{ + return strings != null && idx < strings.size() ? strings.get(idx) : null; + } catch (Exception e) { + return null; + } + } + + public String getStyle(int idx) { + return styles != null && idx < styles.size() ? styles.get(idx) : null; + } + +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolRef.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolRef.java new file mode 100644 index 00000000..d7793cf6 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResStringPoolRef.java @@ -0,0 +1,24 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResStringPoolRef { + + public long index; + + public static ResStringPoolRef parseFrom(PositionInputStream mStreamer) throws IOException { + ResStringPoolRef ref = new ResStringPoolRef(); + ref.index = Utils.readInt(mStreamer); + return ref; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableConfig.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableConfig.java new file mode 100644 index 00000000..6d0181f1 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableConfig.java @@ -0,0 +1,127 @@ +package com.hq.arscresourcesparser.arsc; + + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ResTableConfig { + + public long size; // 4 size of config object + + // union 4bytes + public int mcc, mnc; // 2 + 2 + public long imsi; // 4 + + // union 4bytes + public int language, country; // 2 + 2 + public long locale; // 4 + + // union 4bytes + public int orientation, touchScreen, density; // 1 + 1 + 2 + public long screenType; // 4 + + // union 4bytes + public int keyboard, navigation, inputFlags, inputPad0; // 1 + 1 + 1 + 1 + public long input; // 4 + + // union 4bytes + public int screenWidth, screenHeight; // 2 + 2 + public long screenSize; // 4 + + // union 4bytes + public int sdkVersion, minorVersion; // 2 + 2 + public long version; // 4 + + // union 4bytes + public int screenLayout, uiModeByte, smallestScreenWidthDp; // 1 + 1 + 2 + public long screenConfig; // 4 + + // union 4bytes + public int screenWidthDp, screenHeightDp; // 2 + 2 + public long screenSizeDp; // 4 + + public byte[] localeScript; // 4 + public byte[] localeVariant; // 8 + + public static ResTableConfig parseFrom(PositionInputStream mStreamer) throws IOException { + ResTableConfig config = new ResTableConfig(); + long cursor = mStreamer.getPosition(); + long start = cursor; + + config.size = Utils.readInt(mStreamer); + cursor += 4; + + config.mcc = Utils.readShort(mStreamer); + config.mnc = Utils.readShort(mStreamer); + mStreamer.seek(cursor); // Reset cursor to get union value. + config.imsi = Utils.readInt(mStreamer); + cursor += 4; + + config.language = Utils.readShort(mStreamer); + config.country = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.locale = Utils.readInt(mStreamer); + cursor += 4; + + config.orientation = Utils.readUInt8(mStreamer); + config.touchScreen = Utils.readUInt8(mStreamer); + config.density = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.screenType = Utils.readInt(mStreamer); + cursor += 4; + + config.keyboard = Utils.readUInt8(mStreamer); + config.navigation = Utils.readUInt8(mStreamer); + config.inputFlags = Utils.readUInt8(mStreamer); + config.inputPad0 = Utils.readUInt8(mStreamer); + mStreamer.seek(cursor); + config.input = Utils.readInt(mStreamer); + cursor += 4; + + config.screenWidth = Utils.readShort(mStreamer); + config.screenHeight = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.screenSize = Utils.readInt(mStreamer); + cursor += 4; + + config.sdkVersion = Utils.readShort(mStreamer); + config.minorVersion = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.version = Utils.readInt(mStreamer); + cursor += 4; + + config.screenLayout = Utils.readUInt8(mStreamer); + config.uiModeByte = Utils.readUInt8(mStreamer); + config.smallestScreenWidthDp = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.screenConfig = Utils.readInt(mStreamer); + cursor += 4; + + config.screenWidthDp = Utils.readShort(mStreamer); + config.screenHeightDp = Utils.readShort(mStreamer); + mStreamer.seek(cursor); + config.screenSizeDp = Utils.readInt(mStreamer); + cursor += 4; + { + byte[] buf; + buf = new byte[4]; + mStreamer.read(buf); + config.localeScript = buf; + buf = new byte[8]; + mStreamer.read(buf); + config.localeVariant = buf; + } + + mStreamer.seek(start + config.size); + + return config; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableEntry.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableEntry.java new file mode 100644 index 00000000..6f0861ee --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableEntry.java @@ -0,0 +1,51 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResTableEntry { + + // If set, this is a complex entry, holding a set of name/value. It is followed by an array of ResTableMap structures. + public static final int FLAG_COMPLEX = 0x0001; + // If set, this resource has been declared public, so libraries are allowed to reference it. + public static final int FLAG_PUBLIC = 0x0002; + + public int size; // short + public int flags; // short + public ResStringPoolRef key; // Reference into ResTablePackage::keyStrings identifying this entry. + + public int entryId; // 16bit 0x7f01nnnn + public String keyStr; + + public static ResTableEntry parseFrom(PositionInputStream mStreamer) throws IOException { + ResTableEntry entry = new ResTableEntry(); + parseFrom(mStreamer, entry); + return entry; + } + + public static void parseFrom(PositionInputStream mStreamer, ResTableEntry entry) throws IOException { + entry.size = Utils.readShort(mStreamer); + entry.flags = Utils.readShort(mStreamer); + entry.key = ResStringPoolRef.parseFrom(mStreamer); + } + + @Override + public String toString() { + return " "; + } + + public void translateValues(ResStringPoolChunk globalStringPool, + ResStringPoolChunk typeStringPool, + ResStringPoolChunk keyStringPool) { + keyStr = keyStringPool.getString((int) key.index); + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMap.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMap.java new file mode 100644 index 00000000..566ac14a --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMap.java @@ -0,0 +1,43 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResTableMap { + + // Bag resource ID + public ResTableRef name; + + // Bag resource item value + public ResValue value; + + public static ResTableMap parseFrom(PositionInputStream mStreamer) throws IOException { + ResTableMap tableMap = new ResTableMap(); + tableMap.name = ResTableRef.parseFrom(mStreamer); + tableMap.value = ResValue.parseFrom(mStreamer); + return tableMap; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(String.format("%-10s {%s}\n", "name", name.toString())); + builder.append("value:\n" + value.toString()); + return builder.toString(); + } + + public void translateValues(ResStringPoolChunk globalStringPool, + ResStringPoolChunk typeStringPool, + ResStringPoolChunk keyStringPool) { + value.translateValues(globalStringPool, typeStringPool, keyStringPool); + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMapEntry.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMapEntry.java new file mode 100644 index 00000000..c6083971 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableMapEntry.java @@ -0,0 +1,72 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +import java.util.ArrayList; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ResTableMapEntry extends ResTableEntry { + + public ResTableRef parent; // Reference parent ResTableMapEntry pkgId, if parent not exists the value should be zero. + public long count; // Num of ResTableMap following. + public ResTableMap[] resTableMaps; + + public static ResTableMapEntry parseFrom(PositionInputStream mStreamer) throws IOException { + ResTableMapEntry entry = new ResTableMapEntry(); + ResTableEntry.parseFrom(mStreamer, entry); + + entry.parent = ResTableRef.parseFrom(mStreamer); + entry.count = Utils.readInt(mStreamer); + + if(entry.count < 1) { + entry.resTableMaps = new ResTableMap[0]; + return entry; + } + + entry.resTableMaps = new ResTableMap[(int) entry.count]; + for (int i = 0; i < entry.count; ++i) { + entry.resTableMaps[i] = ResTableMap.parseFrom(mStreamer); + } + + return entry; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("|----- ResTableMapEntry printout\n"); + for(ResTableMap map : resTableMaps) { + builder.append("|- map:\n"); + builder.append(map.toString()+"\n"); + builder.append("|- end\n"); + } + builder.append("|----- end of printout\n"); + return builder.toString(); + } + + public String[] asStringArray() { + ArrayList values = new ArrayList(); + for(ResTableMap map : resTableMaps) { + values.add(map.value.toString()); + } + return values.toArray(new String[0]); + } + + @Override + public void translateValues(ResStringPoolChunk globalStringPool, + ResStringPoolChunk typeStringPool, + ResStringPoolChunk keyStringPool) { + super.translateValues(globalStringPool, typeStringPool, keyStringPool); + for (int i = 0; i < resTableMaps.length; ++i) { + resTableMaps[i].translateValues(globalStringPool, typeStringPool, keyStringPool); + } + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTablePackageChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTablePackageChunk.java new file mode 100644 index 00000000..39a0e252 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTablePackageChunk.java @@ -0,0 +1,174 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ResTablePackageChunk { + + public static final String TAG = ResTablePackageChunk.class.getSimpleName(); + + public static final int RES_TABLE_TYPE_SPEC_TYPE = 0x0202; + public static final int RES_TABLE_TYPE_TYPE = 0x0201; + + // Header Block 0x0120 + public ChunkHeader header; + public long pkgId; // 0x0000007f->UserResources 0x00000001->SystemResources + public String packageName; + public long typeStringOffset; // Offset in this chunk + public long lastPublicType; // Num of type string + public long keyStringOffset; // Offset in chunk + public long lastPublicKey; // Num of key string + + // DataBlock + public ResStringPoolChunk typeStringPool; + public ResStringPoolChunk keyStringPool; + public List typeChunks; + + // Create Index + public Map> typeInfoIndexer; + + public static ResTablePackageChunk parseFrom(PositionInputStream mStreamer, ResStringPoolChunk stringChunk) throws IOException { + ResTablePackageChunk chunk = new ResTablePackageChunk(); + chunk.header = ChunkHeader.parseFrom(mStreamer); + chunk.pkgId = Utils.readInt(mStreamer); + chunk.packageName = Utils.readString16(mStreamer, 128 * 2); + chunk.typeStringOffset = Utils.readInt(mStreamer); + chunk.lastPublicType = Utils.readInt(mStreamer); + chunk.keyStringOffset = Utils.readInt(mStreamer); + chunk.lastPublicKey = Utils.readInt(mStreamer); + + // Data Block + mStreamer.seek(chunk.typeStringOffset); + chunk.typeStringPool = ResStringPoolChunk.parseFrom(mStreamer); + mStreamer.seek(chunk.keyStringOffset); + chunk.keyStringPool = ResStringPoolChunk.parseFrom(mStreamer); + + // TableTypeSpecType TableTypeType + mStreamer.seek(chunk.keyStringOffset + chunk.keyStringPool.header.chunkSize); + chunk.typeChunks = new ArrayList<>(); + int resCount = 0; + StringBuilder logInfo = new StringBuilder(); + while (mStreamer.available() > 0) { + int x = mStreamer.available(); + logInfo.setLength(0); + resCount++; + ChunkHeader header = ChunkHeader.parseFrom(mStreamer); + + BaseTypeChunk typeChunk = null; + if (header.type == RES_TABLE_TYPE_SPEC_TYPE) { + mStreamer.seek(mStreamer.getPosition() - ChunkHeader.LENGTH); + typeChunk = ResTableTypeSpecChunk.parseFrom(mStreamer, stringChunk); + } else if (header.type == RES_TABLE_TYPE_TYPE) { + mStreamer.seek(mStreamer.getPosition() - ChunkHeader.LENGTH); + typeChunk = ResTableTypeInfoChunk.parseFrom(mStreamer, stringChunk); + } + if (typeChunk != null) { + logInfo.append(typeChunk.getChunkName()).append(" ") + .append(String.format("type=%s ", typeChunk.getType())) + .append(String.format("count=%s ", typeChunk.getEntryCount())); + } else { + logInfo.append("None TableTypeSpecType or TableTypeType!!"); + } + + if (typeChunk != null) { + chunk.typeChunks.add(typeChunk); + } + } + + chunk.createResourceIndex(); + for (int i = 0; i < chunk.typeChunks.size(); ++i) { + chunk.typeChunks.get(i).translateValues(stringChunk, chunk.typeStringPool, chunk.keyStringPool); + } + + return chunk; + } + + private void createResourceIndex() { + typeInfoIndexer = new HashMap>(); + for (BaseTypeChunk typeChunk : typeChunks) { + // The first chunk in typeList should be ResTableTypeSpecChunk + List typeList = typeInfoIndexer.get(typeChunk.getTypeId()); + if (typeList == null) { + typeList = new ArrayList(); + typeInfoIndexer.put(typeChunk.getTypeId(), typeList); + if (typeChunk.getTypeId() == 2) { + int x = 4; + } + } + typeList.add(typeChunk); + } + } + + public ResTableEntry getResource(int resId) { + int typeId = (resId & 0x00ff0000) >> 16; + //short typeIdx = (short) ((resId >> 16) & 0xff); + List typeList = typeInfoIndexer.get(typeId); // The first chunk in typeList should be ResTableTypeSpecChunk + for (int i = 1; i < typeList.size(); ++i) { + if (typeList.get(i) instanceof ResTableTypeInfoChunk) { + ResTableTypeInfoChunk x = (ResTableTypeInfoChunk) typeList.get(i); + ResTableEntry entry = ((ResTableTypeInfoChunk) typeList.get(i)).getResource(resId); + if (entry != null) { + return entry; + } + } + } + return null; + } + + public ResTableEntry getResourceByName(String name, int typeId) { + System.out.println("¯¯ in ResTablePackageChunk - getResourceByName"); + + List typeList = typeInfoIndexer.get(typeId); // The first chunk in typeList should be ResTableTypeSpecChunk + for (int i = 1; i < typeList.size(); ++i) { + if (typeList.get(i) instanceof ResTableTypeInfoChunk) { + ResTableTypeInfoChunk x = (ResTableTypeInfoChunk) typeList.get(i); + ResTableEntry entry = ((ResTableTypeInfoChunk) typeList.get(i)).getResourceByName(name); + if (entry != null) { + return entry; + } + } + } + return null; + } + + public String buildEntry2String() { + StringBuilder builder = new StringBuilder(); + builder.append("" + System.lineSeparator()); + builder.append("" + System.lineSeparator()); + + for (int i = 0; i < typeChunks.size(); ++i) { + // All entries exist in ResTableTypeInfoChunk + if (typeChunks.get(i) instanceof ResTableTypeSpecChunk) { + // Extract following ResTableTypeInfoChunks + List typeInfos = new ArrayList(); + for (int j = i + 1; j < typeChunks.size(); ++j) { + if (typeChunks.get(j) instanceof ResTableTypeInfoChunk) { + typeInfos.add((ResTableTypeInfoChunk) typeChunks.get(j)); + } else { + break; + } + } + i += typeInfos.size(); + // Unique ResTableTypeInfoChunks + String entry = ResTableTypeInfoChunk.uniqueEntries2String((int) pkgId & 0xff, typeStringPool, keyStringPool, typeInfos); + builder.append("\t" + entry + System.lineSeparator()); + } + } + + builder.append(""); + return builder.toString(); + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableRef.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableRef.java new file mode 100644 index 00000000..b65c141b --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableRef.java @@ -0,0 +1,29 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResTableRef { + + public long ident; + + public static ResTableRef parseFrom(PositionInputStream mStreamer) throws IOException { + ResTableRef ref = new ResTableRef(); + ref.ident = Utils.readInt(mStreamer); + return ref; + } + + @Override + public String toString() { + return String.format("%s: 0x%s", "ident", (ident)); + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeInfoChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeInfoChunk.java new file mode 100644 index 00000000..43564596 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeInfoChunk.java @@ -0,0 +1,180 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +import java.util.List; + +import java.lang.String; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ +public class ResTableTypeInfoChunk extends BaseTypeChunk { + + public static final long NO_ENTRY = 0xffffffffL; + + public ChunkHeader header; + public int typeId; // 1byte resource type 0x00ff0000 + public int res0; // 1byte + public int res1; // 2byte + public long entryCount; + public long entriesStart; // start of table entries. + public ResTableConfig resConfig; + + // Data Block + public long[] entryOffsets; // offset of table entries. + public ResTableEntry[] tableEntries; + + public static ResTableTypeInfoChunk parseFrom(PositionInputStream mStreamer, ResStringPoolChunk stringChunk) throws IOException { + ResTableTypeInfoChunk chunk = new ResTableTypeInfoChunk(); + long start = mStreamer.getPosition(); + chunk.header = ChunkHeader.parseFrom(mStreamer); + chunk.typeId = Utils.readUInt8(mStreamer); + chunk.res0 = Utils.readUInt8(mStreamer); + chunk.res1 = Utils.readShort(mStreamer); + chunk.entryCount = Utils.readInt(mStreamer); + chunk.entriesStart = Utils.readInt(mStreamer); + chunk.resConfig = ResTableConfig.parseFrom(mStreamer); + + System.out.println("### ResTableTypeInfoChunk with typeId: " + chunk.typeId + ", res0: " + chunk.res0 + ", res1:" + chunk.res1 + ", resConfig.density: " + chunk.resConfig.density); + + // read offsets table + chunk.entryOffsets = new long[(int) chunk.entryCount]; + for (int i = 0; i < chunk.entryCount; ++i) { + chunk.entryOffsets[i] = Utils.readInt(mStreamer); + } + // read entry + chunk.tableEntries = new ResTableEntry[(int) chunk.entryCount]; + mStreamer.seek(start + chunk.entriesStart); // Locate entry start point. + for (int i = 0; i < chunk.entryCount; ++i) { + System.out.println("### entry num: " + i); + // This is important! + if (chunk.entryOffsets[i] == NO_ENTRY || chunk.entryOffsets[i] == -1) { + System.out.println("### - empty: >"+chunk.entryOffsets[i]+"<"); + continue; + } + System.out.println("### - not empty: >"+chunk.entryOffsets[i]+"<"); + + long cursor = mStreamer.getPosition(); // Remember the start cursor + ResTableEntry entry = ResTableEntry.parseFrom(mStreamer); + + mStreamer.seek(cursor); // Rest cursor + // We need to parse entry into ResTableMapEntry instead of ResTableMapEntry + if (entry.flags == ResTableEntry.FLAG_COMPLEX) { + entry = ResTableMapEntry.parseFrom(mStreamer); // Complex ResTableMapEntry + } else { + entry = ResTableValueEntry.parseFrom(mStreamer); // ResTableEntry follows a ResValue + } + int x1 = entry.entryId; // Remember entry index in tableEntries to recover ids in public.xml + int x2 = i; + entry.entryId = i; + chunk.tableEntries[i] = entry; + } + + return chunk; + } + + @Override + public String getChunkName() { + return "ResTableTypeInfoChunk"; + } + + @Override + public long getEntryCount() { + return entryCount; + } + + @Override + public String getType() { + return String.format("0x%s", (typeId)); + } + + public int getTypeId() { + return typeId; + } + + @Override + public void translateValues(ResStringPoolChunk globalStringPool, ResStringPoolChunk typeStringPool, ResStringPoolChunk keyStringPool) { + for (ResTableEntry entry : tableEntries) { + if (entry != null) { + entry.translateValues(globalStringPool, typeStringPool, keyStringPool); + } + } + } + + public ResTableEntry getResource(int resId) { + int entryId = resId & 0x0000ffff; + for (ResTableEntry entry : tableEntries) { + if(entry == null) { + continue; + } + if (entry.entryId == entryId) { + return entry; + } + } + return null; + } + + public ResTableEntry getResourceByName(String name) { + System.out.println("¯¯ in ResTableInfoChunk - getResourceByName"); + for (ResTableEntry entry : tableEntries) { + System.out.println("¯¯ for loop start, entry: " + entry); + if(entry == null) { + System.out.println("¯¯ > entry is null, continuing"); + continue; + } + System.out.println("¯¯ entry id: " + entry.entryId); + System.out.println("¯¯ comparing ("+entry.keyStr+") vs ("+name+")"); + if (name.equals(entry.keyStr)) { + System.out.println("¯¯ got a match"); + return entry; + } + System.out.println("¯¯ will keep trying"); + } + return null; + } + + public static String uniqueEntries2String(int packageId, + ResStringPoolChunk typeStringPool, + ResStringPoolChunk keyStringPool, + List typeInfos) { + StringBuilder builder = new StringBuilder(); + + int configCount = typeInfos.size(); + int entryCount; + try { + entryCount = (int) typeInfos.get(0).entryCount; + } catch (Exception e) { + entryCount = 0; + } + + for (int i = 0; i < entryCount; ++i) { + for (int j = 0; j < configCount; ++j) { + String entryStr = typeInfos.get(j).buildEntry2String(i, packageId, typeStringPool, keyStringPool); + if (entryStr != null && entryStr.length() > 0) { + builder.append(entryStr); + break; // This entryId has done. + } + } + } + return builder.toString(); + } + + public String buildEntry2String(int entryId, int packageId, ResStringPoolChunk typeStringPool, ResStringPoolChunk keyStringPool) { + for (ResTableEntry entry : tableEntries) { + String typeStr = typeStringPool.getString(typeId - 1); // from 1 + if (entry != null) { + if (entry.entryId == entryId) { + return ("\"" + System.lineSeparator()); + } + } + } + return null; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeSpecChunk.java b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeSpecChunk.java new file mode 100644 index 00000000..98838822 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/arsc/ResTableTypeSpecChunk.java @@ -0,0 +1,62 @@ +package com.hq.arscresourcesparser.arsc; + +import com.hq.arscresourcesparser.common.Utils; +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.IOException; + +/** + * + * Created by xueqiulxq on 26/07/2017. + * + * @author bilux (i.bilux@gmail.com) + * + */ + +public class ResTableTypeSpecChunk extends BaseTypeChunk { + + public ChunkHeader header; + public int typeId; // 1byte + public int res0; // 1byte + public int res1; // 2byte + public long entryCount; + public long[] entryConfig; + + public static ResTableTypeSpecChunk parseFrom(PositionInputStream mStreamer, ResStringPoolChunk stringChunk) throws IOException { + ResTableTypeSpecChunk chunk = new ResTableTypeSpecChunk(); + chunk.header = ChunkHeader.parseFrom(mStreamer); + chunk.typeId = Utils.readUInt8(mStreamer); + chunk.res0 = Utils.readUInt8(mStreamer); + chunk.res1 = Utils.readShort(mStreamer); + chunk.entryCount = Utils.readInt(mStreamer); + chunk.entryConfig = new long[(int) chunk.entryCount]; + + for (int i=0; i", data, dataType); + break; + } + return resStr; + } + + private static String getPackage(long id) { + if (id >>> 24 == 1) { + return "android:"; + } + return ""; + } + + public static float complexToFloat(int complex) { + return (float) (complex & 0xFFFFFF00) * RADIX_MULTS[(complex>>4) & 3]; + } + + private static final float RADIX_MULTS[]={ + 0.00390625F,3.051758E-005F,1.192093E-007F,4.656613E-010F + }; + + private static final String DIMENSION_UNITS[]={ + "px","dip","sp","pt","in","mm","","" + }; + + private static final String FRACTION_UNITS[]={ + "%","%p","","","","","","" + }; + + private static String getDimenUnit(long data) { + //noinspection PointlessBitwiseExpression + switch ((int) (data >> COMPLEX_UNIT_SHIFT & COMPLEX_UNIT_MASK)) { + case COMPLEX_UNIT_PX: return "px"; + case COMPLEX_UNIT_DIP: return "dp"; + case COMPLEX_UNIT_SP: return "sp"; + case COMPLEX_UNIT_PT: return "pt"; + case COMPLEX_UNIT_IN: return "in"; + case COMPLEX_UNIT_MM: return "mm"; + default: return " (unknown unit)"; + } + } + + private static String getFractionUnit(long data) { + //noinspection PointlessBitwiseExpression + switch ((int) (data >> COMPLEX_UNIT_SHIFT & COMPLEX_UNIT_MASK)) { + case COMPLEX_UNIT_FRACTION: return "%"; + case COMPLEX_UNIT_FRACTION_PARENT: return "%p"; + default: return " (unknown unit)"; + } + } + + @Override + public String toString() { + return dataStr; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/common/Utils.java b/src/arsc_parser/com/hq/arscresourcesparser/common/Utils.java new file mode 100644 index 00000000..0bc90cc4 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/common/Utils.java @@ -0,0 +1,135 @@ +package com.hq.arscresourcesparser.common; + +import com.hq.arscresourcesparser.stream.PositionInputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +/** + * + * @author bilux (i.bilux@gmail.com) + */ + +public class Utils { + + /** + * read a char value from a byte array input stream + * + * @param mStreamer the byte array input stream + * @return the short (8-bit) value + * @throws java.io.IOException + */ + public static short readUInt8(PositionInputStream mStreamer) throws IOException { + byte[] bytes = new byte[1]; + mStreamer.read(bytes); + return getUInt8(bytes); + } + + /** + * read a short value from a byte array input stream + * + * @param mStreamer the byte array input stream + * @return the short (16-bit) value + * @throws java.io.IOException + */ + public static int readShort(PositionInputStream mStreamer) throws IOException { + byte[] bytes = new byte[2]; + mStreamer.read(bytes); + return getShort(bytes); + } + + /** + * read a int value from a byte array input stream + * + * @param mStreamer the byte array input stream + * @return the int (32-bit) value + * @throws java.io.IOException + */ + public static long readInt(PositionInputStream mStreamer) throws IOException { + byte[] bytes = new byte[4]; + mStreamer.read(bytes); + return getInt(bytes); + } + + /** + * Read and Convert Chars (16-bit) to String. Terminated by 0x00 and Padding byte 0. + * + * @param mStreamer the byte array input stream + * @param length string length + * @return + * @throws IOException + */ + public static String readString(PositionInputStream mStreamer, int length) throws IOException { + byte[] bytes = new byte[length];// The last byte is 0x00 + //mStreamer.read(bytes, 0,length); + //bytes[length] = 0; + mStreamer.read(bytes); + try { + return new String(bytes, "utf-8"); + } catch (UnsupportedEncodingException e) { + return new String(bytes); + } + } + + /** + * Read and Convert Chars (16-bit) to String. Terminated by 0x00 and Padding byte 0. + * + * @param mStreamer the byte array input stream + * @param length string length + * @return + * @throws IOException + */ + public static String readString16(PositionInputStream mStreamer, int length) throws IOException { + byte[] bytes = new byte[length]; + StringBuilder builder = new StringBuilder(); + mStreamer.read(bytes); + ByteArrayInputStream in = new ByteArrayInputStream(bytes); + byte[] buf_2 = new byte[2]; + while (in.read(buf_2) != -1) { + int code = getShort(buf_2); + if (code == 0x00) + break; // End of String + else + builder.append((char) code); + } + //builder.append((char) 0x00); // add null. + return builder.toString(); + } + + /** + * get a UInt8 value from a byte array + * + * @param bytes the byte array + * @return the short (8-bit) value + */ + public static short getUInt8(byte bytes[]) { + return (short) (bytes[0] & 0xFF); + } + + /** + * get a short value from a byte array + * + * @param bytes the byte array + * @return the short (16-bit) value + */ + public static int getShort(byte[] bytes) { + //return (short) ( ( data[1] & 0xFF << 8 ) + ( data[0] & 0xFF ) ); + return (int) (bytes[1] << 8 & 0xff00 | bytes[0] & 0xFF); + } + + /** + * get an int value from a byte array + * + * @param bytes the byte array + * @return the int (32-bit) value + */ + public static long getInt(byte[] bytes) { + return (long) bytes[3] + << 24 & 0xff000000 + | bytes[2] + << 16 & 0xff0000 + | bytes[1] + << 8 & 0xff00 + | bytes[0] & 0xFF; + } +} diff --git a/src/arsc_parser/com/hq/arscresourcesparser/stream/PositionInputStream.java b/src/arsc_parser/com/hq/arscresourcesparser/stream/PositionInputStream.java new file mode 100644 index 00000000..b2fca3d3 --- /dev/null +++ b/src/arsc_parser/com/hq/arscresourcesparser/stream/PositionInputStream.java @@ -0,0 +1,80 @@ +package com.hq.arscresourcesparser.stream; + +import java.io.FilterInputStream; +import java.io.InputStream; +import java.io.IOException; + +/** + * + * @author bilux (i.bilux@gmail.com) + */ + +public class PositionInputStream extends FilterInputStream { + protected long position = 0; + private long markedPosition = 0; + + public PositionInputStream(InputStream inputStream) { + super(inputStream); + } + public PositionInputStream(InputStream inputStream, long position) { + super(inputStream); + this.position = position; + } + + public synchronized long getPosition() { + return position; + } + + @Override + public synchronized int read() throws IOException { + int p = in.read(); + if (p != -1) + position++; + return p; + } + + @Override + public synchronized int read(byte b[]) throws IOException { + int p = in.read(b); + if (p > 0) + position += p; + return p; + } + + @Override + public synchronized int read(byte b[], int off, int len) throws IOException { + int p = in.read(b, off, len); + if (p > 0) + position += p; + return p; + } + + @Override + public synchronized long skip(long n) throws IOException { + long p = in.skip(n); + if (p > 0) + position += p; + return p; + } + + public synchronized long seek(long n) throws IOException { + in.reset(); + position=0; + long p = in.skip(n); + if (p > 0) + position += p; + return p; + } + + @Override + public synchronized void reset() throws IOException { + in.reset(); + position = markedPosition; + } + + @Override + public synchronized void mark(int readlimit) { + in.mark(readlimit); + markedPosition = position; + } +} diff --git a/src/arsc_parser/meson.build b/src/arsc_parser/meson.build new file mode 100644 index 00000000..e8bd8f15 --- /dev/null +++ b/src/arsc_parser/meson.build @@ -0,0 +1,26 @@ +hax_arsc_parser_jar = jar('hax_arsc_parser', [ + 'com/hq/arscresourcesparser/arsc/ResStringPoolRef.java', + 'com/hq/arscresourcesparser/arsc/ResTableMap.java', + 'com/hq/arscresourcesparser/arsc/ResTableTypeInfoChunk.java', + 'com/hq/arscresourcesparser/arsc/ResStringPoolChunk.java', + 'com/hq/arscresourcesparser/arsc/ResTableRef.java', + 'com/hq/arscresourcesparser/arsc/BaseTypeChunk.java', + 'com/hq/arscresourcesparser/arsc/ResTableValueEntry.java', + 'com/hq/arscresourcesparser/arsc/ResFileHeaderChunk.java', + 'com/hq/arscresourcesparser/arsc/ResValue.java', + 'com/hq/arscresourcesparser/arsc/ResTableMapEntry.java', + 'com/hq/arscresourcesparser/arsc/ResTableTypeSpecChunk.java', + 'com/hq/arscresourcesparser/arsc/ChunkHeader.java', + 'com/hq/arscresourcesparser/arsc/ArscFile.java', + 'com/hq/arscresourcesparser/arsc/ResTableEntry.java', + 'com/hq/arscresourcesparser/arsc/ResTablePackageChunk.java', + 'com/hq/arscresourcesparser/arsc/ResTableConfig.java', + 'com/hq/arscresourcesparser/ArscResourcesParser.java', + 'com/hq/arscresourcesparser/common/Utils.java', + 'com/hq/arscresourcesparser/stream/PositionInputStream.java' + ], + java_args: [ + '-bootclasspath', join_paths(dir_base, 'jars/core-libart-hostdex_classes.jar'), + '-source', '1.7', '-target', '1.7' + ]) + diff --git a/src/config.h.in b/src/config.h.in new file mode 100644 index 00000000..51ae0352 --- /dev/null +++ b/src/config.h.in @@ -0,0 +1,6 @@ +#ifndef CONFIG_H +#define CONFIG_H + +#define INSTALL_LIBDIR "@install_libdir@" + +#endif diff --git a/src/libandroid/asset_manager.c b/src/libandroid/asset_manager.c new file mode 100644 index 00000000..f867df8d --- /dev/null +++ b/src/libandroid/asset_manager.c @@ -0,0 +1,99 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +struct AAssetManager { +}; + +struct AAsset{ + int fd; +}; + +typedef int64_t off64_t; +typedef void JNIEnv; +typedef void * jobject; + +#define ASSET_DIR "data/assets/" + +struct AAsset* AAssetManager_open(struct AAssetManager *amgr, const char *file_name, int mode) +{ + char *path = malloc(strlen(file_name) + strlen(ASSET_DIR) + 1); + int fd; + + strcpy(path, ASSET_DIR); + strcat(path, file_name); + + printf("openning asset with filename: %s\n", file_name); + + printf("openning asset at path: %s\n", path); + + fd = open(path, O_CLOEXEC | O_RDWR); + if(fd < 0) { + printf("oopsie, falied to open file: %s (errno: %d)\n", file_name, errno); + return NULL; + } + + free(path); + + struct AAsset* asset = malloc(sizeof(struct AAsset)); + asset->fd = fd; + + return asset; +} + +const void * AAsset_getBuffer(struct AAsset *asset) +{ + int ret; + int err; + int fd = asset->fd; + + struct stat statbuf; + + ret = fstat(fd, &statbuf); + if(ret) + printf("oopsie, fstat failed on fd: %d with errno: %d\n", fd, errno); + + uint8_t *buffer = malloc(statbuf.st_size); + ret = pread(fd, buffer, statbuf.st_size, 0); + if(ret < 0) { + err = errno; + printf("oopsie, read failed on fd: %d with errno: %d\n", fd, err); + exit(err); + } + + return buffer; +} + +off64_t AAsset_getLength64(struct AAsset *asset) +{ + int ret; + int fd = asset->fd; + + struct stat statbuf; + + ret = fstat(fd, &statbuf); + if(ret) + printf("oopsie, fstat failed on fd: %d with errno: %d\n", fd, errno); + + return statbuf.st_size; +} + +struct AAssetManager * AAssetManager_fromJava(JNIEnv *env, jobject assetManager) +{ + return NULL; +} + +void AAsset_close(struct AAsset *asset) +{ + int fd = asset->fd; + + printf("closing asset with fd: %d\n", fd); + close(fd); + + free(asset); +} diff --git a/src/libandroid/misc.c b/src/libandroid/misc.c new file mode 100644 index 00000000..0d026e55 --- /dev/null +++ b/src/libandroid/misc.c @@ -0,0 +1,6 @@ +#include + +void android_set_abort_message(const char* msg) { + printf("android_set_abort_message called: '%s'\n", msg); +// exit(1); +} diff --git a/src/main.c b/src/main-executable/main.c similarity index 71% rename from src/main.c rename to src/main-executable/main.c index 3620fb48..5b5a7dfd 100644 --- a/src/main.c +++ b/src/main-executable/main.c @@ -1,45 +1,15 @@ #include -#include "../jni/defines.h" -#include "../jni/util.h" - -#include "../jni/org_launch_main.h" -#include "../jni/android_app_Activity.h" +#include "../api-impl-jni/defines.h" +#include "../api-impl-jni/util.h" #include +#include +#include +#include -// for getting _r_debug out of the dynamic section -// this is needed by the shim bionic linker to register stuff with gdb -#include -#include - -// the dynamic section -extern Elf64_Dyn _DYNAMIC[]; - -extern struct r_debug *_r_debug_ptr; -void init__r_debug() { -#if defined(_r_debug) -// _r_debug is defined by glibc and is declared as extern in link.h - _r_debug_ptr = &_r_debug; -#else - int i = 0; - Elf64_Dyn current; - - do { - current = _DYNAMIC[i]; - if(current.d_tag == 0x15) { - _r_debug_ptr = (struct r_debug *)current.d_un.d_ptr; - break; - } - i++; - } while(current.d_tag != 0); - - if(!_r_debug_ptr) { - fprintf(stderr, "error: no DEBUG tag in the dynamic section, treating this as fatal\n"); - exit(1); - } -#endif -} +// generated by meson +#include "config.h" GtkWidget *window; @@ -91,7 +61,7 @@ char *construct_boot_classpath(char *prefix, char **cp_array, size_t len) return result; } -JNIEnv* create_vm(char *apk_classpath) { +JNIEnv* create_vm(char *api_impl_jar, char *apk_classpath, char *microg_apk) { JavaVM* jvm; JNIEnv* env; JavaVMInitArgs args; @@ -111,19 +81,14 @@ JNIEnv* create_vm(char *apk_classpath) { }; options[0].optionString = construct_boot_classpath("-Xbootclasspath:", boot_cp_arr, ARRAY_SIZE(boot_cp_arr)); - // or this + // micorg is purposefully after the apk, so that we get the correct resources.arsc + // TODO: request resources.arsc from concrete classloader instead of taking the first one in classpath char *cp_array[] = { - ".", - "hax_arsc_parser.dex", - "hax.dex", - "%s", - "com.google.android.gms.apk", + api_impl_jar, + apk_classpath, + microg_apk, }; - char *cp_format_str = construct_classpath("-Djava.class.path=", "", cp_array, ARRAY_SIZE(cp_array)); - size_t cp_len = strlen(cp_format_str) - strlen("%s") + strlen(apk_classpath) + 1; - options[1].optionString = malloc(cp_len); - snprintf(options[1].optionString, cp_len, cp_format_str, apk_classpath); - + options[1].optionString = construct_classpath("-Djava.class.path=", "", cp_array, ARRAY_SIZE(cp_array)); options[2].optionString = "-verbose:jni"; args.options = options; @@ -138,7 +103,16 @@ JNIEnv* create_vm(char *apk_classpath) { return env; } +// this is an extern "C" function which we added to art in order to simplify calling the underlying c++ method, +// which we use to inject our JNI library into the correct classloader without having to load it from java code bool HAXX__JavaVMExt__LoadNativeLibrary(JNIEnv* env, char *path, jobject class_loader, char** error_msg); + +#define API_IMPL_JAR_PATH_LIBDIR INSTALL_LIBDIR "/java/dex/api-impl.jar" +#define API_IMPL_JAR_PATH_LOCAL "./api-impl.jar" + +#define MICROG_APK_PATH_LIBDIR INSTALL_LIBDIR "/java/dex/com.google.android.gms.apk" +#define MICROG_APK_PATH_LOCAL "./com.google.android.gms.apk" + struct jni_callback_data { char *apk_main_activity_class; uint32_t window_width; uint32_t window_height;}; static void open(GtkApplication *app, GFile** files, gint nfiles, const gchar* hint, struct jni_callback_data *d) { @@ -149,6 +123,12 @@ static void open(GtkApplication *app, GFile** files, gint nfiles, const gchar* h printf(">- [%s]\n", g_file_get_path(files[i])); } */ + char *api_impl_jar; + char *microg_apk; + int errno_libdir; + int errno_localdir; + int ret; + char *apk_classpath = g_file_get_path(files[0]); if(apk_classpath == NULL) { @@ -156,7 +136,53 @@ static void open(GtkApplication *app, GFile** files, gint nfiles, const gchar* h exit(1); } - JNIEnv* env = create_vm(apk_classpath); + struct stat dont_care; + ret = stat(API_IMPL_JAR_PATH_LOCAL, &dont_care); + errno_localdir = errno; + if(!ret) { + api_impl_jar = API_IMPL_JAR_PATH_LOCAL; + } else { + ret = stat(API_IMPL_JAR_PATH_LIBDIR, &dont_care); // for running out of builddir + errno_libdir = errno; + if(!ret) { + api_impl_jar = API_IMPL_JAR_PATH_LIBDIR; + } else { + printf("error: can't stat api-impl.jar; tried:\n" + "\t\"" API_IMPL_JAR_PATH_LOCAL "\", got - %s\n" + "\t\"" API_IMPL_JAR_PATH_LIBDIR "\", got - %s\n", + strerror(errno_localdir), strerror(errno_libdir)); + exit(1); + } + } + + ret = stat(MICROG_APK_PATH_LOCAL, &dont_care); + errno_localdir = errno; + if(!ret) { + microg_apk = MICROG_APK_PATH_LOCAL; + } else { + ret = stat(MICROG_APK_PATH_LIBDIR, &dont_care); // for running out of builddir + errno_libdir = errno; + if(!ret) { + microg_apk = MICROG_APK_PATH_LIBDIR; + } else { + printf("warning: can't stat com.google.android.gms.apk; tried:\n" + "\t\"" MICROG_APK_PATH_LOCAL "\", got - %s\n" + "\t\"" MICROG_APK_PATH_LIBDIR "\", got - %s\n", + strerror(errno_localdir), strerror(errno_libdir)); + } + } + + //FIXME + ret = stat("./data", &dont_care); + if(ret) { + printf("FIXME: the app's data dir is currently hardcoded to \"./data\" (this should arguably be fixed); can't stat \"./data\": %s\n", strerror(errno)); + printf("also FIXME: \"./data/lib/\" must exist, or we crash\n"); + printf("please note that the app's data dir currently needs special attention - it's where we read assets and apktool-preprocessed resources from\n"); + printf("do also note that any app you run will use './data' directly as it's data dir, not './data/' - this means you can't run multiple apps at once, unless the contents of their data folders happen to not conflict\n"); + exit(1); + } + + JNIEnv* env = create_vm(api_impl_jar, apk_classpath, microg_apk); if(!d->apk_main_activity_class) { printf("error: missing required option --launch-activity .\nyou can specify --help to see the list of options\n"); @@ -255,11 +281,14 @@ void init_cmd_parameters(GApplication *app, struct jni_callback_data *d) g_application_add_main_option_entries (G_APPLICATION (app), cmd_params); } +void init__r_debug(); + int main(int argc, char **argv/*, JNIEnv *env*/) { GtkApplication *app; int status; + /* this has to be done in the main executable, so might as well do it here*/ init__r_debug(); struct jni_callback_data *callback_data = malloc(sizeof(struct jni_callback_data)); diff --git a/src/main-executable/r_debug.c b/src/main-executable/r_debug.c new file mode 100644 index 00000000..5125859d --- /dev/null +++ b/src/main-executable/r_debug.c @@ -0,0 +1,36 @@ +#include +#include + +// for getting _r_debug out of the dynamic section +// this is needed by the shim bionic linker to register stuff with gdb +#include +#include + +// the dynamic section +extern Elf64_Dyn _DYNAMIC[]; + +extern struct r_debug *_r_debug_ptr; +// this has to be called from the main executable, since that's the only one guaranteed to have the debug section filled in +void init__r_debug() { +#if defined(_r_debug) +// _r_debug is defined by glibc and is declared as extern in link.h + _r_debug_ptr = &_r_debug; +#else + int i = 0; + Elf64_Dyn current; + + do { + current = _DYNAMIC[i]; + if(current.d_tag == DT_DEBUG) { + _r_debug_ptr = (struct r_debug *)current.d_un.d_ptr; + break; + } + i++; + } while(current.d_tag != 0); + + if(!_r_debug_ptr) { + fprintf(stderr, "error: no DEBUG tag in the dynamic section, treating this as fatal\n"); + exit(1); + } +#endif +}